[Fusioninventory-commit] [fusinv/fusioninventory-agent] a291e4: try to use ssl_opts on LWP<6 too
Guillaume Rousse
guillomovitch at gmail.com
Thu May 3 18:16:09 UTC 2012
Branch: refs/heads/2.3.x
Home: https://github.com/fusinv/fusioninventory-agent
Commit: a291e4d5d73c13fc8076211b004e7349cd4bbf7d
https://github.com/fusinv/fusioninventory-agent/commit/a291e4d5d73c13fc8076211b004e7349cd4bbf7d
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-11-28 (Mon, 28 Nov 2011)
Changed paths:
M lib/FusionInventory/Agent/Network.pm
Log Message:
-----------
try to use ssl_opts on LWP<6 too
previously this block was only for LWP6. For some modern
LWP5/Crypt::SSLeay also need it, I use an eval here to avoid
failure on ancient LWP::UserAgent with no ssl_opts()
closes: #1161
Reported-by: Remi Collet <fedora at famillecollet.com>
diff --git a/lib/FusionInventory/Agent/Network.pm b/lib/FusionInventory/Agent/Network.pm
index b349de5..6bc6fbf 100644
--- a/lib/FusionInventory/Agent/Network.pm
+++ b/lib/FusionInventory/Agent/Network.pm
@@ -107,8 +107,11 @@ sub createUA {
my $ua = LWP::UserAgent->new(keep_alive => 1, requests_redirectable => ['POST', 'GET', 'HEAD']);
-
- if ($LWP::VERSION >= 6) {
+ # previously this block was only for LWP6.
+ # For some modern LWP5/Crypt::SSLeay also need it, I use
+ # an eval here to avoid failure on ancient LWP::UserAgent with
+ # no ssl_opts()
+ eval {
# LWP6 default behavior is to check the SSL hostname
if ($config->{'no-ssl-check'}) {
$ua->ssl_opts(verify_hostname => 0);
@@ -119,7 +122,7 @@ sub createUA {
if ($config->{'ca-cert-dir'}) {
$ua->ssl_opts(SSL_ca_path => $config->{'ca-cert-dir'});
}
- }
+ };
if ($noProxy) {
================================================================
Commit: 5001036e8eabac54a5058306c44793df325109a2
https://github.com/fusinv/fusioninventory-agent/commit/5001036e8eabac54a5058306c44793df325109a2
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-11-28 (Mon, 28 Nov 2011)
Changed paths:
M lib/FusionInventory/Agent/Network.pm
Log Message:
-----------
improve the regex used to parse the SSL-Cert
- Drop the port from the hostname
- Use a wildcare only if there is a domain
diff --git a/lib/FusionInventory/Agent/Network.pm b/lib/FusionInventory/Agent/Network.pm
index 6bc6fbf..96d7513 100644
--- a/lib/FusionInventory/Agent/Network.pm
+++ b/lib/FusionInventory/Agent/Network.pm
@@ -362,9 +362,10 @@ sub setSslRemoteHost {
# Check server name against provided SSL certificate
if ( $self->{URI} =~ /^https:\/\/([^\/]+).*$/i ) {
my $re = $1;
+ $re =~ s/:\d+//;
# Accept SSL cert will hostname with wild-card
# http://forge.fusioninventory.org/issues/542
- $re =~ s/^([^\.]+)/($1|\\*)/;
+ $re =~ s/^([^\.]+)\.(.+)/($1|\\*)/;
# protect some characters, $re will be evaluated as a regex
$re =~ s/([\-\.])/\\$1/g;
$ua->default_header('If-SSL-Cert-Subject' => '/CN='.$re.'($|\/)');
================================================================
Commit: 8035bde109d9684dac5fd9369ce6a7a641c54f99
https://github.com/fusinv/fusioninventory-agent/commit/8035bde109d9684dac5fd9369ce6a7a641c54f99
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-11-28 (Mon, 28 Nov 2011)
Changed paths:
M t/ssl.t
Log Message:
-----------
SSL: skip some test on LWP<6
Those cases are just unsupported.
closes: #1161
Reported-by: Remi Collet <fedora at famillecollet.com>
diff --git a/t/ssl.t b/t/ssl.t
index ff8c25e..d8b384f 100644
--- a/t/ssl.t
+++ b/t/ssl.t
@@ -107,10 +107,14 @@ $server->set_dispatch({
});
$server->background();
+
+SKIP: {
+skip "Too all LWP for alternate hostname", 1 unless $LWP::VERSION >= 6;
ok(
$secure_client->send({message => $message}),
'trusted certificate, alternate hostname: connection success'
);
+}
$server->stop();
@@ -161,10 +165,14 @@ ok(
'untrusted certificate, correct hostname: connection failure'
);
+SKIP: {
+skip "Check disabled on LWP<6", 1 unless $LWP::VERSION >= 6;
+# Unless you wan to fix this
ok(
$unsafe_client->send({message => $message}),
'untrusted certificate, correct hostname, no check: connection success'
);
+}
$server->stop();
================================================================
Commit: d4ecbdd3d67397df4447b38cd0f4fba9c4a81090
https://github.com/fusinv/fusioninventory-agent/commit/d4ecbdd3d67397df4447b38cd0f4fba9c4a81090
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-05 (Mon, 05 Dec 2011)
Changed paths:
M contrib/Tarballs.pm
Log Message:
-----------
adjust the namespace
diff --git a/contrib/Tarballs.pm b/contrib/Tarballs.pm
index 85bc5e0..acfa5df 100644
--- a/contrib/Tarballs.pm
+++ b/contrib/Tarballs.pm
@@ -2,7 +2,7 @@
#
# The complete name of the package
# the path MUST be valid or the package won't be loaded
-package FusionInventory::Agent::Backend::OS::Generic::Tarballs;
+package FusionInventory::Agent::Task::Inventory::Input::Generic::Tarballs;
use strict;
# I need to declare $runAfter because of the strict mode
use vars qw($runAfter);
================================================================
Commit: eb060430483f46a5bd0ee5e7bcae29b4a2839b70
https://github.com/fusinv/fusioninventory-agent/commit/eb060430483f46a5bd0ee5e7bcae29b4a2839b70
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-08 (Thu, 08 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Printers.pm
Log Message:
-----------
Ignore false entries if no printer installed
See: https://bugs.launchpad.net/bugs/901570
Reported-by: Andreas Xenos
diff --git a/lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Printers.pm b/lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Printers.pm
index 4abfc3b..93fadf8 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Printers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Printers.pm
@@ -23,8 +23,15 @@ sub doInventory {
return(undef) unless(ref($h) eq 'HASH');
foreach my $printer (keys %$h){
- if ($printer && $printer =~ /^The printers list is empty. To add printers/) {
+ if ($printer && (
+ $printer =~ /list is empty/
+ ||
+ $printer =~ /^Status/
+ ||
+ $printer =~ /^CUPS Version/
+ ) ) {
#http://forge.fusioninventory.org/issues/169
+#https://bugs.launchpad.net/bugs/901570
next;
}
================================================================
Commit: 13886e40b234826ec771f300b324aa7f02215962
https://github.com/fusinv/fusioninventory-agent/commit/13886e40b234826ec771f300b324aa7f02215962
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-08 (Thu, 08 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Printers.pm
M t/components/client/ssl.t
Log Message:
-----------
Merge branch '2.1.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Printers.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Printers.pm
index be7859a..f1649f2 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Printers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Printers.pm
@@ -24,9 +24,16 @@ sub doInventory {
return unless ref $info eq 'HASH';
foreach my $printer (keys %$info) {
- if ($printer && $printer =~ /^The printers list is empty. To add printers/) {
+ if ($printer && (
+ $printer =~ /list is empty/
+ ||
+ $printer =~ /^Status/
+ ||
+ $printer =~ /^CUPS Version/
+ ) ) {
#http://forge.fusioninventory.org/issues/169
- next;
+#https://bugs.launchpad.net/bugs/901570
+ next;
}
$inventory->addEntry(
diff --git a/t/components/client/ssl.t b/t/components/client/ssl.t
index dbddc15..46a0b82 100755
--- a/t/components/client/ssl.t
+++ b/t/components/client/ssl.t
@@ -112,10 +112,14 @@ $server->set_dispatch({
});
$server->background();
+
+SKIP: {
+skip "Too all LWP for alternate hostname", 1 unless $LWP::VERSION >= 6;
ok(
$secure_client->request(HTTP::Request->new(GET => $url))->is_success(),
'trusted certificate, alternate hostname: connection success'
);
+}
$server->stop();
@@ -195,9 +199,13 @@ ok(
'untrusted certificate, correct hostname: connection failure'
);
+SKIP: {
+skip "Check disabled on LWP<6", 1 unless $LWP::VERSION >= 6;
+# Unless you wan to fix this
ok(
$unsafe_client->request(HTTP::Request->new(GET => $url))->is_success(),
'untrusted certificate, correct hostname, no check: connection success'
);
+}
$server->stop();
================================================================
Commit: 7ede8d4b9720d8a67d541ceeab571cca3eec06dc
https://github.com/fusinv/fusioninventory-agent/commit/7ede8d4b9720d8a67d541ceeab571cca3eec06dc
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-09 (Fri, 09 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/OS/Win32/CPU.pm
Log Message:
-----------
reverse the last changes on CPU.pm
These changes were wrongly assuming dmidecode was used to collect
the CPU like in the 2.2.x branch.
Reported-by: Anthony Facchin <anthony.facchin at shiseido-sif.eu>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/CPU.pm
index b35c437..880b3d2 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/CPU.pm
@@ -13,8 +13,6 @@ use Win32::TieRegistry (
qw/KEY_READ/
);
-our $runMeIfTheseChecksFailed = ["FusionInventory::Agent::Task::Inventory::OS::Generic::Dmidecode"];
-
use FusionInventory::Agent::Task::Inventory::OS::Win32;
use FusionInventory::Agent::Tools;
@@ -58,10 +56,7 @@ sub doInventory {
my $vmsystem;
-# http://forge.fusioninventory.org/issues/379
- my(@osver) = Win32::GetOSVersion();
- my $isWin2003 = ($osver[4] == 2 && $osver[1] == 5 && $osver[2] == 2);
-
+ my $dmidecodeCpu = getCpusFromDmidecode();
my $cpuId = 0;
foreach my $Properties (getWmiProperties('Win32_Processor', qw/
@@ -70,20 +65,14 @@ sub doInventory {
my $info = getCPUInfoFromRegistry($logger, $cpuId);
+# my $cache = $Properties->{L2CacheSize}+$Properties->{L3CacheSize};
my $core = $Properties->{NumberOfCores};
my $description = $info->{Identifier};
my $name = $info->{ProcessorNameString};
my $manufacturer = $info->{VendorIdentifier};
- my $id = $Properties->{ProcessorId};
- my $speed = $Properties->{MaxClockSpeed};
-
- # Some information are missing on Win2000
- if (!$name) {
- $name = $ENV{PROCESSOR_IDENTIFIER};
- if ($name =~ s/,\s(\S+)$//) {
- $manufacturer = $1;
- }
- }
+ my $id = $dmidecodeCpu->[$cpuId]->{ID} || $Properties->{ProcessorId};
+ my $serial = $dmidecodeCpu->[$cpuId]->{SERIAL};
+ my $speed = $dmidecodeCpu->[$cpuId]->{SPEED} || $Properties->{MaxClockSpeed};
if ($manufacturer) {
$manufacturer =~ s/Genuine//;
@@ -118,7 +107,7 @@ sub doInventory {
MANUFACTURER => $manufacturer,
SERIAL => $serial,
SPEED => $speed,
- ID => $id
+ ID => $id
});
$cpuId++;
================================================================
Commit: 8fc93566e1ff551682987f11d0af46a06108cf5e
https://github.com/fusinv/fusioninventory-agent/commit/8fc93566e1ff551682987f11d0af46a06108cf5e
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2011-12-12 (Mon, 12 Dec 2011)
Changed paths:
M README
Log Message:
-----------
document ssl issues with sha256
diff --git a/README b/README
index 7d85e08..754f87c 100644
--- a/README
+++ b/README
@@ -36,6 +36,26 @@ immediatly if IO::Socket::SSL is not available, unless certificate checking has
been explicitely disabled (--no-ssl-check command line parameter, or
no-ssl-check configuration parameter).
+The SSL protocol version supported by the agent is dependant of openssl
+version. In particular, usage of specific certificate signature algorithms such
+as SHA requires at least openssl 0.9.8o, as it is supposed to be allowed
+starting from TLS 1.1 only. Failure to comply will result in error message such
+as:
+warning: TLS library problem: 14710:error:0D0C50A1:asn1 encoding
+routines:ASN1_item_verify:unknown message digest algorithm:a_verify.c:146:
+
+This can be controlled in the certificate itself:
+[guillaume at beria ~]$ openssl x509 -noout -text -in cert.pem | grep Signature
+Signature Algorithm: sha256WithRSAEncryption
+Signature Algorithm: sha256WithRSAEncryption
+
+The available workaround:
+- ensure server certificate complies with clients capacities, using controlled
+ certificate generation parameters
+- ensure clients capacities matches server certificate properties, upgrading
+ openssl and its perl bindings (Net::SSLeay)
+- disable server certificate checking on client
+
System-specific informations
----------------------------
================================================================
Commit: 8695a9d4da58179c6295744f6eeffeb3105e4944
https://github.com/fusinv/fusioninventory-agent/commit/8695a9d4da58179c6295744f6eeffeb3105e4944
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-12 (Mon, 12 Dec 2011)
Changed paths:
M t/ssl.t
Log Message:
-----------
ignore the test if IO::Socket::SSL is not installed
https://rt.cpan.org/Ticket/Display.html?id=73164
diff --git a/t/ssl.t b/t/ssl.t
index d8b384f..1395526 100644
--- a/t/ssl.t
+++ b/t/ssl.t
@@ -10,11 +10,16 @@ use Socket;
use Test::More;
use Test::Exception;
+use UNIVERSAL::require;
use FusionInventory::Agent::Network;
use FusionInventory::Agent::XML::Query::SimpleMessage;
-use FusionInventory::Test::Server;
use FusionInventory::Logger;
+if (!IO::Socket::SSL->require()) {
+ plan skip_all => "IO::Socket::SSL required to run this test";
+}
+FusionInventory::Test::Server->require();
+
if ($OSNAME eq 'MSWin32' || $OSNAME eq 'darwin') {
plan skip_all => 'non working test on Windows and MacOS';
} else {
@@ -46,6 +51,7 @@ my $message = FusionInventory::Agent::XML::Query::SimpleMessage->new({
foo => 'bar'
}
});
+
my $unsafe_client = FusionInventory::Agent::Network->new({
logger => $logger,
target => {
@@ -89,7 +95,6 @@ ok(
$secure_client->send({message => $message}),
'trusted certificate, correct hostname: connection success'
);
-
$server->stop();
# trusted certificate, alternate hostname
================================================================
Commit: 4007addf0f593f6aa3bf675f0cc2824d2d8f4805
https://github.com/fusinv/fusioninventory-agent/commit/4007addf0f593f6aa3bf675f0cc2824d2d8f4805
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2011-12-12 (Mon, 12 Dec 2011)
Changed paths:
M t/components/client/ssl.t
A t/ssl/cnf/good-sha256.cnf
R t/ssl/crt/ca-rulezlan.pem
M t/ssl/crt/good-sha256.pem
R t/ssl/key/ca-rulezlan.pem
M t/ssl/key/good-sha256.pem
Log Message:
-----------
no need to use two different CA
diff --git a/t/components/client/ssl.t b/t/components/client/ssl.t
index 46a0b82..62ea6bc 100755
--- a/t/components/client/ssl.t
+++ b/t/components/client/ssl.t
@@ -47,7 +47,7 @@ my $secure_client = FusionInventory::Agent::HTTP::Client->new(
my $secure_sha256_client = FusionInventory::Agent::HTTP::Client->new(
logger => $logger,
- ca_cert_file => 't/ssl/crt/ca-rulezlan.pem',
+ ca_cert_file => 't/ssl/crt/ca.pem',
);
# ensure the server get stopped even if an exception is thrown
diff --git a/t/ssl/cnf/good-sha256.cnf b/t/ssl/cnf/good-sha256.cnf
new file mode 100644
index 0000000..c5d90dc
--- /dev/null
+++ b/t/ssl/cnf/good-sha256.cnf
@@ -0,0 +1,17 @@
+[ req ]
+default_bits = 2048
+default_md = sha256
+encrypt_key = no
+distinguished_name = req_dn
+req_extensions = req_ext
+prompt = no
+
+[ req_dn ]
+organizationName = fusioninventory.org
+organizationalUnitName = trusted test certificate
+commonName = localhost
+emailAddress = test at fusioninventory.org
+
+[ req_ext ]
+basicConstraints = CA:false
+subjectKeyIdentifier = hash
diff --git a/t/ssl/crt/ca-rulezlan.pem b/t/ssl/crt/ca-rulezlan.pem
deleted file mode 100644
index 8692d34..0000000
--- a/t/ssl/crt/ca-rulezlan.pem
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGIzCCBAugAwIBAgIJAINRP0U9bGFsMA0GCSqGSIb3DQEBCwUAMIHHMS4wLAYD
-VQQDEyVSdWxlemxhbiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcxMRAwDgYD
-VQQHEwdBcnJhZG9uMREwDwYDVQQIEwhCcmV0YWduZTELMAkGA1UEBhMCRlIxIjAg
-BgkqhkiG9w0BCQEWE2dvbmVyaUBydWxlemxhbi5vcmcxETAPBgNVBAoTCExhbmFm
-cmFnMSwwKgYDVQQLEyNEZXBhcnRtZW50IG9mIENvbXB1dGF0aW9uYWwgU2NpZW5j
-ZTAeFw0xMTExMjkyMTU4NTdaFw0zMTExMjQyMTU4NTdaMIHHMS4wLAYDVQQDEyVS
-dWxlemxhbiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcxMRAwDgYDVQQHEwdB
-cnJhZG9uMREwDwYDVQQIEwhCcmV0YWduZTELMAkGA1UEBhMCRlIxIjAgBgkqhkiG
-9w0BCQEWE2dvbmVyaUBydWxlemxhbi5vcmcxETAPBgNVBAoTCExhbmFmcmFnMSww
-KgYDVQQLEyNEZXBhcnRtZW50IG9mIENvbXB1dGF0aW9uYWwgU2NpZW5jZTCCAiIw
-DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK/B3StGdjU73qo9QZ4wVtFaRrPI
-tU3B16Zrz8KGY/bc5PSIi83xLzGGcz3g3W2mAI8THZHfD6qHQKkVhLR4OS10eV5Q
-knvKjN7+bFp5mUMCbCoZ9GFw6J0SdilrbYudiHLV7Y24Co9kt8ziETMFe9Xd8m+i
-Qmpz0nslGg6n4y1Z4e69SXeh/94Bg22e5htsJ3sGENIk/bQMb4h/5tvufLDmpyU1
-GvLwYWlGTPF43u0+mBdjT2cW5Dw5rXidM1jbIV1Sl+9eJ5rsL9uH31sO5mCabESS
-iRdu1zf3/ASscgxhSW23hPiDoBsLUF17n7eDOxGCnwdfwE+YRHaH7kenQbCpbFuf
-Xo8anFH7k7wLiptaMl4SVGRhyUObTILoOKji7tBkUDC4EvSuHl96A15xbXPTDucM
-PaCRZXRWFPajSNgq8X49HHsURbTRLvOeFSQQ12BhRyzb9XXpYqc4OVsPa+KMuvkm
-N4gXSWlWyQRnd0hTpOZcdTAuIQzTcdfqHiULX2Q2TjFVCTmdnjQuFq+5ar3c+DUp
-CqKs5+hYE1x0KPIsyrrBufHysE7rVxFPIFxmNVyrNTGeDJGSHDEV2dnpT/LmVo96
-my1LGg1FgLw94Odf1C47FPrDeKlWoYzDRZ2nInpMN6rlpue1bZKV49e3+5MLhP63
-Z/YuPQgxy9yOuv1bAgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEL
-BQADggIBAHnERCw+gL7dzIaaoRXE0tvVP+asmSzVgwJ0iZPOu7jd8WvQhIA+AgEY
-7RuM7Hhdd3JYiNRIXJykbFlLbI9bLwjNtxYQuAxgKbWVGCBnRb0iwlQ8nuVtGqCE
-K3uFCTXWtKQpPbtLQYHDH98dREklw/am5eH5O/eOFwHAEVyBfYRD30yKzTk3CMqF
-G8A0O+M9KIkJqG1rF0CXB3tUUlcTql/22ZLgO7kHt68nnB/N+EVUJv8mfepNQkiO
-gcSe60lJNLKpgkPkDV15MbA5c+UH1Udptf/JEFwRNQG4q/I8IId8gmiaLiTv0Q1m
-ErQzQbhGuQHUN2ACMWnajg1IHvn3cu9Onc3AOiI9nfHBMzeATH7IxGKJjTZaCZyo
-hCqFStW5C1jIR07ZrtE0oxFSHD4UNXTeYGNtb6yPKicqx3gzd4A5/KMUbbhMB6G7
-EmaPK9ssOsIqPCpgO/OLfQcT7ovAvnvYaJbRNR2u60FnctA8f4Mzisk1biG/slCN
-60oWrxgqRe/G0mWj6fkFt7Jl4t6BCTlVe7hT34xvyKuT2j2iyZdf669zT90HF2XN
-g/c3LYPCzICtrckc85Z/7lhh0kktni0Zkbg9CmsUmZk4ntiDnt9eaKEFsCF9HLNy
-AlJPXgFb7zMrtRupqjA3Tv4owmuzAa0WrD7Ofjylz/E6rp/9Stbf
------END CERTIFICATE-----
diff --git a/t/ssl/crt/good-sha256.pem b/t/ssl/crt/good-sha256.pem
index c128a6f..c27a0c0 100644
--- a/t/ssl/crt/good-sha256.pem
+++ b/t/ssl/crt/good-sha256.pem
@@ -1,117 +1,70 @@
Certificate:
Data:
- Version: 3 (0x2)
- Serial Number: 2 (0x2)
+ Version: 1 (0x0)
+ Serial Number: 7 (0x7)
Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Rulezlan Certification Authority - G1, L=Arradon, ST=Bretagne, C=FR/emailAddress=goneri at rulezlan.org, O=Lanafrag, OU=Department of Computational Science
+ Issuer: O=fusioninventory.org, OU=test certification authority, CN=test_ca/emailAddress=test at fusioninventory.org
Validity
- Not Before: Dec 2 15:23:20 2011 GMT
- Not After : Dec 1 15:23:20 2013 GMT
- Subject: CN=localhost, L=Arradon, ST=Bretagne, C=FR/emailAddress=goneri at rulezlan.org, O=Lanafrag, OU=Department of Computational Science
+ Not Before: Dec 12 18:55:04 2011 GMT
+ Not After : Dec 11 18:55:04 2013 GMT
+ Subject: O=fusioninventory.org, OU=trusted test certificate, CN=localhost/emailAddress=test at fusioninventory.org
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
- RSA Public Key: (4096 bit)
- Modulus (4096 bit):
- 00:cf:8e:f5:b2:04:77:8e:17:5e:31:b8:2f:08:37:
- 40:de:3b:a0:eb:ce:bb:c9:3b:5c:55:2b:0f:c4:a1:
- 10:4a:44:45:f8:30:42:88:76:9e:af:2c:45:cb:5e:
- 1c:d9:4b:fa:c4:15:9e:26:ab:89:f1:91:9d:ff:74:
- 4f:4c:9a:4e:0f:20:e0:db:01:0b:aa:85:78:1e:54:
- e4:61:01:06:76:b3:b7:e3:bc:5d:17:d3:69:05:bf:
- b2:2a:23:52:de:7e:40:90:9a:1c:5e:d3:54:b3:1e:
- ba:fc:1c:78:a5:51:c3:4c:c5:ed:d4:ae:25:ac:4a:
- 87:20:96:e5:b7:8f:47:3c:ee:71:bf:3a:33:19:1d:
- 9c:c1:cc:29:9f:9e:8f:7a:50:18:90:20:a9:70:eb:
- 02:d6:6a:4b:f5:62:db:e8:4d:b2:87:51:c5:29:c3:
- b5:e2:81:bd:17:8d:f3:fb:8b:11:4e:c1:c9:46:3a:
- 4d:c4:90:25:eb:0a:02:ea:a3:ec:86:6f:bf:cc:09:
- 32:2b:f3:77:e3:c1:02:38:c7:28:14:86:7e:ae:90:
- 83:37:ea:04:43:89:34:57:9d:f9:4d:bf:53:2a:ef:
- 84:35:4d:20:44:8c:96:6b:91:97:d7:2d:9a:02:7c:
- b9:6a:52:8e:5a:34:bf:ba:b9:07:34:9d:72:8b:05:
- 96:93:ca:c7:0b:5c:85:5a:c4:7a:21:a4:8d:fa:a9:
- e4:26:64:be:e8:b4:c4:cc:06:6c:0f:0c:89:5d:fc:
- 4e:fa:99:9a:0d:cd:65:7b:43:31:cf:52:67:11:48:
- e8:8b:32:0f:1a:f7:ee:ec:5c:d3:18:f0:3b:e8:ff:
- f4:d7:0a:ca:b5:64:a6:91:4c:c8:e9:9b:45:cc:ff:
- 0b:94:32:a5:49:9a:ba:52:95:82:05:82:d7:05:74:
- c9:23:72:ed:b1:77:72:82:50:bc:76:94:51:b0:59:
- 33:36:36:4e:0a:a2:2b:e7:4c:ba:b8:52:30:ae:9a:
- 79:74:de:45:34:ee:ec:21:c9:9f:fd:d1:36:5b:3d:
- 04:c3:38:04:06:b5:6a:88:5f:18:40:e3:7c:75:06:
- 4d:60:0d:78:8a:75:9e:9a:18:26:5d:50:c5:60:43:
- a5:bd:f5:44:2d:64:a5:0b:29:a1:17:c9:26:4b:12:
- cd:c4:03:a8:d8:68:e4:7a:6a:4f:a0:d1:61:25:f5:
- 4b:19:ea:a6:03:7a:55:f1:61:40:39:8c:d5:37:0e:
- 0e:3b:c6:8b:91:d2:d8:ea:3f:10:d5:66:cc:7d:e7:
- 7a:7a:3a:1e:37:29:01:0f:cc:13:a2:b1:0a:dc:11:
- 90:52:6f:57:27:83:16:37:f5:c9:23:bc:d9:35:a4:
- 00:00:2d
+ Public-Key: (2048 bit)
+ Modulus:
+ 00:b6:fb:e5:c7:2d:1a:28:a6:f2:94:c1:be:ac:f7:
+ a5:2f:63:e5:b0:db:58:3f:b7:b9:5b:4c:4d:5b:8e:
+ 23:8a:b6:71:98:c1:fc:11:0b:6b:58:3e:81:a8:d0:
+ 8d:89:ce:2f:6c:ff:8d:6c:04:b7:b8:ad:cf:b5:a4:
+ 71:05:58:bc:9c:01:a5:13:36:06:29:d3:84:61:c1:
+ 75:34:6e:fe:64:8d:67:83:31:61:05:06:00:c6:b6:
+ a0:67:11:85:dc:43:86:f0:61:c6:cc:c4:28:24:34:
+ 5b:d4:ac:23:da:35:e2:11:fe:a4:ff:84:17:8c:5a:
+ 29:28:7d:44:44:dc:72:08:4b:16:79:a1:8c:8e:24:
+ cc:dc:c4:cb:de:43:97:ac:47:b4:64:46:3c:2d:f9:
+ 41:dc:14:96:54:27:c5:f5:ee:9f:29:d9:c1:3a:5c:
+ 41:99:64:b9:72:4f:b2:7a:aa:65:3f:06:3c:dd:06:
+ 67:06:ca:33:7a:63:8c:fc:d1:9f:55:58:8b:88:36:
+ ff:4b:95:21:cf:1e:b0:88:b6:0a:1f:29:1f:d1:90:
+ e4:0e:5c:6e:45:d6:2e:c3:37:a9:a5:cb:15:01:51:
+ 3a:57:44:f3:b5:10:7e:99:4d:87:d2:3a:44:1a:83:
+ 53:9e:57:c5:03:11:a2:9e:3a:72:d5:41:4b:85:55:
+ 25:17
Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints:
- CA:FALSE
Signature Algorithm: sha256WithRSAEncryption
- 18:50:f9:86:78:13:e6:3f:3a:b2:97:e0:2e:e0:cb:3e:87:88:
- 0b:d4:a5:ed:70:e0:8a:bf:ee:04:47:54:47:97:c5:09:f4:da:
- a5:d2:f7:ed:7e:e5:61:be:ff:17:41:f3:87:66:d9:46:de:28:
- cf:64:46:34:0d:d0:55:ef:14:98:9f:8d:d6:03:78:0c:e6:a9:
- e9:10:f9:af:0c:4c:ec:d1:09:4d:93:16:7f:8e:de:66:5e:ee:
- bb:c9:fa:a0:32:0f:2d:82:32:1e:56:a6:e9:b8:b9:9a:12:3b:
- eb:9c:be:c7:5e:ca:00:78:fc:83:b9:f6:af:0f:34:3a:23:01:
- 12:ad:67:f1:23:93:62:30:c4:05:c4:d9:2a:b5:78:aa:c1:1f:
- 0c:d7:5c:95:e6:ba:e2:5c:ba:b1:a7:d2:9e:81:6e:ea:2a:0e:
- 4d:5c:dd:91:0d:de:5f:95:00:ab:9c:4e:83:9f:03:39:db:f8:
- 65:f8:b6:f3:69:cb:68:49:48:76:c3:8d:ef:db:cd:98:f4:d1:
- 56:b4:57:c9:aa:30:ea:97:f2:a4:af:35:b9:32:86:e9:fe:07:
- 28:50:ff:dd:43:ca:6a:3d:4f:d0:92:80:87:b8:56:e0:88:76:
- 7c:1a:00:60:32:91:4b:76:4a:82:ff:40:c8:25:45:74:96:27:
- 4a:21:4a:f2:29:12:43:2e:33:49:fa:59:87:55:10:56:5b:12:
- 09:9c:20:d9:dd:d3:db:17:23:db:c2:2e:47:fb:e8:6e:1c:8b:
- 5f:d2:d6:5b:9e:5d:2f:5d:dc:e9:27:3d:fd:da:47:12:9f:c0:
- f2:85:9b:ca:78:48:63:ca:42:27:80:00:8e:c6:2c:8f:1d:09:
- 08:56:58:8c:82:3b:83:c6:ee:13:cd:a7:62:3b:02:3d:37:8c:
- da:55:ae:88:d9:e2:41:ba:06:52:48:ac:42:e9:5e:83:26:fb:
- be:79:29:57:b3:d1:07:c7:ea:a5:bb:6b:e6:06:40:f3:1f:ab:
- c8:28:65:fa:2d:e8:52:7a:3a:65:b0:3a:e3:dc:85:d2:fc:a6:
- 39:a7:67:ec:60:a4:8d:4c:03:1e:ed:05:3b:f1:9d:f1:5a:82:
- cf:4b:70:96:67:e7:f7:a9:b2:3f:46:4b:1d:f8:46:4a:6b:03:
- bb:b5:0f:9e:59:d7:9f:9b:b6:6a:98:15:8c:97:46:c6:9c:a8:
- 09:4d:87:c1:45:74:05:18:ef:1d:ce:84:7c:23:b8:f7:f2:5e:
- 96:22:6d:cd:97:82:34:15:40:e7:be:79:5c:f2:24:4e:5b:b1:
- 22:1b:1e:1b:a2:54:03:ba:6d:58:5f:d5:68:6c:35:3f:98:2b:
- 49:96:85:99:cb:07:cc:a5
+ 11:37:b8:2b:61:c2:e0:e6:76:23:d6:9f:8d:61:5d:6d:d8:1f:
+ 73:d8:40:7c:25:25:e7:3e:1f:3d:04:e5:61:f5:6b:fe:c4:af:
+ cc:8d:55:b2:73:4c:66:89:25:29:c1:44:d2:3c:2c:96:7a:d4:
+ 05:ee:ff:32:ca:a6:16:ee:9f:70:b7:d1:08:0d:8f:1e:71:7c:
+ a6:0e:3d:dc:5a:08:8e:28:64:3f:4c:b2:e1:cd:5d:96:3d:ae:
+ 28:df:56:bc:a6:ce:1f:e7:d6:ef:ff:41:b3:8e:1e:1e:76:bb:
+ e7:7e:12:f8:93:35:1a:93:41:cb:81:32:6a:d0:2c:87:b6:24:
+ f8:b8:c2:a6:4d:0c:b2:f7:34:ec:9a:67:13:0b:4a:2a:12:bb:
+ c2:d3:62:14:20:08:46:bf:da:68:5d:bf:4d:fb:19:f5:1e:ea:
+ b0:a3:12:41:98:f2:f1:b5:f2:30:1b:17:9d:37:af:c2:83:08:
+ 9d:14:ef:7f:28:a0:f0:8f:ab:d7:02:bf:d7:2b:ab:7c:17:10:
+ 28:79:4e:98:01:d4:a1:bf:cf:cc:2e:84:66:74:10:23:1e:d7:
+ 31:83:11:21:96:37:76:46:04:95:1c:4c:b2:35:b0:ca:87:52:
+ 1d:72:fd:6c:4c:72:51:a9:fb:13:fb:69:87:55:be:6b:2e:fd:
+ bc:0c:2c:69
-----BEGIN CERTIFICATE-----
-MIIF/DCCA+SgAwIBAgIBAjANBgkqhkiG9w0BAQsFADCBxzEuMCwGA1UEAxMlUnVs
-ZXpsYW4gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMTEQMA4GA1UEBxMHQXJy
-YWRvbjERMA8GA1UECBMIQnJldGFnbmUxCzAJBgNVBAYTAkZSMSIwIAYJKoZIhvcN
-AQkBFhNnb25lcmlAcnVsZXpsYW4ub3JnMREwDwYDVQQKEwhMYW5hZnJhZzEsMCoG
-A1UECxMjRGVwYXJ0bWVudCBvZiBDb21wdXRhdGlvbmFsIFNjaWVuY2UwHhcNMTEx
-MjAyMTUyMzIwWhcNMTMxMjAxMTUyMzIwWjCBqzESMBAGA1UEAxMJbG9jYWxob3N0
-MRAwDgYDVQQHEwdBcnJhZG9uMREwDwYDVQQIEwhCcmV0YWduZTELMAkGA1UEBhMC
-RlIxIjAgBgkqhkiG9w0BCQEWE2dvbmVyaUBydWxlemxhbi5vcmcxETAPBgNVBAoT
-CExhbmFmcmFnMSwwKgYDVQQLEyNEZXBhcnRtZW50IG9mIENvbXB1dGF0aW9uYWwg
-U2NpZW5jZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAM+O9bIEd44X
-XjG4Lwg3QN47oOvOu8k7XFUrD8ShEEpERfgwQoh2nq8sRcteHNlL+sQVniarifGR
-nf90T0yaTg8g4NsBC6qFeB5U5GEBBnazt+O8XRfTaQW/siojUt5+QJCaHF7TVLMe
-uvwceKVRw0zF7dSuJaxKhyCW5bePRzzucb86MxkdnMHMKZ+ej3pQGJAgqXDrAtZq
-S/Vi2+hNsodRxSnDteKBvReN8/uLEU7ByUY6TcSQJesKAuqj7IZvv8wJMivzd+PB
-AjjHKBSGfq6QgzfqBEOJNFed+U2/UyrvhDVNIESMlmuRl9ctmgJ8uWpSjlo0v7q5
-BzSdcosFlpPKxwtchVrEeiGkjfqp5CZkvui0xMwGbA8MiV38TvqZmg3NZXtDMc9S
-ZxFI6IsyDxr37uxc0xjwO+j/9NcKyrVkppFMyOmbRcz/C5QypUmaulKVggWC1wV0
-ySNy7bF3coJQvHaUUbBZMzY2TgqiK+dMurhSMK6aeXTeRTTu7CHJn/3RNls9BMM4
-BAa1aohfGEDjfHUGTWANeIp1npoYJl1QxWBDpb31RC1kpQspoRfJJksSzcQDqNho
-5HpqT6DRYSX1SxnqpgN6VfFhQDmM1TcODjvGi5HS2Oo/ENVmzH3neno6HjcpAQ/M
-E6KxCtwRkFJvVyeDFjf1ySO82TWkAAAtAgMBAAGjDTALMAkGA1UdEwQCMAAwDQYJ
-KoZIhvcNAQELBQADggIBABhQ+YZ4E+Y/OrKX4C7gyz6HiAvUpe1w4Iq/7gRHVEeX
-xQn02qXS9+1+5WG+/xdB84dm2UbeKM9kRjQN0FXvFJifjdYDeAzmqekQ+a8MTOzR
-CU2TFn+O3mZe7rvJ+qAyDy2CMh5Wpum4uZoSO+ucvsdeygB4/IO59q8PNDojARKt
-Z/Ejk2IwxAXE2Sq1eKrBHwzXXJXmuuJcurGn0p6BbuoqDk1c3ZEN3l+VAKucToOf
-Aznb+GX4tvNpy2hJSHbDje/bzZj00Va0V8mqMOqX8qSvNbkyhun+ByhQ/91Dymo9
-T9CSgIe4VuCIdnwaAGAykUt2SoL/QMglRXSWJ0ohSvIpEkMuM0n6WYdVEFZbEgmc
-INnd09sXI9vCLkf76G4ci1/S1lueXS9d3OknPf3aRxKfwPKFm8p4SGPKQieAAI7G
-LI8dCQhWWIyCO4PG7hPNp2I7Aj03jNpVrojZ4kG6BlJIrELpXoMm+755KVez0QfH
-6qW7a+YGQPMfq8goZfot6FJ6OmWwOuPchdL8pjmnZ+xgpI1MAx7tBTvxnfFags9L
-cJZn5/epsj9GSx34RkprA7u1D55Z15+btmqYFYyXRsacqAlNh8FFdAUY7x3OhHwj
-uPfyXpYibc2XgjQVQOe+eVzyJE5bsSIbHhuiVAO6bVhf1WhsNT+YK0mWhZnLB8yl
+MIIDczCCAlsCAQcwDQYJKoZIhvcNAQELBQAwgYAxHDAaBgNVBAoTE2Z1c2lvbmlu
+dmVudG9yeS5vcmcxJTAjBgNVBAsTHHRlc3QgY2VydGlmaWNhdGlvbiBhdXRob3Jp
+dHkxEDAOBgNVBAMUB3Rlc3RfY2ExJzAlBgkqhkiG9w0BCQEWGHRlc3RAZnVzaW9u
+aW52ZW50b3J5Lm9yZzAeFw0xMTEyMTIxODU1MDRaFw0xMzEyMTExODU1MDRaMH4x
+HDAaBgNVBAoTE2Z1c2lvbmludmVudG9yeS5vcmcxITAfBgNVBAsTGHRydXN0ZWQg
+dGVzdCBjZXJ0aWZpY2F0ZTESMBAGA1UEAxMJbG9jYWxob3N0MScwJQYJKoZIhvcN
+AQkBFhh0ZXN0QGZ1c2lvbmludmVudG9yeS5vcmcwggEiMA0GCSqGSIb3DQEBAQUA
+A4IBDwAwggEKAoIBAQC2++XHLRoopvKUwb6s96UvY+Ww21g/t7lbTE1bjiOKtnGY
+wfwRC2tYPoGo0I2Jzi9s/41sBLe4rc+1pHEFWLycAaUTNgYp04RhwXU0bv5kjWeD
+MWEFBgDGtqBnEYXcQ4bwYcbMxCgkNFvUrCPaNeIR/qT/hBeMWikofURE3HIISxZ5
+oYyOJMzcxMveQ5esR7RkRjwt+UHcFJZUJ8X17p8p2cE6XEGZZLlyT7J6qmU/Bjzd
+BmcGyjN6Y4z80Z9VWIuINv9LlSHPHrCItgofKR/RkOQOXG5F1i7DN6mlyxUBUTpX
+RPO1EH6ZTYfSOkQag1OeV8UDEaKeOnLVQUuFVSUXAgMBAAEwDQYJKoZIhvcNAQEL
+BQADggEBABE3uCthwuDmdiPWn41hXW3YH3PYQHwlJec+Hz0E5WH1a/7Er8yNVbJz
+TGaJJSnBRNI8LJZ61AXu/zLKphbun3C30QgNjx5xfKYOPdxaCI4oZD9MsuHNXZY9
+rijfVrymzh/n1u//QbOOHh52u+d+EviTNRqTQcuBMmrQLIe2JPi4wqZNDLL3NOya
+ZxMLSioSu8LTYhQgCEa/2mhdv037GfUe6rCjEkGY8vG18jAbF503r8KDCJ0U738o
+oPCPq9cCv9crq3wXECh5TpgB1KG/z8wuhGZ0ECMe1zGDESGWN3ZGBJUcTLI1sMqH
+Uh1y/WxMclGp+xP7aYdVvmsu/bwMLGk=
-----END CERTIFICATE-----
diff --git a/t/ssl/key/ca-rulezlan.pem b/t/ssl/key/ca-rulezlan.pem
deleted file mode 100644
index 7089dd3..0000000
--- a/t/ssl/key/ca-rulezlan.pem
+++ /dev/null
@@ -1,54 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-Proc-Type: 4,ENCRYPTED
-DEK-Info: DES-EDE3-CBC,763FADE98194F731
-
-82jO0Mx5ffxKd4h7cuMCegx/GHVwKC3TcaqGyh+Xk/nqIB6af33gpRKG3BPzwQNj
-QJUlN3LQ1BgeN0Pfg1UY3hyXBnM8PYJL3XECCj5nCd9FGU3JfZPel7ufCuDoerCd
-KBSsEmAn2watdFaFNLyHxMiy5Mxxl1MdiH596eSrrzVQRtPLgEQVTZYZDnAHQXjN
-lluLmq6BTEfw01C2/rx73tOVA3AkKvE465jhHKx5PSEyoDSKkuvAn8yKOFVabCSF
-mCGANkK9JfgzQyp6Z/CryhQHLndaoUuITjRPBIxFmlh0LQv76xz55naF9+2p+353
-14s+mkfoR3cCCkh9ajMqCcMFVshMpQmJxSyAvw2ZdmkoIlLENBxvGISDKFokojp6
-5ElKfUvDORgiWcMixp6uW218v7OCRyCfIsEoiOoc6liTqPuVt4uIgnH9QqE4gQwA
-vIRlxbV65OO9CF5xkjC6UjVUrFJOsLZwts3V76a3o1sTj10DqAdq78+b9qo5Kl4H
-g9mHFPEYwCz3eXkCv4APb3nANlv7qLaaUREg7DhOw8armAWB/KN5WmBbdWJ1oaSS
-Xflr4jk3RtMyJJcuZosBxDmN0dpEZAQGbqg4CFuDw6qcq9Fj4i1lWvG1M9IHE4YA
-sMsZPZ7Mhx90qak2+o4RSZzH+C0vcgcdGh3zdTZbs2JcFVcX9rbBsXR2TH9sQSug
-UafXKNrb/MpBNME5+Cgr6epWfmywcvym79dM46O+ZI1mDwBUrMpCB/KDk62FzIUp
-EZI9s46S1vUB8/kHWgYjEVEkHV+WqeomHwZisAa0fj9kFtkzbZ60mSAd6/oQLlfT
-SXU7J0LclvezEaksw0DU2mINmbStyF9AFlC5ii+s+dHm+VCn/LjgFkrs3U7AkIXZ
-cLSHGAYRDC9dfwp912szm0YSXj60k1eeT1au4RIWPVi2DwBv+lPNNmnyR4+NhqU6
-VjPBvXrevjT51rutI1B7OgiTacMQDQ+V8viBkIxkXXFLVNqWFo49CmHoS1awJ6Ja
-YLBpFTZ/0TdMihsXhWGH0yc9f5w5TmNNUzlojXWQ9YBvcCe0+4xWSDYb5Au5+lVK
-pkzFHj5ROi/0E2pFS4QYx0z2evVqloVrM5lFnEaQ3f5zo+Xa5OQRG4TsBDae+OKV
-9QehUssRugVHCyjxSohrsVWUqYFHR6pYQOFvFOpp7p+hIKC04q0f1UnGoiWlK17O
-WYr0u71EJvVSBhou9BdaQ1RXdvXxFtyWamxtav0Z2EJGRkNdPDww43kANpWLh65F
-q9uDxRW2rzNPeagUPPpWCvZnOQrdqkdIBtyLaN/TOhtoTX16EL6ZWHRXRP5fOtBR
-9kA1L2CjpTT9X7FJZADaPqoTTWO4F9yxIT46OurMzddNYtc4TuxtSTdEEgf/9AVX
-l09AFgU2EEbakXtK2V9tJ5McDs7ZT3agVlL1m6WND1zFstjGRYOYqtL6YD8yVhbD
-vYguXm540IZ2DqIRb/SD4YTCgG1u0m2bwTZLsg8xH7LcUscQ1puciEK1brvYXmBp
-fKmWQm6EAN6jxZDoaAfxzCQjYqDTyk4urt3m0cfeyhgzbahZXQjb8kRs90WhZJMK
-9cIQWYJMtXjX2dB9fTGkfO1J7+e6AeEHtL5lfP6KF0iyl8T2EV4GJBomiV5kDOlS
-QVdwZz1yX7rHLl4aTHOh9XFsk75+CbNUNp2dzjSYZhocWNaMF/Wd+WhPe/AchXYk
-AwMBKDLPJUWg99HBttntnY+OiDEewqtsbpMmwcp9uZoF0NBnH1/1AkIXZWG+Lats
-MKKGNbAoGCFmTMuD0M+0VhfC9yJOLUdnygntv+hwa6HtAEadSqlKMzfk5VddAbEu
-KpRmsPCx9wzSj98yXfEOjb6BEhfcPc6E6U6trN0RsdkfhIxmWBOidWFaPZgkwGxe
-Xg5MtVTcKQS7BzBA1Ux067D+UCRAe9av2NCRHIoaDUATsiWTeqL8oNFzXWeFB3Ii
-ejkJTNYVHNliRpAFSnkqJeXfZG+0lLFbw+Hf2YVf345+tEn6LmP6wO9zx7Sq2uCU
-IeoInj8Ejcli46afkSPja0s3iTPQDlqVBZHng9o+02P01/2MK5GdGCN9Uf3aMEJ6
-pOhepqio7RwHjr5rw/rtumLipQZGa7h6MfUbvTtPUu91XFiwGCaPsl/ApsS6+gaw
-xU+NY59XCULYiXYJp8U7t/3hAfulTYMBlChcWxb4RRTsSRW7Q9A6mGbZv6VJtPsO
-rRWBr5evRA331j9JdCmCwWn0nSUfWFLX89dHLqsYMC3fqL6A3Nv0SEAWRoaPqO/H
-q97J19+A6kWMea9Rl23sS/OA3L69WZfytTxF5koJnjMZb+un4JRm8c7eeG+KgLKX
-N7EjCXvbHZwD2fMaHm4fb4JsmxJe3vbzUNYvtfPZ7ezECpeORdDfZurZhFsYt4Xd
-WzN07pmvqDK8q+RXnlOYHcf7gdIroQpm6wbXNSU/LyMfEcchNM+R8MxriOdg9t5N
-J4K8U3dyq6+gt5NVAWemAJzrVKbE3Fy7TZBM1Xa0lFo0Qf2g4092qQtuNaFge0xH
-8TNdBDFIpR9AoupDds3tTFhiCAqXWbGsxDIddFfdZKWqUfqrofSC9/JxHp/l+gqU
-Fjk4kwFktpHn7vtfmkgk9o1XA0NpteJHddAI4lf7YfPG1WnvLcbtHDIaic5xF8Hs
-FZ3V+zmjKMYgjeXK9FBCBW1oIwKdG6t0N/bTEOrtztsEWf4c8bgH6mx4XstJa/qF
-sx0AQwxUhvOYrXLjY24OC5Z164O34vOC1hYwE8LCdnGZPExKXtrg+fEHL7oO6yqy
-hkXjksj6nujM+wCbuwBfIrlSRQUm7wPAM4zPzN1I4ISzCsbJNei+PuT3l7n3g++p
-nm8WRcqGyIomQrZLpHuxCfXK00NJlkatbeuW0BA7aHre/sbY7XJKdqdjhtX5qzZv
-GpeRdBrwrytcbR50pNVoJS02AxivKYvCiRAhPH7wj9Btj8afg/54yWz+iaxBDGqv
-tO/fU3hpbhrO/fWzFZKcMwl+7DY2kAjZQMZYD3tBzfKuV7gjDR37u8MH41X+qCVL
-3xkmyud4T920fSyxpKZHiEhVvTyg1fX5O+d/I0Jk/4nW+Cp2v6nOdcrhsnczQ79d
------END RSA PRIVATE KEY-----
diff --git a/t/ssl/key/good-sha256.pem b/t/ssl/key/good-sha256.pem
index ec1aac5..0292542 100644
--- a/t/ssl/key/good-sha256.pem
+++ b/t/ssl/key/good-sha256.pem
@@ -1,51 +1,28 @@
------BEGIN RSA PRIVATE KEY-----
-MIIJKgIBAAKCAgEAz471sgR3jhdeMbgvCDdA3jug6867yTtcVSsPxKEQSkRF+DBC
-iHaeryxFy14c2Uv6xBWeJquJ8ZGd/3RPTJpODyDg2wELqoV4HlTkYQEGdrO347xd
-F9NpBb+yKiNS3n5AkJocXtNUsx66/Bx4pVHDTMXt1K4lrEqHIJblt49HPO5xvzoz
-GR2cwcwpn56PelAYkCCpcOsC1mpL9WLb6E2yh1HFKcO14oG9F43z+4sRTsHJRjpN
-xJAl6woC6qPshm+/zAkyK/N348ECOMcoFIZ+rpCDN+oEQ4k0V535Tb9TKu+ENU0g
-RIyWa5GX1y2aAny5alKOWjS/urkHNJ1yiwWWk8rHC1yFWsR6IaSN+qnkJmS+6LTE
-zAZsDwyJXfxO+pmaDc1le0Mxz1JnEUjoizIPGvfu7FzTGPA76P/01wrKtWSmkUzI
-6ZtFzP8LlDKlSZq6UpWCBYLXBXTJI3LtsXdyglC8dpRRsFkzNjZOCqIr50y6uFIw
-rpp5dN5FNO7sIcmf/dE2Wz0EwzgEBrVqiF8YQON8dQZNYA14inWemhgmXVDFYEOl
-vfVELWSlCymhF8kmSxLNxAOo2GjkempPoNFhJfVLGeqmA3pV8WFAOYzVNw4OO8aL
-kdLY6j8Q1WbMfed6ejoeNykBD8wTorEK3BGQUm9XJ4MWN/XJI7zZNaQAAC0CAwEA
-AQKCAgAahvLv5ZJCHspzIE8iha1MueI/QRTPCz8pw28oek1SsJcguUpHlqGBUe85
-prWZMBTEqt6jopjmvu2qkHryF2aSmGkklGWhTZ2kgsUNgMwKr7145cIgIWzyxyVG
-LW2R8iDeWlP16pyQqATN4/Wna2PClClpXTiDZKMQjzic1TsNlowDHLUbKKW4Pxey
-xtkfkM0S3pnJTL/4F23N1uy0K/n9QX4pcFH2uQ4pzIK6S3PS1QGccCcwUBwIhicJ
-RhoctHuW4DYBWASinzBhgVKmDOpz9RRQOSCCYS7HY/FQ9nryqdoD1e+h0zYGWX1G
-ixV76+TmqdZ3wPYgLzW0i8rv6a7sybQMAqOeh/Bnv9jQhNur7KBCsW1Go+MSSvcg
-VKLLTvf/o2gW70dwll2tQFSd1iqLfVaTAJTqyyl+sb++CeeAKVuDSsCNaapM0SG+
-LUuLuJOxY2GIabz8cRT8WE09dZdcoFSzOIPmzwKEsYBRQK07bwGSqNGSpubRiK/L
-4KZYVSx4SBpwHnkrtWxPpfGxkpF6mD2hHxAWTFA72gl5Euc61rmrkv3FNTrGj70x
-4HbX/Fgjh8wOaBibxEih7ubsoYAydp+3/W7jB8My7r8XK5I2ZcxAYagc6y16D30m
-YDj69m0GlazgZqo9soTAoGAksN6e3ns3jvZQ+edrpfnqm9O/IQKCAQEA7Pr5K0/O
-dmZmu3rdx5O/nUYPToq5wUfVPVpDeb0aAJEckyyY4mTZbdlEkl8cpFGzfuQfi4p6
-Q290dm0GVdfL0NsuSspvkbRk2WDQWtx2BqwoMsMBk8WSBYk2JHAvpvpK3uVUswtD
-R8D0m6aJhrWrgzD5o/FdXOwK1MoRW4NMdSwJXqPIKG/990TrTcxbm144pQbPRT3x
-GS8wJf3TGAFZ3cHoCbK18WRcB6le4D/SkKBo7go1nCjxI2lTUgUEUknWqDTyhPTj
-uFFTAzDVt0NHX8z+LbvZn5FnR0kt1cik5v1WZKATsfwV20zYwdfBax+cNdEbLbwJ
-EYPyC/2ab50hlwKCAQEA4Dd64cFe9lTHX2Y8AfjX+jOsmk7aPf+a8GTLaz79o+/M
-76fRxVfYX9bMCliWFDUpnafDjVAYrp+nS7e+zrKLK8QnZp0oTctm0dhDwAO4zQsr
-4Y58nvLxalDgbjpV9fn7jLIaYqWPdG55t9eWl/Z5hK2i+meOG8PtG8dJN2gR3ECv
-mdrxMCvPUhshsWsWYlG2xS07P+xODj/P2ZzFJ77gyqd23IGSzdanuFB3yfgePx7z
-BEHHANYYwc0eD/Oz9MvhTvnVVF27jQOO52luwXpnPq2dBN5u/edCgq9E3ZDU3QkX
-CXeYed9u6hmUuClp1v8GBd5gIhIOHvCrSnu9v85c2wKCAQEAnDMMm1S+FGKIolho
-6Exlh0ePfUiJCXHMhuUBBrPy+J6tRACoQMkSW4pS3VudqF1Fv4SjmjlLPzmufQR9
-oYVcjSx7BccK5PIPawyaKNmZXeqJkHPijUEzbzyymC/t6NSfFu339w+caCYx1Ipf
-qZADHbThRwMnc8ENnpYV/Mi9U5oUDvJLUwQGVL5zjlL9qpnfIj8rzUr3qI7m4JO+
-WNtDHZza0dGehR6OXmpv48WNh9CDeSr3jRebYajhx3URFSAgQbysgaBcnLfVzIua
-wnGxEN8wRnrEBZ40gdMlR/05XBttn2O3t6Ad0++CC7qnfXFXaE2M6YdAPvBGUUr2
-SU07vwKCAQEAy90l+YYcldTXwkHuZcygc3nwgg0YGi8B7Xl4C3cmn5w1teHctZX9
-woZG11Fcg9sij5ouD5q4Fm5LamkTMFTefVjIimByeOlr/3ingTrhGG4D4/3uCYfT
-QVtv9ElOR2yX74EwxGjMWozoVuPKpTkRnDVUbmEhsNUgDZXRWHNjaePWxglwKuBq
-jLjmla5Ml/C8QeOyb5ioEAStM6t7B3xiX2CMjkmx9T4rGUbw486ZkcLOKxyzmGsR
-74RUxSRMh1Oo9GnsMd1X3gtSL86JSZnFrhOlJPwp5uoSa0h5UQuSv7a4H3+CP62L
-54aC1j+xYC5Yh5V9yvynojIpTHveNzum6QKCAQEAvkQKmVBGKgrMN91O7IN3sWdj
-gU0wctkjHSAWBkGoV+2350AkhORLgVRLv9stFL/am+lghMU+VimzIN4+ZNeK6BFq
-0DHepLkBGgnWWm4zz/uqLOGWPCo+5yS/hIuHt7NxnZorllFGESass6nfBmNfHWa2
-dVj/uvANmPWgLpvWTE7v8CGsSHGBeS67fKg3Qy2acQ+VxxzwvSYB/TrmEmYaLpPT
-JLjAML5V8K+tAlINo8BFlo5w8w0ymvdKbOjJ8Nh4dZLI3SwFawR4qxrW3XiAHvNV
-Ihx+UO2qWbI6RGDIQj204lIcGVk6wFOmxq0f6qVSgyn2v+u9lx+wG0+XDBBbiA==
------END RSA PRIVATE KEY-----
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC2++XHLRoopvKU
+wb6s96UvY+Ww21g/t7lbTE1bjiOKtnGYwfwRC2tYPoGo0I2Jzi9s/41sBLe4rc+1
+pHEFWLycAaUTNgYp04RhwXU0bv5kjWeDMWEFBgDGtqBnEYXcQ4bwYcbMxCgkNFvU
+rCPaNeIR/qT/hBeMWikofURE3HIISxZ5oYyOJMzcxMveQ5esR7RkRjwt+UHcFJZU
+J8X17p8p2cE6XEGZZLlyT7J6qmU/BjzdBmcGyjN6Y4z80Z9VWIuINv9LlSHPHrCI
+tgofKR/RkOQOXG5F1i7DN6mlyxUBUTpXRPO1EH6ZTYfSOkQag1OeV8UDEaKeOnLV
+QUuFVSUXAgMBAAECggEAUUtAHmkPQhhJlYUt7TJolNFQ7m3EmypIkyMnCxHvAGVl
+unQURI5KNn4upI1jFGIh987hSage51FxAkX4YGO4B6dDa3GI83QhUDzekVjudEXO
+Qx7g95ZfKelhAelrCxyFCq6l37sWCl+onKeNlhhyQ4RaUZqhy50SxAZDGkTF9KCG
+SUb/zoZ67i4VUlAtstxAy6jfrnsDKSmsMu63EchhzKxwYUIBAwfvVuIjw+FacF0d
+NkfS22+n97CB4thM5Jk67DsfuEzxpbhvIKV75cmrlZOCdaybCKguULQiKARQqpzE
+1ux0jL7w5V1RwjWbhggFgDj1HJgA9aOSRBD0WawRwQKBgQDtl9Skw1CnSOL73ihg
+KGMHGVKPqGpMGrVtCYQBH9HTiSbKw/42LE1W1Jx4KdH65ctBwO1VyfTa2I6uuEWP
+tgUwZ+dmREzvdpeHXZo+FUi+HYP1c8zk8v6fQcGcPGHUoF1Z6aa9kzt/tlJg/J/f
+Zia0sL0jLnxMHTfi1+6P0DI0DwKBgQDFKQH3iO+Q+uKXMqrHgh4crQZ+14zn3J7y
+dOxXa06ZbmwEKeM2UvOzzElzBtar9cZGKsor+RwT4ZcGrvOIURbwTZdqJv/M5KAo
+s6HA5W1LYJDRZwub2M9pBbZ1RDcO8ImrSh7U4KHGMMHDM+8IEiDNI5Fe7I8raBrv
+lXlYiorWeQKBgHK/ta+ttTJV/WpvrUhjuRAgpsNDL7N54s26nsp8N7bWsqmTZx96
+3g9lt/xBFmz6tuQW7YlVdLCNjrvLu6zg2Di8tgGqUw4EVMLH7kq1tOA9GRJez0J0
+KY15EK0IbKdonC1kr2c3yLCxua+l0wDuMRtrkK2BMf8AzZD9gPZsMxL5AoGBAJxF
+MZrqvb+zK3BeJ4C0wHtIJVLaNIP+mTlhtYZgtk7kd9chAEepniIPtNPoQrTPvFUX
+S2FpNHkJoHQarUqJw126kl4ABVZ4i/1Wy8mhz2wkYQSo4UmoolUCwyjVZbKAsw3C
+VQez+GWndZzsB/TksX0HSQztAVmNTXRCjIjCXuM5AoGAAZeapd0CVHXmKfST+G81
+m8b4BHW2s+EzLQzOe1Q1H58ESTrz3woglW+WswV2jopZRUAh9WH0hLT+BLyiZMds
+YCtg0yPoT4gdQQhTAue01QoXWEE+pYomxYS1+EnFgbnDuEiAox4aKMcOwlWCYs7c
+sLY1q3YQEJ4fG1GpCXR2HPM=
+-----END PRIVATE KEY-----
================================================================
Commit: 98af15fb026b04e23be88d0b4f9698257fbac3b8
https://github.com/fusinv/fusioninventory-agent/commit/98af15fb026b04e23be88d0b4f9698257fbac3b8
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-13 (Tue, 13 Dec 2011)
Changed paths:
R t/ssl.t
A t/ssl.t.disabled
Log Message:
-----------
disable t/ssl.t
diff --git a/t/ssl.t b/t/ssl.t
deleted file mode 100644
index 1395526..0000000
--- a/t/ssl.t
+++ /dev/null
@@ -1,198 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-use lib 't';
-
-use Compress::Zlib;
-use English qw(-no_match_vars);
-use Socket;
-use Test::More;
-use Test::Exception;
-
-use UNIVERSAL::require;
-use FusionInventory::Agent::Network;
-use FusionInventory::Agent::XML::Query::SimpleMessage;
-use FusionInventory::Logger;
-
-if (!IO::Socket::SSL->require()) {
- plan skip_all => "IO::Socket::SSL required to run this test";
-}
-FusionInventory::Test::Server->require();
-
-if ($OSNAME eq 'MSWin32' || $OSNAME eq 'darwin') {
- plan skip_all => 'non working test on Windows and MacOS';
-} else {
- plan tests => 6;
-}
-
-my $ok = sub {
- my ($server, $cgi) = @_;
-
- print "HTTP/1.0 200 OK\r\n";
- print "\r\n";
- print compress("<REPLY><word>hello</word></REPLY>");
-};
-
-my $logger = FusionInventory::Logger->new({
- backends => [ 'Test' ]
-});
-
-# no connection tests
-BAIL_OUT("port aleady used") if test_port(8080);
-
-my $server;
-my $message = FusionInventory::Agent::XML::Query::SimpleMessage->new({
- logger => $logger,
- target => {
- deviceid => 'bar'
- },
- msg => {
- foo => 'bar'
- }
-});
-
-my $unsafe_client = FusionInventory::Agent::Network->new({
- logger => $logger,
- target => {
- path => 'https://localhost:8080/public'
- },
- config => {
- VERSION => 42,
- 'no-ssl-check' => 1,
- },
-});
-my $secure_client = FusionInventory::Agent::Network->new({
- logger => $logger,
- target => {
- path => 'https://localhost:8080/public'
- },
- config => {
- VERSION => 42,
- 'ca-cert-file' => 't/ssl/crt/ca.pem',
- },
-});
-
-# ensure the server get stopped even if an exception is thrown
-$SIG{__DIE__} = sub { $server->stop(); };
-
-# trusted certificate, correct hostname
-$server = FusionInventory::Test::Server->new(
- port => 8080,
- user => 'test',
- realm => 'test',
- password => 'test',
- ssl => 1,
- crt => 't/ssl/crt/good.pem',
- key => 't/ssl/key/good.pem',
-);
-$server->set_dispatch({
- '/public' => $ok,
-});
-$server->background();
-
-ok(
- $secure_client->send({message => $message}),
- 'trusted certificate, correct hostname: connection success'
-);
-$server->stop();
-
-# trusted certificate, alternate hostname
-$server = FusionInventory::Test::Server->new(
- port => 8080,
- user => 'test',
- realm => 'test',
- password => 'test',
- ssl => 1,
- crt => 't/ssl/crt/alternate.pem',
- key => 't/ssl/key/alternate.pem',
-);
-$server->set_dispatch({
- '/public' => $ok,
-});
-$server->background();
-
-
-SKIP: {
-skip "Too all LWP for alternate hostname", 1 unless $LWP::VERSION >= 6;
-ok(
- $secure_client->send({message => $message}),
- 'trusted certificate, alternate hostname: connection success'
-);
-}
-
-$server->stop();
-
-# trusted certificate, wrong hostname
-$server = FusionInventory::Test::Server->new(
- port => 8080,
- user => 'test',
- realm => 'test',
- password => 'test',
- ssl => 1,
- crt => 't/ssl/crt/wrong.pem',
- key => 't/ssl/key/wrong.pem',
-);
-$server->set_dispatch({
- '/public' => $ok,
-});
-$server->background();
-
-ok(
- !$secure_client->send({message => $message}),
- 'trusted certificate, wrong hostname: connection failure'
-);
-
-ok(
- $unsafe_client->send({message => $message}),
- 'trusted certificate, wrong hostname, no check: connection success'
-);
-
-$server->stop();
-
-# untrusted certificate, correct hostname
-$server = FusionInventory::Test::Server->new(
- port => 8080,
- user => 'test',
- realm => 'test',
- password => 'test',
- ssl => 1,
- crt => 't/ssl/crt/bad.pem',
- key => 't/ssl/key/bad.pem',
-);
-$server->set_dispatch({
- '/public' => $ok,
-});
-$server->background();
-
-ok(
- !$secure_client->send({message => $message}),
- 'untrusted certificate, correct hostname: connection failure'
-);
-
-SKIP: {
-skip "Check disabled on LWP<6", 1 unless $LWP::VERSION >= 6;
-# Unless you wan to fix this
-ok(
- $unsafe_client->send({message => $message}),
- 'untrusted certificate, correct hostname, no check: connection success'
-);
-}
-
-$server->stop();
-
-sub test_port {
- my $port = $_[0];
-
- my $iaddr = inet_aton('localhost');
- my $paddr = sockaddr_in($port, $iaddr);
- my $proto = getprotobyname('tcp');
- if (socket(my $socket, PF_INET, SOCK_STREAM, $proto)) {
- if (connect($socket, $paddr)) {
- close $socket;
- return 1;
- }
- }
-
- return 0;
-}
diff --git a/t/ssl.t.disabled b/t/ssl.t.disabled
new file mode 100644
index 0000000..1395526
--- /dev/null
+++ b/t/ssl.t.disabled
@@ -0,0 +1,198 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use lib 't';
+
+use Compress::Zlib;
+use English qw(-no_match_vars);
+use Socket;
+use Test::More;
+use Test::Exception;
+
+use UNIVERSAL::require;
+use FusionInventory::Agent::Network;
+use FusionInventory::Agent::XML::Query::SimpleMessage;
+use FusionInventory::Logger;
+
+if (!IO::Socket::SSL->require()) {
+ plan skip_all => "IO::Socket::SSL required to run this test";
+}
+FusionInventory::Test::Server->require();
+
+if ($OSNAME eq 'MSWin32' || $OSNAME eq 'darwin') {
+ plan skip_all => 'non working test on Windows and MacOS';
+} else {
+ plan tests => 6;
+}
+
+my $ok = sub {
+ my ($server, $cgi) = @_;
+
+ print "HTTP/1.0 200 OK\r\n";
+ print "\r\n";
+ print compress("<REPLY><word>hello</word></REPLY>");
+};
+
+my $logger = FusionInventory::Logger->new({
+ backends => [ 'Test' ]
+});
+
+# no connection tests
+BAIL_OUT("port aleady used") if test_port(8080);
+
+my $server;
+my $message = FusionInventory::Agent::XML::Query::SimpleMessage->new({
+ logger => $logger,
+ target => {
+ deviceid => 'bar'
+ },
+ msg => {
+ foo => 'bar'
+ }
+});
+
+my $unsafe_client = FusionInventory::Agent::Network->new({
+ logger => $logger,
+ target => {
+ path => 'https://localhost:8080/public'
+ },
+ config => {
+ VERSION => 42,
+ 'no-ssl-check' => 1,
+ },
+});
+my $secure_client = FusionInventory::Agent::Network->new({
+ logger => $logger,
+ target => {
+ path => 'https://localhost:8080/public'
+ },
+ config => {
+ VERSION => 42,
+ 'ca-cert-file' => 't/ssl/crt/ca.pem',
+ },
+});
+
+# ensure the server get stopped even if an exception is thrown
+$SIG{__DIE__} = sub { $server->stop(); };
+
+# trusted certificate, correct hostname
+$server = FusionInventory::Test::Server->new(
+ port => 8080,
+ user => 'test',
+ realm => 'test',
+ password => 'test',
+ ssl => 1,
+ crt => 't/ssl/crt/good.pem',
+ key => 't/ssl/key/good.pem',
+);
+$server->set_dispatch({
+ '/public' => $ok,
+});
+$server->background();
+
+ok(
+ $secure_client->send({message => $message}),
+ 'trusted certificate, correct hostname: connection success'
+);
+$server->stop();
+
+# trusted certificate, alternate hostname
+$server = FusionInventory::Test::Server->new(
+ port => 8080,
+ user => 'test',
+ realm => 'test',
+ password => 'test',
+ ssl => 1,
+ crt => 't/ssl/crt/alternate.pem',
+ key => 't/ssl/key/alternate.pem',
+);
+$server->set_dispatch({
+ '/public' => $ok,
+});
+$server->background();
+
+
+SKIP: {
+skip "Too all LWP for alternate hostname", 1 unless $LWP::VERSION >= 6;
+ok(
+ $secure_client->send({message => $message}),
+ 'trusted certificate, alternate hostname: connection success'
+);
+}
+
+$server->stop();
+
+# trusted certificate, wrong hostname
+$server = FusionInventory::Test::Server->new(
+ port => 8080,
+ user => 'test',
+ realm => 'test',
+ password => 'test',
+ ssl => 1,
+ crt => 't/ssl/crt/wrong.pem',
+ key => 't/ssl/key/wrong.pem',
+);
+$server->set_dispatch({
+ '/public' => $ok,
+});
+$server->background();
+
+ok(
+ !$secure_client->send({message => $message}),
+ 'trusted certificate, wrong hostname: connection failure'
+);
+
+ok(
+ $unsafe_client->send({message => $message}),
+ 'trusted certificate, wrong hostname, no check: connection success'
+);
+
+$server->stop();
+
+# untrusted certificate, correct hostname
+$server = FusionInventory::Test::Server->new(
+ port => 8080,
+ user => 'test',
+ realm => 'test',
+ password => 'test',
+ ssl => 1,
+ crt => 't/ssl/crt/bad.pem',
+ key => 't/ssl/key/bad.pem',
+);
+$server->set_dispatch({
+ '/public' => $ok,
+});
+$server->background();
+
+ok(
+ !$secure_client->send({message => $message}),
+ 'untrusted certificate, correct hostname: connection failure'
+);
+
+SKIP: {
+skip "Check disabled on LWP<6", 1 unless $LWP::VERSION >= 6;
+# Unless you wan to fix this
+ok(
+ $unsafe_client->send({message => $message}),
+ 'untrusted certificate, correct hostname, no check: connection success'
+);
+}
+
+$server->stop();
+
+sub test_port {
+ my $port = $_[0];
+
+ my $iaddr = inet_aton('localhost');
+ my $paddr = sockaddr_in($port, $iaddr);
+ my $proto = getprotobyname('tcp');
+ if (socket(my $socket, PF_INET, SOCK_STREAM, $proto)) {
+ if (connect($socket, $paddr)) {
+ close $socket;
+ return 1;
+ }
+ }
+
+ return 0;
+}
================================================================
Commit: b59a090968f2904b3c2c78ae0e214cd4f779fd9d
https://github.com/fusinv/fusioninventory-agent/commit/b59a090968f2904b3c2c78ae0e214cd4f779fd9d
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-14 (Wed, 14 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Bios.pm
Log Message:
-----------
VMware System incorrectly detected
closes: #1391
Reported-by: Mario Gzuk <mariogzuk at technikz.de>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Bios.pm
index 9fb1481..f153039 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Bios.pm
@@ -130,6 +130,10 @@ sub doInventory {
if ($bversion eq 'VirtualBox' || $mmodel eq 'VirtualBox') {
$vmsystem = 'VirtualBox';
+ } elsif ($smodel =~ /VMware/i) {
+ $vmsystem = 'VMware';
+ } elsif ($biosSerial =~ /VMware/i) {
+ $vmsystem = 'VMware';
}
if ($vmsystem) {
================================================================
Commit: b3bffb12ce916bbc35b529bc58362a88f90a0ebd
https://github.com/fusinv/fusioninventory-agent/commit/b3bffb12ce916bbc35b529bc58362a88f90a0ebd
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-14 (Wed, 14 Dec 2011)
Changed paths:
M Changes
M lib/FusionInventory/Agent.pm
Log Message:
-----------
prepare 2.1.13 release
diff --git a/Changes b/Changes
index 0530ee3..5a53b41 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,21 @@
Revision history for FusionInventory::Agent
+2.1.12 Wed, 14 Dec 2011 13:06:44 +0100
+
+TEST-SUITE
+ ✔ 2.1.10 Test suite fails
+ commit:8035bd
+ http://forge.fusioninventory.org/issues/1161
+ thanks: Remi Collet
+
+WINDOWS
+ ✔ VM System incorrect
+ commit:b59a09
+ http://forge.fusioninventory.org/issues/1391
+ thanks: Mario Gzuk
+ ✔ Fix the CPU detection on Windows
+ thanks: Anthony Facchin
+
2.1.12 Wed, 23 Nov 2011 18:14:52 +0100
GENERIC
diff --git a/lib/FusionInventory/Agent.pm b/lib/FusionInventory/Agent.pm
index 2724601..af2b9ee 100644
--- a/lib/FusionInventory/Agent.pm
+++ b/lib/FusionInventory/Agent.pm
@@ -11,7 +11,7 @@ use File::Path;
use XML::Simple;
use Sys::Hostname;
-our $VERSION = '2.1.12';
+our $VERSION = '2.1.13';
$ENV{LC_ALL} = 'C'; # Turn off localised output for commands
$ENV{LANG} = 'C'; # Turn off localised output for commands
================================================================
Commit: 67456df9d93027c781262198ef4e0d9ab9983735
https://github.com/fusinv/fusioninventory-agent/commit/67456df9d93027c781262198ef4e0d9ab9983735
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-15 (Thu, 15 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Networks.pm
Log Message:
-----------
Ethernet Type not detected on Windows
closes: #1393
Reported-by: Mario Gzuk <mariogzuk at technikz.de>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Networks.pm
index 0974c03..97b7c69 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Networks.pm
@@ -109,6 +109,9 @@ sub doInventory {
$netifs[$idx]{macaddr} = $nic->MACAddress;
$netifs[$idx]{speed} = $nic->Speed;
$netifs[$idx]{pnpdeviceid} = $nic->PNPDeviceID;
+ $netifs[$idx]{type} = $nic->AdapterType;
+
+ $netifs[$idx]{type} =~ s/Ethernet.*/Ethernet/ if $netifs[$idx]{type};
}
foreach my $netif (@netifs) {
================================================================
Commit: fd780274b2a0ca2b9466d48643836467ec51f3b3
https://github.com/fusinv/fusioninventory-agent/commit/fd780274b2a0ca2b9466d48643836467ec51f3b3
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-15 (Thu, 15 Dec 2011)
Changed paths:
M Changes
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
Log Message:
-----------
Merge branch '2.1.x' into 2.2.x
diff --git a/Changes b/Changes
index effd112..1a8eec8 100644
--- a/Changes
+++ b/Changes
@@ -56,6 +56,22 @@ Minor changes:
* Linux: Use /sbin/ip to get the interface IP addresses (#854)
* HPUX: don't report unoccupied memory slots
+2.1.12 Wed, 14 Dec 2011 13:06:44 +0100
+
+TEST-SUITE
+ ✔ 2.1.10 Test suite fails
+ commit:8035bd
+ http://forge.fusioninventory.org/issues/1161
+ thanks: Remi Collet
+
+WINDOWS
+ ✔ VM System incorrect
+ commit:b59a09
+ http://forge.fusioninventory.org/issues/1391
+ thanks: Mario Gzuk
+ ✔ Fix the CPU detection on Windows
+ thanks: Anthony Facchin
+
2.1.12 Wed, 23 Nov 2011 18:14:52 +0100
GENERIC
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
index a4575b4..ee0ad7c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
@@ -92,7 +92,16 @@ sub doInventory {
$inventory->setHardware ({
VMSYSTEM => 'VirtualBox'
});
+ } elsif (
+ ($bios->{BIOSSERIAL} && ($bios->{BIOSSERIAL} =~ /VMware/i))
+ ||
+ ($bios->{SMODEL} && ($bios->{SMODEL} eq 'VirtualBox'))
+ ) {
+ $inventory->setHardware ({
+ VMSYSTEM => 'VMware'
+ });
}
+
}
1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index 0fba5f9..c9e9acd 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -102,6 +102,12 @@ sub doInventory {
} else {
$interface->{VIRTUALDEV} = $nic->PNPDeviceID =~ /^ROOT/ ? 1 : 0;
}
+
+ if (defined $nic->AdapterType) {
+ $interface->{TYPE} = $nic->AdapterType;
+ $interface->{TYPE} =~ s/Ethernet.*/Ethernet/;
+ }
+
}
foreach my $interface (@interfaces) {
================================================================
Commit: 78faf6852eb7715a7f05b7ab5e0046f10ddc4bb6
https://github.com/fusinv/fusioninventory-agent/commit/78faf6852eb7715a7f05b7ab5e0046f10ddc4bb6
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-15 (Thu, 15 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
Log Message:
-----------
win32: drop the trailing spaces
see: #1397
Reported-by: David Durieux <d.durieux at siprossii.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
index ee0ad7c..2dca55b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
@@ -82,6 +82,8 @@ sub doInventory {
}
+ $bios->{$_} =~ s/\s+$// foreach (keys %bios);
+
$inventory->setBios($bios);
if (
================================================================
Commit: 25670a6179d596269c8a00838d8802bae7ec7b90
https://github.com/fusinv/fusioninventory-agent/commit/25670a6179d596269c8a00838d8802bae7ec7b90
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-15 (Thu, 15 Dec 2011)
Changed paths:
M t/components/client/ssl.t
A t/ssl/cnf/good-sha256.cnf
R t/ssl/crt/ca-rulezlan.pem
M t/ssl/crt/good-sha256.pem
R t/ssl/key/ca-rulezlan.pem
M t/ssl/key/good-sha256.pem
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/t/components/client/ssl.t b/t/components/client/ssl.t
index 46a0b82..62ea6bc 100755
--- a/t/components/client/ssl.t
+++ b/t/components/client/ssl.t
@@ -47,7 +47,7 @@ my $secure_client = FusionInventory::Agent::HTTP::Client->new(
my $secure_sha256_client = FusionInventory::Agent::HTTP::Client->new(
logger => $logger,
- ca_cert_file => 't/ssl/crt/ca-rulezlan.pem',
+ ca_cert_file => 't/ssl/crt/ca.pem',
);
# ensure the server get stopped even if an exception is thrown
diff --git a/t/ssl/cnf/good-sha256.cnf b/t/ssl/cnf/good-sha256.cnf
new file mode 100644
index 0000000..c5d90dc
--- /dev/null
+++ b/t/ssl/cnf/good-sha256.cnf
@@ -0,0 +1,17 @@
+[ req ]
+default_bits = 2048
+default_md = sha256
+encrypt_key = no
+distinguished_name = req_dn
+req_extensions = req_ext
+prompt = no
+
+[ req_dn ]
+organizationName = fusioninventory.org
+organizationalUnitName = trusted test certificate
+commonName = localhost
+emailAddress = test at fusioninventory.org
+
+[ req_ext ]
+basicConstraints = CA:false
+subjectKeyIdentifier = hash
diff --git a/t/ssl/crt/ca-rulezlan.pem b/t/ssl/crt/ca-rulezlan.pem
deleted file mode 100644
index 8692d34..0000000
--- a/t/ssl/crt/ca-rulezlan.pem
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGIzCCBAugAwIBAgIJAINRP0U9bGFsMA0GCSqGSIb3DQEBCwUAMIHHMS4wLAYD
-VQQDEyVSdWxlemxhbiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcxMRAwDgYD
-VQQHEwdBcnJhZG9uMREwDwYDVQQIEwhCcmV0YWduZTELMAkGA1UEBhMCRlIxIjAg
-BgkqhkiG9w0BCQEWE2dvbmVyaUBydWxlemxhbi5vcmcxETAPBgNVBAoTCExhbmFm
-cmFnMSwwKgYDVQQLEyNEZXBhcnRtZW50IG9mIENvbXB1dGF0aW9uYWwgU2NpZW5j
-ZTAeFw0xMTExMjkyMTU4NTdaFw0zMTExMjQyMTU4NTdaMIHHMS4wLAYDVQQDEyVS
-dWxlemxhbiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcxMRAwDgYDVQQHEwdB
-cnJhZG9uMREwDwYDVQQIEwhCcmV0YWduZTELMAkGA1UEBhMCRlIxIjAgBgkqhkiG
-9w0BCQEWE2dvbmVyaUBydWxlemxhbi5vcmcxETAPBgNVBAoTCExhbmFmcmFnMSww
-KgYDVQQLEyNEZXBhcnRtZW50IG9mIENvbXB1dGF0aW9uYWwgU2NpZW5jZTCCAiIw
-DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK/B3StGdjU73qo9QZ4wVtFaRrPI
-tU3B16Zrz8KGY/bc5PSIi83xLzGGcz3g3W2mAI8THZHfD6qHQKkVhLR4OS10eV5Q
-knvKjN7+bFp5mUMCbCoZ9GFw6J0SdilrbYudiHLV7Y24Co9kt8ziETMFe9Xd8m+i
-Qmpz0nslGg6n4y1Z4e69SXeh/94Bg22e5htsJ3sGENIk/bQMb4h/5tvufLDmpyU1
-GvLwYWlGTPF43u0+mBdjT2cW5Dw5rXidM1jbIV1Sl+9eJ5rsL9uH31sO5mCabESS
-iRdu1zf3/ASscgxhSW23hPiDoBsLUF17n7eDOxGCnwdfwE+YRHaH7kenQbCpbFuf
-Xo8anFH7k7wLiptaMl4SVGRhyUObTILoOKji7tBkUDC4EvSuHl96A15xbXPTDucM
-PaCRZXRWFPajSNgq8X49HHsURbTRLvOeFSQQ12BhRyzb9XXpYqc4OVsPa+KMuvkm
-N4gXSWlWyQRnd0hTpOZcdTAuIQzTcdfqHiULX2Q2TjFVCTmdnjQuFq+5ar3c+DUp
-CqKs5+hYE1x0KPIsyrrBufHysE7rVxFPIFxmNVyrNTGeDJGSHDEV2dnpT/LmVo96
-my1LGg1FgLw94Odf1C47FPrDeKlWoYzDRZ2nInpMN6rlpue1bZKV49e3+5MLhP63
-Z/YuPQgxy9yOuv1bAgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEL
-BQADggIBAHnERCw+gL7dzIaaoRXE0tvVP+asmSzVgwJ0iZPOu7jd8WvQhIA+AgEY
-7RuM7Hhdd3JYiNRIXJykbFlLbI9bLwjNtxYQuAxgKbWVGCBnRb0iwlQ8nuVtGqCE
-K3uFCTXWtKQpPbtLQYHDH98dREklw/am5eH5O/eOFwHAEVyBfYRD30yKzTk3CMqF
-G8A0O+M9KIkJqG1rF0CXB3tUUlcTql/22ZLgO7kHt68nnB/N+EVUJv8mfepNQkiO
-gcSe60lJNLKpgkPkDV15MbA5c+UH1Udptf/JEFwRNQG4q/I8IId8gmiaLiTv0Q1m
-ErQzQbhGuQHUN2ACMWnajg1IHvn3cu9Onc3AOiI9nfHBMzeATH7IxGKJjTZaCZyo
-hCqFStW5C1jIR07ZrtE0oxFSHD4UNXTeYGNtb6yPKicqx3gzd4A5/KMUbbhMB6G7
-EmaPK9ssOsIqPCpgO/OLfQcT7ovAvnvYaJbRNR2u60FnctA8f4Mzisk1biG/slCN
-60oWrxgqRe/G0mWj6fkFt7Jl4t6BCTlVe7hT34xvyKuT2j2iyZdf669zT90HF2XN
-g/c3LYPCzICtrckc85Z/7lhh0kktni0Zkbg9CmsUmZk4ntiDnt9eaKEFsCF9HLNy
-AlJPXgFb7zMrtRupqjA3Tv4owmuzAa0WrD7Ofjylz/E6rp/9Stbf
------END CERTIFICATE-----
diff --git a/t/ssl/crt/good-sha256.pem b/t/ssl/crt/good-sha256.pem
index c128a6f..c27a0c0 100644
--- a/t/ssl/crt/good-sha256.pem
+++ b/t/ssl/crt/good-sha256.pem
@@ -1,117 +1,70 @@
Certificate:
Data:
- Version: 3 (0x2)
- Serial Number: 2 (0x2)
+ Version: 1 (0x0)
+ Serial Number: 7 (0x7)
Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Rulezlan Certification Authority - G1, L=Arradon, ST=Bretagne, C=FR/emailAddress=goneri at rulezlan.org, O=Lanafrag, OU=Department of Computational Science
+ Issuer: O=fusioninventory.org, OU=test certification authority, CN=test_ca/emailAddress=test at fusioninventory.org
Validity
- Not Before: Dec 2 15:23:20 2011 GMT
- Not After : Dec 1 15:23:20 2013 GMT
- Subject: CN=localhost, L=Arradon, ST=Bretagne, C=FR/emailAddress=goneri at rulezlan.org, O=Lanafrag, OU=Department of Computational Science
+ Not Before: Dec 12 18:55:04 2011 GMT
+ Not After : Dec 11 18:55:04 2013 GMT
+ Subject: O=fusioninventory.org, OU=trusted test certificate, CN=localhost/emailAddress=test at fusioninventory.org
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
- RSA Public Key: (4096 bit)
- Modulus (4096 bit):
- 00:cf:8e:f5:b2:04:77:8e:17:5e:31:b8:2f:08:37:
- 40:de:3b:a0:eb:ce:bb:c9:3b:5c:55:2b:0f:c4:a1:
- 10:4a:44:45:f8:30:42:88:76:9e:af:2c:45:cb:5e:
- 1c:d9:4b:fa:c4:15:9e:26:ab:89:f1:91:9d:ff:74:
- 4f:4c:9a:4e:0f:20:e0:db:01:0b:aa:85:78:1e:54:
- e4:61:01:06:76:b3:b7:e3:bc:5d:17:d3:69:05:bf:
- b2:2a:23:52:de:7e:40:90:9a:1c:5e:d3:54:b3:1e:
- ba:fc:1c:78:a5:51:c3:4c:c5:ed:d4:ae:25:ac:4a:
- 87:20:96:e5:b7:8f:47:3c:ee:71:bf:3a:33:19:1d:
- 9c:c1:cc:29:9f:9e:8f:7a:50:18:90:20:a9:70:eb:
- 02:d6:6a:4b:f5:62:db:e8:4d:b2:87:51:c5:29:c3:
- b5:e2:81:bd:17:8d:f3:fb:8b:11:4e:c1:c9:46:3a:
- 4d:c4:90:25:eb:0a:02:ea:a3:ec:86:6f:bf:cc:09:
- 32:2b:f3:77:e3:c1:02:38:c7:28:14:86:7e:ae:90:
- 83:37:ea:04:43:89:34:57:9d:f9:4d:bf:53:2a:ef:
- 84:35:4d:20:44:8c:96:6b:91:97:d7:2d:9a:02:7c:
- b9:6a:52:8e:5a:34:bf:ba:b9:07:34:9d:72:8b:05:
- 96:93:ca:c7:0b:5c:85:5a:c4:7a:21:a4:8d:fa:a9:
- e4:26:64:be:e8:b4:c4:cc:06:6c:0f:0c:89:5d:fc:
- 4e:fa:99:9a:0d:cd:65:7b:43:31:cf:52:67:11:48:
- e8:8b:32:0f:1a:f7:ee:ec:5c:d3:18:f0:3b:e8:ff:
- f4:d7:0a:ca:b5:64:a6:91:4c:c8:e9:9b:45:cc:ff:
- 0b:94:32:a5:49:9a:ba:52:95:82:05:82:d7:05:74:
- c9:23:72:ed:b1:77:72:82:50:bc:76:94:51:b0:59:
- 33:36:36:4e:0a:a2:2b:e7:4c:ba:b8:52:30:ae:9a:
- 79:74:de:45:34:ee:ec:21:c9:9f:fd:d1:36:5b:3d:
- 04:c3:38:04:06:b5:6a:88:5f:18:40:e3:7c:75:06:
- 4d:60:0d:78:8a:75:9e:9a:18:26:5d:50:c5:60:43:
- a5:bd:f5:44:2d:64:a5:0b:29:a1:17:c9:26:4b:12:
- cd:c4:03:a8:d8:68:e4:7a:6a:4f:a0:d1:61:25:f5:
- 4b:19:ea:a6:03:7a:55:f1:61:40:39:8c:d5:37:0e:
- 0e:3b:c6:8b:91:d2:d8:ea:3f:10:d5:66:cc:7d:e7:
- 7a:7a:3a:1e:37:29:01:0f:cc:13:a2:b1:0a:dc:11:
- 90:52:6f:57:27:83:16:37:f5:c9:23:bc:d9:35:a4:
- 00:00:2d
+ Public-Key: (2048 bit)
+ Modulus:
+ 00:b6:fb:e5:c7:2d:1a:28:a6:f2:94:c1:be:ac:f7:
+ a5:2f:63:e5:b0:db:58:3f:b7:b9:5b:4c:4d:5b:8e:
+ 23:8a:b6:71:98:c1:fc:11:0b:6b:58:3e:81:a8:d0:
+ 8d:89:ce:2f:6c:ff:8d:6c:04:b7:b8:ad:cf:b5:a4:
+ 71:05:58:bc:9c:01:a5:13:36:06:29:d3:84:61:c1:
+ 75:34:6e:fe:64:8d:67:83:31:61:05:06:00:c6:b6:
+ a0:67:11:85:dc:43:86:f0:61:c6:cc:c4:28:24:34:
+ 5b:d4:ac:23:da:35:e2:11:fe:a4:ff:84:17:8c:5a:
+ 29:28:7d:44:44:dc:72:08:4b:16:79:a1:8c:8e:24:
+ cc:dc:c4:cb:de:43:97:ac:47:b4:64:46:3c:2d:f9:
+ 41:dc:14:96:54:27:c5:f5:ee:9f:29:d9:c1:3a:5c:
+ 41:99:64:b9:72:4f:b2:7a:aa:65:3f:06:3c:dd:06:
+ 67:06:ca:33:7a:63:8c:fc:d1:9f:55:58:8b:88:36:
+ ff:4b:95:21:cf:1e:b0:88:b6:0a:1f:29:1f:d1:90:
+ e4:0e:5c:6e:45:d6:2e:c3:37:a9:a5:cb:15:01:51:
+ 3a:57:44:f3:b5:10:7e:99:4d:87:d2:3a:44:1a:83:
+ 53:9e:57:c5:03:11:a2:9e:3a:72:d5:41:4b:85:55:
+ 25:17
Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints:
- CA:FALSE
Signature Algorithm: sha256WithRSAEncryption
- 18:50:f9:86:78:13:e6:3f:3a:b2:97:e0:2e:e0:cb:3e:87:88:
- 0b:d4:a5:ed:70:e0:8a:bf:ee:04:47:54:47:97:c5:09:f4:da:
- a5:d2:f7:ed:7e:e5:61:be:ff:17:41:f3:87:66:d9:46:de:28:
- cf:64:46:34:0d:d0:55:ef:14:98:9f:8d:d6:03:78:0c:e6:a9:
- e9:10:f9:af:0c:4c:ec:d1:09:4d:93:16:7f:8e:de:66:5e:ee:
- bb:c9:fa:a0:32:0f:2d:82:32:1e:56:a6:e9:b8:b9:9a:12:3b:
- eb:9c:be:c7:5e:ca:00:78:fc:83:b9:f6:af:0f:34:3a:23:01:
- 12:ad:67:f1:23:93:62:30:c4:05:c4:d9:2a:b5:78:aa:c1:1f:
- 0c:d7:5c:95:e6:ba:e2:5c:ba:b1:a7:d2:9e:81:6e:ea:2a:0e:
- 4d:5c:dd:91:0d:de:5f:95:00:ab:9c:4e:83:9f:03:39:db:f8:
- 65:f8:b6:f3:69:cb:68:49:48:76:c3:8d:ef:db:cd:98:f4:d1:
- 56:b4:57:c9:aa:30:ea:97:f2:a4:af:35:b9:32:86:e9:fe:07:
- 28:50:ff:dd:43:ca:6a:3d:4f:d0:92:80:87:b8:56:e0:88:76:
- 7c:1a:00:60:32:91:4b:76:4a:82:ff:40:c8:25:45:74:96:27:
- 4a:21:4a:f2:29:12:43:2e:33:49:fa:59:87:55:10:56:5b:12:
- 09:9c:20:d9:dd:d3:db:17:23:db:c2:2e:47:fb:e8:6e:1c:8b:
- 5f:d2:d6:5b:9e:5d:2f:5d:dc:e9:27:3d:fd:da:47:12:9f:c0:
- f2:85:9b:ca:78:48:63:ca:42:27:80:00:8e:c6:2c:8f:1d:09:
- 08:56:58:8c:82:3b:83:c6:ee:13:cd:a7:62:3b:02:3d:37:8c:
- da:55:ae:88:d9:e2:41:ba:06:52:48:ac:42:e9:5e:83:26:fb:
- be:79:29:57:b3:d1:07:c7:ea:a5:bb:6b:e6:06:40:f3:1f:ab:
- c8:28:65:fa:2d:e8:52:7a:3a:65:b0:3a:e3:dc:85:d2:fc:a6:
- 39:a7:67:ec:60:a4:8d:4c:03:1e:ed:05:3b:f1:9d:f1:5a:82:
- cf:4b:70:96:67:e7:f7:a9:b2:3f:46:4b:1d:f8:46:4a:6b:03:
- bb:b5:0f:9e:59:d7:9f:9b:b6:6a:98:15:8c:97:46:c6:9c:a8:
- 09:4d:87:c1:45:74:05:18:ef:1d:ce:84:7c:23:b8:f7:f2:5e:
- 96:22:6d:cd:97:82:34:15:40:e7:be:79:5c:f2:24:4e:5b:b1:
- 22:1b:1e:1b:a2:54:03:ba:6d:58:5f:d5:68:6c:35:3f:98:2b:
- 49:96:85:99:cb:07:cc:a5
+ 11:37:b8:2b:61:c2:e0:e6:76:23:d6:9f:8d:61:5d:6d:d8:1f:
+ 73:d8:40:7c:25:25:e7:3e:1f:3d:04:e5:61:f5:6b:fe:c4:af:
+ cc:8d:55:b2:73:4c:66:89:25:29:c1:44:d2:3c:2c:96:7a:d4:
+ 05:ee:ff:32:ca:a6:16:ee:9f:70:b7:d1:08:0d:8f:1e:71:7c:
+ a6:0e:3d:dc:5a:08:8e:28:64:3f:4c:b2:e1:cd:5d:96:3d:ae:
+ 28:df:56:bc:a6:ce:1f:e7:d6:ef:ff:41:b3:8e:1e:1e:76:bb:
+ e7:7e:12:f8:93:35:1a:93:41:cb:81:32:6a:d0:2c:87:b6:24:
+ f8:b8:c2:a6:4d:0c:b2:f7:34:ec:9a:67:13:0b:4a:2a:12:bb:
+ c2:d3:62:14:20:08:46:bf:da:68:5d:bf:4d:fb:19:f5:1e:ea:
+ b0:a3:12:41:98:f2:f1:b5:f2:30:1b:17:9d:37:af:c2:83:08:
+ 9d:14:ef:7f:28:a0:f0:8f:ab:d7:02:bf:d7:2b:ab:7c:17:10:
+ 28:79:4e:98:01:d4:a1:bf:cf:cc:2e:84:66:74:10:23:1e:d7:
+ 31:83:11:21:96:37:76:46:04:95:1c:4c:b2:35:b0:ca:87:52:
+ 1d:72:fd:6c:4c:72:51:a9:fb:13:fb:69:87:55:be:6b:2e:fd:
+ bc:0c:2c:69
-----BEGIN CERTIFICATE-----
-MIIF/DCCA+SgAwIBAgIBAjANBgkqhkiG9w0BAQsFADCBxzEuMCwGA1UEAxMlUnVs
-ZXpsYW4gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMTEQMA4GA1UEBxMHQXJy
-YWRvbjERMA8GA1UECBMIQnJldGFnbmUxCzAJBgNVBAYTAkZSMSIwIAYJKoZIhvcN
-AQkBFhNnb25lcmlAcnVsZXpsYW4ub3JnMREwDwYDVQQKEwhMYW5hZnJhZzEsMCoG
-A1UECxMjRGVwYXJ0bWVudCBvZiBDb21wdXRhdGlvbmFsIFNjaWVuY2UwHhcNMTEx
-MjAyMTUyMzIwWhcNMTMxMjAxMTUyMzIwWjCBqzESMBAGA1UEAxMJbG9jYWxob3N0
-MRAwDgYDVQQHEwdBcnJhZG9uMREwDwYDVQQIEwhCcmV0YWduZTELMAkGA1UEBhMC
-RlIxIjAgBgkqhkiG9w0BCQEWE2dvbmVyaUBydWxlemxhbi5vcmcxETAPBgNVBAoT
-CExhbmFmcmFnMSwwKgYDVQQLEyNEZXBhcnRtZW50IG9mIENvbXB1dGF0aW9uYWwg
-U2NpZW5jZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAM+O9bIEd44X
-XjG4Lwg3QN47oOvOu8k7XFUrD8ShEEpERfgwQoh2nq8sRcteHNlL+sQVniarifGR
-nf90T0yaTg8g4NsBC6qFeB5U5GEBBnazt+O8XRfTaQW/siojUt5+QJCaHF7TVLMe
-uvwceKVRw0zF7dSuJaxKhyCW5bePRzzucb86MxkdnMHMKZ+ej3pQGJAgqXDrAtZq
-S/Vi2+hNsodRxSnDteKBvReN8/uLEU7ByUY6TcSQJesKAuqj7IZvv8wJMivzd+PB
-AjjHKBSGfq6QgzfqBEOJNFed+U2/UyrvhDVNIESMlmuRl9ctmgJ8uWpSjlo0v7q5
-BzSdcosFlpPKxwtchVrEeiGkjfqp5CZkvui0xMwGbA8MiV38TvqZmg3NZXtDMc9S
-ZxFI6IsyDxr37uxc0xjwO+j/9NcKyrVkppFMyOmbRcz/C5QypUmaulKVggWC1wV0
-ySNy7bF3coJQvHaUUbBZMzY2TgqiK+dMurhSMK6aeXTeRTTu7CHJn/3RNls9BMM4
-BAa1aohfGEDjfHUGTWANeIp1npoYJl1QxWBDpb31RC1kpQspoRfJJksSzcQDqNho
-5HpqT6DRYSX1SxnqpgN6VfFhQDmM1TcODjvGi5HS2Oo/ENVmzH3neno6HjcpAQ/M
-E6KxCtwRkFJvVyeDFjf1ySO82TWkAAAtAgMBAAGjDTALMAkGA1UdEwQCMAAwDQYJ
-KoZIhvcNAQELBQADggIBABhQ+YZ4E+Y/OrKX4C7gyz6HiAvUpe1w4Iq/7gRHVEeX
-xQn02qXS9+1+5WG+/xdB84dm2UbeKM9kRjQN0FXvFJifjdYDeAzmqekQ+a8MTOzR
-CU2TFn+O3mZe7rvJ+qAyDy2CMh5Wpum4uZoSO+ucvsdeygB4/IO59q8PNDojARKt
-Z/Ejk2IwxAXE2Sq1eKrBHwzXXJXmuuJcurGn0p6BbuoqDk1c3ZEN3l+VAKucToOf
-Aznb+GX4tvNpy2hJSHbDje/bzZj00Va0V8mqMOqX8qSvNbkyhun+ByhQ/91Dymo9
-T9CSgIe4VuCIdnwaAGAykUt2SoL/QMglRXSWJ0ohSvIpEkMuM0n6WYdVEFZbEgmc
-INnd09sXI9vCLkf76G4ci1/S1lueXS9d3OknPf3aRxKfwPKFm8p4SGPKQieAAI7G
-LI8dCQhWWIyCO4PG7hPNp2I7Aj03jNpVrojZ4kG6BlJIrELpXoMm+755KVez0QfH
-6qW7a+YGQPMfq8goZfot6FJ6OmWwOuPchdL8pjmnZ+xgpI1MAx7tBTvxnfFags9L
-cJZn5/epsj9GSx34RkprA7u1D55Z15+btmqYFYyXRsacqAlNh8FFdAUY7x3OhHwj
-uPfyXpYibc2XgjQVQOe+eVzyJE5bsSIbHhuiVAO6bVhf1WhsNT+YK0mWhZnLB8yl
+MIIDczCCAlsCAQcwDQYJKoZIhvcNAQELBQAwgYAxHDAaBgNVBAoTE2Z1c2lvbmlu
+dmVudG9yeS5vcmcxJTAjBgNVBAsTHHRlc3QgY2VydGlmaWNhdGlvbiBhdXRob3Jp
+dHkxEDAOBgNVBAMUB3Rlc3RfY2ExJzAlBgkqhkiG9w0BCQEWGHRlc3RAZnVzaW9u
+aW52ZW50b3J5Lm9yZzAeFw0xMTEyMTIxODU1MDRaFw0xMzEyMTExODU1MDRaMH4x
+HDAaBgNVBAoTE2Z1c2lvbmludmVudG9yeS5vcmcxITAfBgNVBAsTGHRydXN0ZWQg
+dGVzdCBjZXJ0aWZpY2F0ZTESMBAGA1UEAxMJbG9jYWxob3N0MScwJQYJKoZIhvcN
+AQkBFhh0ZXN0QGZ1c2lvbmludmVudG9yeS5vcmcwggEiMA0GCSqGSIb3DQEBAQUA
+A4IBDwAwggEKAoIBAQC2++XHLRoopvKUwb6s96UvY+Ww21g/t7lbTE1bjiOKtnGY
+wfwRC2tYPoGo0I2Jzi9s/41sBLe4rc+1pHEFWLycAaUTNgYp04RhwXU0bv5kjWeD
+MWEFBgDGtqBnEYXcQ4bwYcbMxCgkNFvUrCPaNeIR/qT/hBeMWikofURE3HIISxZ5
+oYyOJMzcxMveQ5esR7RkRjwt+UHcFJZUJ8X17p8p2cE6XEGZZLlyT7J6qmU/Bjzd
+BmcGyjN6Y4z80Z9VWIuINv9LlSHPHrCItgofKR/RkOQOXG5F1i7DN6mlyxUBUTpX
+RPO1EH6ZTYfSOkQag1OeV8UDEaKeOnLVQUuFVSUXAgMBAAEwDQYJKoZIhvcNAQEL
+BQADggEBABE3uCthwuDmdiPWn41hXW3YH3PYQHwlJec+Hz0E5WH1a/7Er8yNVbJz
+TGaJJSnBRNI8LJZ61AXu/zLKphbun3C30QgNjx5xfKYOPdxaCI4oZD9MsuHNXZY9
+rijfVrymzh/n1u//QbOOHh52u+d+EviTNRqTQcuBMmrQLIe2JPi4wqZNDLL3NOya
+ZxMLSioSu8LTYhQgCEa/2mhdv037GfUe6rCjEkGY8vG18jAbF503r8KDCJ0U738o
+oPCPq9cCv9crq3wXECh5TpgB1KG/z8wuhGZ0ECMe1zGDESGWN3ZGBJUcTLI1sMqH
+Uh1y/WxMclGp+xP7aYdVvmsu/bwMLGk=
-----END CERTIFICATE-----
diff --git a/t/ssl/key/ca-rulezlan.pem b/t/ssl/key/ca-rulezlan.pem
deleted file mode 100644
index 7089dd3..0000000
--- a/t/ssl/key/ca-rulezlan.pem
+++ /dev/null
@@ -1,54 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-Proc-Type: 4,ENCRYPTED
-DEK-Info: DES-EDE3-CBC,763FADE98194F731
-
-82jO0Mx5ffxKd4h7cuMCegx/GHVwKC3TcaqGyh+Xk/nqIB6af33gpRKG3BPzwQNj
-QJUlN3LQ1BgeN0Pfg1UY3hyXBnM8PYJL3XECCj5nCd9FGU3JfZPel7ufCuDoerCd
-KBSsEmAn2watdFaFNLyHxMiy5Mxxl1MdiH596eSrrzVQRtPLgEQVTZYZDnAHQXjN
-lluLmq6BTEfw01C2/rx73tOVA3AkKvE465jhHKx5PSEyoDSKkuvAn8yKOFVabCSF
-mCGANkK9JfgzQyp6Z/CryhQHLndaoUuITjRPBIxFmlh0LQv76xz55naF9+2p+353
-14s+mkfoR3cCCkh9ajMqCcMFVshMpQmJxSyAvw2ZdmkoIlLENBxvGISDKFokojp6
-5ElKfUvDORgiWcMixp6uW218v7OCRyCfIsEoiOoc6liTqPuVt4uIgnH9QqE4gQwA
-vIRlxbV65OO9CF5xkjC6UjVUrFJOsLZwts3V76a3o1sTj10DqAdq78+b9qo5Kl4H
-g9mHFPEYwCz3eXkCv4APb3nANlv7qLaaUREg7DhOw8armAWB/KN5WmBbdWJ1oaSS
-Xflr4jk3RtMyJJcuZosBxDmN0dpEZAQGbqg4CFuDw6qcq9Fj4i1lWvG1M9IHE4YA
-sMsZPZ7Mhx90qak2+o4RSZzH+C0vcgcdGh3zdTZbs2JcFVcX9rbBsXR2TH9sQSug
-UafXKNrb/MpBNME5+Cgr6epWfmywcvym79dM46O+ZI1mDwBUrMpCB/KDk62FzIUp
-EZI9s46S1vUB8/kHWgYjEVEkHV+WqeomHwZisAa0fj9kFtkzbZ60mSAd6/oQLlfT
-SXU7J0LclvezEaksw0DU2mINmbStyF9AFlC5ii+s+dHm+VCn/LjgFkrs3U7AkIXZ
-cLSHGAYRDC9dfwp912szm0YSXj60k1eeT1au4RIWPVi2DwBv+lPNNmnyR4+NhqU6
-VjPBvXrevjT51rutI1B7OgiTacMQDQ+V8viBkIxkXXFLVNqWFo49CmHoS1awJ6Ja
-YLBpFTZ/0TdMihsXhWGH0yc9f5w5TmNNUzlojXWQ9YBvcCe0+4xWSDYb5Au5+lVK
-pkzFHj5ROi/0E2pFS4QYx0z2evVqloVrM5lFnEaQ3f5zo+Xa5OQRG4TsBDae+OKV
-9QehUssRugVHCyjxSohrsVWUqYFHR6pYQOFvFOpp7p+hIKC04q0f1UnGoiWlK17O
-WYr0u71EJvVSBhou9BdaQ1RXdvXxFtyWamxtav0Z2EJGRkNdPDww43kANpWLh65F
-q9uDxRW2rzNPeagUPPpWCvZnOQrdqkdIBtyLaN/TOhtoTX16EL6ZWHRXRP5fOtBR
-9kA1L2CjpTT9X7FJZADaPqoTTWO4F9yxIT46OurMzddNYtc4TuxtSTdEEgf/9AVX
-l09AFgU2EEbakXtK2V9tJ5McDs7ZT3agVlL1m6WND1zFstjGRYOYqtL6YD8yVhbD
-vYguXm540IZ2DqIRb/SD4YTCgG1u0m2bwTZLsg8xH7LcUscQ1puciEK1brvYXmBp
-fKmWQm6EAN6jxZDoaAfxzCQjYqDTyk4urt3m0cfeyhgzbahZXQjb8kRs90WhZJMK
-9cIQWYJMtXjX2dB9fTGkfO1J7+e6AeEHtL5lfP6KF0iyl8T2EV4GJBomiV5kDOlS
-QVdwZz1yX7rHLl4aTHOh9XFsk75+CbNUNp2dzjSYZhocWNaMF/Wd+WhPe/AchXYk
-AwMBKDLPJUWg99HBttntnY+OiDEewqtsbpMmwcp9uZoF0NBnH1/1AkIXZWG+Lats
-MKKGNbAoGCFmTMuD0M+0VhfC9yJOLUdnygntv+hwa6HtAEadSqlKMzfk5VddAbEu
-KpRmsPCx9wzSj98yXfEOjb6BEhfcPc6E6U6trN0RsdkfhIxmWBOidWFaPZgkwGxe
-Xg5MtVTcKQS7BzBA1Ux067D+UCRAe9av2NCRHIoaDUATsiWTeqL8oNFzXWeFB3Ii
-ejkJTNYVHNliRpAFSnkqJeXfZG+0lLFbw+Hf2YVf345+tEn6LmP6wO9zx7Sq2uCU
-IeoInj8Ejcli46afkSPja0s3iTPQDlqVBZHng9o+02P01/2MK5GdGCN9Uf3aMEJ6
-pOhepqio7RwHjr5rw/rtumLipQZGa7h6MfUbvTtPUu91XFiwGCaPsl/ApsS6+gaw
-xU+NY59XCULYiXYJp8U7t/3hAfulTYMBlChcWxb4RRTsSRW7Q9A6mGbZv6VJtPsO
-rRWBr5evRA331j9JdCmCwWn0nSUfWFLX89dHLqsYMC3fqL6A3Nv0SEAWRoaPqO/H
-q97J19+A6kWMea9Rl23sS/OA3L69WZfytTxF5koJnjMZb+un4JRm8c7eeG+KgLKX
-N7EjCXvbHZwD2fMaHm4fb4JsmxJe3vbzUNYvtfPZ7ezECpeORdDfZurZhFsYt4Xd
-WzN07pmvqDK8q+RXnlOYHcf7gdIroQpm6wbXNSU/LyMfEcchNM+R8MxriOdg9t5N
-J4K8U3dyq6+gt5NVAWemAJzrVKbE3Fy7TZBM1Xa0lFo0Qf2g4092qQtuNaFge0xH
-8TNdBDFIpR9AoupDds3tTFhiCAqXWbGsxDIddFfdZKWqUfqrofSC9/JxHp/l+gqU
-Fjk4kwFktpHn7vtfmkgk9o1XA0NpteJHddAI4lf7YfPG1WnvLcbtHDIaic5xF8Hs
-FZ3V+zmjKMYgjeXK9FBCBW1oIwKdG6t0N/bTEOrtztsEWf4c8bgH6mx4XstJa/qF
-sx0AQwxUhvOYrXLjY24OC5Z164O34vOC1hYwE8LCdnGZPExKXtrg+fEHL7oO6yqy
-hkXjksj6nujM+wCbuwBfIrlSRQUm7wPAM4zPzN1I4ISzCsbJNei+PuT3l7n3g++p
-nm8WRcqGyIomQrZLpHuxCfXK00NJlkatbeuW0BA7aHre/sbY7XJKdqdjhtX5qzZv
-GpeRdBrwrytcbR50pNVoJS02AxivKYvCiRAhPH7wj9Btj8afg/54yWz+iaxBDGqv
-tO/fU3hpbhrO/fWzFZKcMwl+7DY2kAjZQMZYD3tBzfKuV7gjDR37u8MH41X+qCVL
-3xkmyud4T920fSyxpKZHiEhVvTyg1fX5O+d/I0Jk/4nW+Cp2v6nOdcrhsnczQ79d
------END RSA PRIVATE KEY-----
diff --git a/t/ssl/key/good-sha256.pem b/t/ssl/key/good-sha256.pem
index ec1aac5..0292542 100644
--- a/t/ssl/key/good-sha256.pem
+++ b/t/ssl/key/good-sha256.pem
@@ -1,51 +1,28 @@
------BEGIN RSA PRIVATE KEY-----
-MIIJKgIBAAKCAgEAz471sgR3jhdeMbgvCDdA3jug6867yTtcVSsPxKEQSkRF+DBC
-iHaeryxFy14c2Uv6xBWeJquJ8ZGd/3RPTJpODyDg2wELqoV4HlTkYQEGdrO347xd
-F9NpBb+yKiNS3n5AkJocXtNUsx66/Bx4pVHDTMXt1K4lrEqHIJblt49HPO5xvzoz
-GR2cwcwpn56PelAYkCCpcOsC1mpL9WLb6E2yh1HFKcO14oG9F43z+4sRTsHJRjpN
-xJAl6woC6qPshm+/zAkyK/N348ECOMcoFIZ+rpCDN+oEQ4k0V535Tb9TKu+ENU0g
-RIyWa5GX1y2aAny5alKOWjS/urkHNJ1yiwWWk8rHC1yFWsR6IaSN+qnkJmS+6LTE
-zAZsDwyJXfxO+pmaDc1le0Mxz1JnEUjoizIPGvfu7FzTGPA76P/01wrKtWSmkUzI
-6ZtFzP8LlDKlSZq6UpWCBYLXBXTJI3LtsXdyglC8dpRRsFkzNjZOCqIr50y6uFIw
-rpp5dN5FNO7sIcmf/dE2Wz0EwzgEBrVqiF8YQON8dQZNYA14inWemhgmXVDFYEOl
-vfVELWSlCymhF8kmSxLNxAOo2GjkempPoNFhJfVLGeqmA3pV8WFAOYzVNw4OO8aL
-kdLY6j8Q1WbMfed6ejoeNykBD8wTorEK3BGQUm9XJ4MWN/XJI7zZNaQAAC0CAwEA
-AQKCAgAahvLv5ZJCHspzIE8iha1MueI/QRTPCz8pw28oek1SsJcguUpHlqGBUe85
-prWZMBTEqt6jopjmvu2qkHryF2aSmGkklGWhTZ2kgsUNgMwKr7145cIgIWzyxyVG
-LW2R8iDeWlP16pyQqATN4/Wna2PClClpXTiDZKMQjzic1TsNlowDHLUbKKW4Pxey
-xtkfkM0S3pnJTL/4F23N1uy0K/n9QX4pcFH2uQ4pzIK6S3PS1QGccCcwUBwIhicJ
-RhoctHuW4DYBWASinzBhgVKmDOpz9RRQOSCCYS7HY/FQ9nryqdoD1e+h0zYGWX1G
-ixV76+TmqdZ3wPYgLzW0i8rv6a7sybQMAqOeh/Bnv9jQhNur7KBCsW1Go+MSSvcg
-VKLLTvf/o2gW70dwll2tQFSd1iqLfVaTAJTqyyl+sb++CeeAKVuDSsCNaapM0SG+
-LUuLuJOxY2GIabz8cRT8WE09dZdcoFSzOIPmzwKEsYBRQK07bwGSqNGSpubRiK/L
-4KZYVSx4SBpwHnkrtWxPpfGxkpF6mD2hHxAWTFA72gl5Euc61rmrkv3FNTrGj70x
-4HbX/Fgjh8wOaBibxEih7ubsoYAydp+3/W7jB8My7r8XK5I2ZcxAYagc6y16D30m
-YDj69m0GlazgZqo9soTAoGAksN6e3ns3jvZQ+edrpfnqm9O/IQKCAQEA7Pr5K0/O
-dmZmu3rdx5O/nUYPToq5wUfVPVpDeb0aAJEckyyY4mTZbdlEkl8cpFGzfuQfi4p6
-Q290dm0GVdfL0NsuSspvkbRk2WDQWtx2BqwoMsMBk8WSBYk2JHAvpvpK3uVUswtD
-R8D0m6aJhrWrgzD5o/FdXOwK1MoRW4NMdSwJXqPIKG/990TrTcxbm144pQbPRT3x
-GS8wJf3TGAFZ3cHoCbK18WRcB6le4D/SkKBo7go1nCjxI2lTUgUEUknWqDTyhPTj
-uFFTAzDVt0NHX8z+LbvZn5FnR0kt1cik5v1WZKATsfwV20zYwdfBax+cNdEbLbwJ
-EYPyC/2ab50hlwKCAQEA4Dd64cFe9lTHX2Y8AfjX+jOsmk7aPf+a8GTLaz79o+/M
-76fRxVfYX9bMCliWFDUpnafDjVAYrp+nS7e+zrKLK8QnZp0oTctm0dhDwAO4zQsr
-4Y58nvLxalDgbjpV9fn7jLIaYqWPdG55t9eWl/Z5hK2i+meOG8PtG8dJN2gR3ECv
-mdrxMCvPUhshsWsWYlG2xS07P+xODj/P2ZzFJ77gyqd23IGSzdanuFB3yfgePx7z
-BEHHANYYwc0eD/Oz9MvhTvnVVF27jQOO52luwXpnPq2dBN5u/edCgq9E3ZDU3QkX
-CXeYed9u6hmUuClp1v8GBd5gIhIOHvCrSnu9v85c2wKCAQEAnDMMm1S+FGKIolho
-6Exlh0ePfUiJCXHMhuUBBrPy+J6tRACoQMkSW4pS3VudqF1Fv4SjmjlLPzmufQR9
-oYVcjSx7BccK5PIPawyaKNmZXeqJkHPijUEzbzyymC/t6NSfFu339w+caCYx1Ipf
-qZADHbThRwMnc8ENnpYV/Mi9U5oUDvJLUwQGVL5zjlL9qpnfIj8rzUr3qI7m4JO+
-WNtDHZza0dGehR6OXmpv48WNh9CDeSr3jRebYajhx3URFSAgQbysgaBcnLfVzIua
-wnGxEN8wRnrEBZ40gdMlR/05XBttn2O3t6Ad0++CC7qnfXFXaE2M6YdAPvBGUUr2
-SU07vwKCAQEAy90l+YYcldTXwkHuZcygc3nwgg0YGi8B7Xl4C3cmn5w1teHctZX9
-woZG11Fcg9sij5ouD5q4Fm5LamkTMFTefVjIimByeOlr/3ingTrhGG4D4/3uCYfT
-QVtv9ElOR2yX74EwxGjMWozoVuPKpTkRnDVUbmEhsNUgDZXRWHNjaePWxglwKuBq
-jLjmla5Ml/C8QeOyb5ioEAStM6t7B3xiX2CMjkmx9T4rGUbw486ZkcLOKxyzmGsR
-74RUxSRMh1Oo9GnsMd1X3gtSL86JSZnFrhOlJPwp5uoSa0h5UQuSv7a4H3+CP62L
-54aC1j+xYC5Yh5V9yvynojIpTHveNzum6QKCAQEAvkQKmVBGKgrMN91O7IN3sWdj
-gU0wctkjHSAWBkGoV+2350AkhORLgVRLv9stFL/am+lghMU+VimzIN4+ZNeK6BFq
-0DHepLkBGgnWWm4zz/uqLOGWPCo+5yS/hIuHt7NxnZorllFGESass6nfBmNfHWa2
-dVj/uvANmPWgLpvWTE7v8CGsSHGBeS67fKg3Qy2acQ+VxxzwvSYB/TrmEmYaLpPT
-JLjAML5V8K+tAlINo8BFlo5w8w0ymvdKbOjJ8Nh4dZLI3SwFawR4qxrW3XiAHvNV
-Ihx+UO2qWbI6RGDIQj204lIcGVk6wFOmxq0f6qVSgyn2v+u9lx+wG0+XDBBbiA==
------END RSA PRIVATE KEY-----
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC2++XHLRoopvKU
+wb6s96UvY+Ww21g/t7lbTE1bjiOKtnGYwfwRC2tYPoGo0I2Jzi9s/41sBLe4rc+1
+pHEFWLycAaUTNgYp04RhwXU0bv5kjWeDMWEFBgDGtqBnEYXcQ4bwYcbMxCgkNFvU
+rCPaNeIR/qT/hBeMWikofURE3HIISxZ5oYyOJMzcxMveQ5esR7RkRjwt+UHcFJZU
+J8X17p8p2cE6XEGZZLlyT7J6qmU/BjzdBmcGyjN6Y4z80Z9VWIuINv9LlSHPHrCI
+tgofKR/RkOQOXG5F1i7DN6mlyxUBUTpXRPO1EH6ZTYfSOkQag1OeV8UDEaKeOnLV
+QUuFVSUXAgMBAAECggEAUUtAHmkPQhhJlYUt7TJolNFQ7m3EmypIkyMnCxHvAGVl
+unQURI5KNn4upI1jFGIh987hSage51FxAkX4YGO4B6dDa3GI83QhUDzekVjudEXO
+Qx7g95ZfKelhAelrCxyFCq6l37sWCl+onKeNlhhyQ4RaUZqhy50SxAZDGkTF9KCG
+SUb/zoZ67i4VUlAtstxAy6jfrnsDKSmsMu63EchhzKxwYUIBAwfvVuIjw+FacF0d
+NkfS22+n97CB4thM5Jk67DsfuEzxpbhvIKV75cmrlZOCdaybCKguULQiKARQqpzE
+1ux0jL7w5V1RwjWbhggFgDj1HJgA9aOSRBD0WawRwQKBgQDtl9Skw1CnSOL73ihg
+KGMHGVKPqGpMGrVtCYQBH9HTiSbKw/42LE1W1Jx4KdH65ctBwO1VyfTa2I6uuEWP
+tgUwZ+dmREzvdpeHXZo+FUi+HYP1c8zk8v6fQcGcPGHUoF1Z6aa9kzt/tlJg/J/f
+Zia0sL0jLnxMHTfi1+6P0DI0DwKBgQDFKQH3iO+Q+uKXMqrHgh4crQZ+14zn3J7y
+dOxXa06ZbmwEKeM2UvOzzElzBtar9cZGKsor+RwT4ZcGrvOIURbwTZdqJv/M5KAo
+s6HA5W1LYJDRZwub2M9pBbZ1RDcO8ImrSh7U4KHGMMHDM+8IEiDNI5Fe7I8raBrv
+lXlYiorWeQKBgHK/ta+ttTJV/WpvrUhjuRAgpsNDL7N54s26nsp8N7bWsqmTZx96
+3g9lt/xBFmz6tuQW7YlVdLCNjrvLu6zg2Di8tgGqUw4EVMLH7kq1tOA9GRJez0J0
+KY15EK0IbKdonC1kr2c3yLCxua+l0wDuMRtrkK2BMf8AzZD9gPZsMxL5AoGBAJxF
+MZrqvb+zK3BeJ4C0wHtIJVLaNIP+mTlhtYZgtk7kd9chAEepniIPtNPoQrTPvFUX
+S2FpNHkJoHQarUqJw126kl4ABVZ4i/1Wy8mhz2wkYQSo4UmoolUCwyjVZbKAsw3C
+VQez+GWndZzsB/TksX0HSQztAVmNTXRCjIjCXuM5AoGAAZeapd0CVHXmKfST+G81
+m8b4BHW2s+EzLQzOe1Q1H58ESTrz3woglW+WswV2jopZRUAh9WH0hLT+BLyiZMds
+YCtg0yPoT4gdQQhTAue01QoXWEE+pYomxYS1+EnFgbnDuEiAox4aKMcOwlWCYs7c
+sLY1q3YQEJ4fG1GpCXR2HPM=
+-----END PRIVATE KEY-----
================================================================
Commit: d8fb4d73a791d8794dbd4b68f198b97ea5ab7d6b
https://github.com/fusinv/fusioninventory-agent/commit/d8fb4d73a791d8794dbd4b68f198b97ea5ab7d6b
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-15 (Thu, 15 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Network.pm
Log Message:
-----------
revert 5001036e8ea
The regex changes was wrong. sorry :(
http://blog.gmane.org/gmane.comp.monitoring.fusion-inventory.user
Reported-by: Óscar Beiro <obeiro at construccionescrespo.com>
diff --git a/lib/FusionInventory/Agent/Network.pm b/lib/FusionInventory/Agent/Network.pm
index 96d7513..4d4dfaf 100644
--- a/lib/FusionInventory/Agent/Network.pm
+++ b/lib/FusionInventory/Agent/Network.pm
@@ -365,7 +365,7 @@ sub setSslRemoteHost {
$re =~ s/:\d+//;
# Accept SSL cert will hostname with wild-card
# http://forge.fusioninventory.org/issues/542
- $re =~ s/^([^\.]+)\.(.+)/($1|\\*)/;
+ $re =~ s/^([^\.]+)/($1|\\*)/;
# protect some characters, $re will be evaluated as a regex
$re =~ s/([\-\.])/\\$1/g;
$ua->default_header('If-SSL-Cert-Subject' => '/CN='.$re.'($|\/)');
================================================================
Commit: 54c153a918725052b94d2a5b353c56ed6d158850
https://github.com/fusinv/fusioninventory-agent/commit/54c153a918725052b94d2a5b353c56ed6d158850
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2011-12-15 (Thu, 15 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm
Log Message:
-----------
better parsing regexps
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm
index 49c91c3..143c637 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm
@@ -35,23 +35,18 @@ sub _getStorages {
if (/^(\S+)\s+Soft/) {
$storage->{NAME} = $1;
}
- if (/Product:\s*(.+)/) {
- my $model = $1;
- # empty product, we got Revision instead, dropping it
- $model =~ s/Revision:.*//;
- $storage->{MODEL} = $model;
- }
- if (/Serial No:\s*(\S+)/) {
- my $serial = $1;
- $storage->{SERIALNUMBER} = $serial if $serial !~ /^Size/i;
- }
- if (/Revision:\s*(\S+)/) {
- $storage->{FIRMWARE} = $1 unless $1 eq 'Serial';
- }
- if (/^Vendor:\s*(\S+)/) {
+ if (/^
+ Vendor: \s (\S+) \s+
+ Product: \s (\S[\w\s-]*\S) \s+
+ Revision: \s (\S+) \s+
+ Serial \s No: \s (\S*)
+ /x) {
$storage->{MANUFACTURER} = $1;
+ $storage->{MODEL} = $2;
+ $storage->{FIRMWARE} = $3;
+ $storage->{SERIALNUMBER} = $4 if $4;
}
- if (/<(\d+)\s*bytes/) {
+ if (/<(\d+) bytes/) {
$storage->{DISKSIZE} = int($1/(1000*1000));
}
if(/^Illegal/) { # Last ligne
================================================================
Commit: 9f611fc44ec9f6d8a989c0406fdd9fe5aa95ca85
https://github.com/fusinv/fusioninventory-agent/commit/9f611fc44ec9f6d8a989c0406fdd9fe5aa95ca85
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2011-12-15 (Thu, 15 Dec 2011)
Changed paths:
M t/inventory/solaris/storages.t
Log Message:
-----------
fix expected results
diff --git a/t/inventory/solaris/storages.t b/t/inventory/solaris/storages.t
index 1177356..e4eeb9b 100755
--- a/t/inventory/solaris/storages.t
+++ b/t/inventory/solaris/storages.t
@@ -15,7 +15,7 @@ my %tests = (
FIRMWARE => '5009',
DESCRIPTION => 'FW:5009',
MANUFACTURER => 'HITACHI',
- MODEL => 'OPEN-V -SUN '
+ MODEL => 'OPEN-V -SUN'
},
],
'sample2' => [
@@ -26,7 +26,7 @@ my %tests = (
DESCRIPTION => 'S/N:43W14Z080040A34E FW:PQ08',
MANUFACTURER => 'HITACHI',
SERIALNUMBER => '43W14Z080040A34E',
- MODEL => 'DK32EJ72NSUN72G '
+ MODEL => 'DK32EJ72NSUN72G'
}
],
'sample3-wrong-vendor-product' => [
@@ -36,7 +36,7 @@ my %tests = (
FIRMWARE => 'RX02',
DESCRIPTION => 'FW:RX02',
MANUFACTURER => 'Optiarc',
- MODEL => 'DVD-ROM DDU810A '
+ MODEL => 'DVD-ROM DDU810A'
},
{
NAME => 'c3t0d0',
@@ -44,7 +44,7 @@ my %tests = (
FIRMWARE => '1.11',
DESCRIPTION => 'FW:1.11',
MANUFACTURER => 'INTEL',
- MODEL => 'SROMBSASFC '
+ MODEL => 'SROMBSASFC'
},
{
NAME => 'c3t1d0',
@@ -52,7 +52,7 @@ my %tests = (
FIRMWARE => '1.11',
DESCRIPTION => 'FW:1.11',
MANUFACTURER => 'INTEL',
- MODEL => 'SROMBSASFC '
+ MODEL => 'SROMBSASFC'
},
{
NAME => 'c1t13d0',
@@ -60,7 +60,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t14d0',
@@ -68,7 +68,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t13d0',
@@ -76,7 +76,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t14d0',
@@ -84,7 +84,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t15d0',
@@ -92,7 +92,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t16d0',
@@ -100,7 +100,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t17d0',
@@ -108,7 +108,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t18d0',
@@ -116,7 +116,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t19d0',
@@ -124,7 +124,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t20d0',
@@ -132,7 +132,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t21d0',
@@ -140,7 +140,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t22d0',
@@ -148,7 +148,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t23d0',
@@ -156,7 +156,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t24d0',
@@ -164,7 +164,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t25d0',
@@ -172,7 +172,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t26d0',
@@ -180,7 +180,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t27d0',
@@ -188,7 +188,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t28d0',
@@ -196,7 +196,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t29d0',
@@ -204,7 +204,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t30d0',
@@ -212,7 +212,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t31d0',
@@ -220,7 +220,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t32d0',
@@ -228,7 +228,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t33d0',
@@ -236,7 +236,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t34d0',
@@ -244,7 +244,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t35d0',
@@ -252,7 +252,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t36d0',
@@ -260,7 +260,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t37d0',
@@ -268,7 +268,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t38d0',
@@ -276,7 +276,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t39d0',
@@ -284,7 +284,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t40d0',
@@ -292,7 +292,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t41d0',
@@ -300,7 +300,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t42d0',
@@ -308,7 +308,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t43d0',
@@ -316,7 +316,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t44d0',
@@ -324,7 +324,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t45d0',
@@ -332,7 +332,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t46d0',
@@ -340,7 +340,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t47d0',
@@ -348,7 +348,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t48d0',
@@ -356,7 +356,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t49d0',
@@ -364,7 +364,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t50d0',
@@ -372,7 +372,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t51d0',
@@ -380,7 +380,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t52d0',
@@ -388,7 +388,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t53d0',
@@ -396,7 +396,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t54d0',
@@ -404,7 +404,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t55d0',
@@ -412,7 +412,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t56d0',
@@ -420,7 +420,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t57d0',
@@ -428,7 +428,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t58d0',
@@ -436,7 +436,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t59d0',
@@ -444,7 +444,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t60d0',
@@ -452,7 +452,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t61d0',
@@ -460,7 +460,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t62d0',
@@ -468,7 +468,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t63d0',
@@ -476,7 +476,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t64d0',
@@ -484,7 +484,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t65d0',
@@ -492,7 +492,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t66d0',
@@ -500,7 +500,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t67d0',
@@ -508,7 +508,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t68d0',
@@ -516,7 +516,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t69d0',
@@ -524,7 +524,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t70d0',
@@ -532,7 +532,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t71d0',
@@ -540,7 +540,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c2t72d0',
@@ -548,7 +548,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c6t8d0',
@@ -556,7 +556,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t9d0',
@@ -564,7 +564,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t10d0',
@@ -572,7 +572,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t11d0',
@@ -580,7 +580,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t12d0',
@@ -588,7 +588,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t13d0',
@@ -596,7 +596,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t8d0',
@@ -604,7 +604,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t15d0',
@@ -612,7 +612,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t16d0',
@@ -620,7 +620,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t17d0',
@@ -628,7 +628,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t18d0',
@@ -636,7 +636,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t19d0',
@@ -644,7 +644,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t20d0',
@@ -652,7 +652,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t21d0',
@@ -660,7 +660,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t22d0',
@@ -668,7 +668,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t23d0',
@@ -676,7 +676,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t24d0',
@@ -684,7 +684,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t25d0',
@@ -692,7 +692,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t26d0',
@@ -700,7 +700,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t9d0',
@@ -708,7 +708,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t28d0',
@@ -716,7 +716,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t29d0',
@@ -724,7 +724,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t30d0',
@@ -732,7 +732,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t31d0',
@@ -740,7 +740,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t32d0',
@@ -748,7 +748,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t33d0',
@@ -756,7 +756,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t34d0',
@@ -764,7 +764,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t35d0',
@@ -772,7 +772,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t36d0',
@@ -780,7 +780,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t37d0',
@@ -788,7 +788,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t38d0',
@@ -796,7 +796,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t39d0',
@@ -804,7 +804,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t10d0',
@@ -812,7 +812,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t41d0',
@@ -820,7 +820,7 @@ my %tests = (
FIRMWARE => 'XR38',
DESCRIPTION => 'FW:XR38',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t42d0',
@@ -828,7 +828,7 @@ my %tests = (
FIRMWARE => 'XR38',
DESCRIPTION => 'FW:XR38',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t43d0',
@@ -836,7 +836,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t44d0',
@@ -844,7 +844,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t45d0',
@@ -852,7 +852,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c6t46d0',
@@ -860,7 +860,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t11d0',
@@ -868,7 +868,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t12d0',
@@ -876,7 +876,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t13d0',
@@ -884,7 +884,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t15d0',
@@ -892,7 +892,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t16d0',
@@ -900,7 +900,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t17d0',
@@ -908,7 +908,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t18d0',
@@ -916,7 +916,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t19d0',
@@ -924,7 +924,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t20d0',
@@ -932,7 +932,7 @@ my %tests = (
FIRMWARE => 'XR38',
DESCRIPTION => 'FW:XR38',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t21d0',
@@ -940,7 +940,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t22d0',
@@ -948,7 +948,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t23d0',
@@ -956,7 +956,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t24d0',
@@ -964,7 +964,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t25d0',
@@ -972,7 +972,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t26d0',
@@ -980,7 +980,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t28d0',
@@ -988,7 +988,7 @@ my %tests = (
FIRMWARE => 'XR38',
DESCRIPTION => 'FW:XR38',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t29d0',
@@ -996,7 +996,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t30d0',
@@ -1004,7 +1004,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t31d0',
@@ -1012,7 +1012,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t32d0',
@@ -1020,7 +1020,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c1t15d0',
@@ -1028,7 +1028,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t16d0',
@@ -1036,7 +1036,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t17d0',
@@ -1044,7 +1044,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t18d0',
@@ -1052,7 +1052,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t19d0',
@@ -1060,7 +1060,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t20d0',
@@ -1068,7 +1068,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t21d0',
@@ -1076,7 +1076,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t22d0',
@@ -1084,7 +1084,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t23d0',
@@ -1092,7 +1092,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t24d0',
@@ -1100,7 +1100,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t25d0',
@@ -1108,7 +1108,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t26d0',
@@ -1116,7 +1116,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t27d0',
@@ -1124,7 +1124,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t28d0',
@@ -1132,7 +1132,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t29d0',
@@ -1140,7 +1140,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t30d0',
@@ -1148,7 +1148,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t31d0',
@@ -1156,7 +1156,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t32d0',
@@ -1164,7 +1164,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t33d0',
@@ -1172,7 +1172,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t34d0',
@@ -1180,7 +1180,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t35d0',
@@ -1188,7 +1188,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t36d0',
@@ -1196,7 +1196,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t37d0',
@@ -1204,7 +1204,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t38d0',
@@ -1212,7 +1212,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t39d0',
@@ -1220,7 +1220,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t40d0',
@@ -1228,7 +1228,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t71d0',
@@ -1236,7 +1236,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t41d0',
@@ -1244,7 +1244,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t42d0',
@@ -1252,7 +1252,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t43d0',
@@ -1260,7 +1260,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t44d0',
@@ -1268,7 +1268,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t45d0',
@@ -1276,7 +1276,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t46d0',
@@ -1284,7 +1284,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t47d0',
@@ -1292,7 +1292,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t48d0',
@@ -1300,7 +1300,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t49d0',
@@ -1308,7 +1308,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t50d0',
@@ -1316,7 +1316,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t51d0',
@@ -1324,7 +1324,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t52d0',
@@ -1332,7 +1332,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t53d0',
@@ -1340,7 +1340,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t54d0',
@@ -1348,7 +1348,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t55d0',
@@ -1356,7 +1356,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t56d0',
@@ -1364,7 +1364,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t57d0',
@@ -1372,7 +1372,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t58d0',
@@ -1380,7 +1380,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t59d0',
@@ -1388,7 +1388,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t60d0',
@@ -1396,7 +1396,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t61d0',
@@ -1404,7 +1404,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t62d0',
@@ -1412,7 +1412,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t63d0',
@@ -1420,7 +1420,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t64d0',
@@ -1428,7 +1428,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t65d0',
@@ -1436,7 +1436,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t66d0',
@@ -1444,7 +1444,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t67d0',
@@ -1452,7 +1452,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t68d0',
@@ -1460,7 +1460,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t69d0',
@@ -1468,7 +1468,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t70d0',
@@ -1476,7 +1476,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c1t72d0',
@@ -1484,7 +1484,7 @@ my %tests = (
FIRMWARE => 'A70M',
DESCRIPTION => 'FW:A70M',
MANUFACTURER => 'Hitachi',
- MODEL => 'HUA72101 '
+ MODEL => 'HUA72101'
},
{
NAME => 'c11t33d0',
@@ -1492,7 +1492,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t34d0',
@@ -1500,7 +1500,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t35d0',
@@ -1508,7 +1508,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t36d0',
@@ -1516,7 +1516,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t37d0',
@@ -1524,7 +1524,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t38d0',
@@ -1532,7 +1532,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t39d0',
@@ -1540,7 +1540,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t41d0',
@@ -1548,7 +1548,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t42d0',
@@ -1556,7 +1556,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t43d0',
@@ -1564,7 +1564,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t44d0',
@@ -1572,7 +1572,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t45d0',
@@ -1580,7 +1580,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t46d0',
@@ -1588,7 +1588,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t47d0',
@@ -1596,7 +1596,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t48d0',
@@ -1604,7 +1604,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t49d0',
@@ -1612,7 +1612,7 @@ my %tests = (
FIRMWARE => 'XQ32',
DESCRIPTION => 'FW:XQ32',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310005 '
+ MODEL => 'ST310005'
},
{
NAME => 'c11t50d0',
@@ -1620,7 +1620,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t51d0',
@@ -1628,7 +1628,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t52d0',
@@ -1636,7 +1636,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t54d0',
@@ -1644,7 +1644,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t55d0',
@@ -1652,7 +1652,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t56d0',
@@ -1660,7 +1660,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t57d0',
@@ -1668,7 +1668,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t58d0',
@@ -1676,7 +1676,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c11t59d0',
@@ -1684,7 +1684,7 @@ my %tests = (
FIRMWARE => 'XR3A',
DESCRIPTION => 'FW:XR3A',
MANUFACTURER => 'SEAGATE',
- MODEL => 'ST310003 '
+ MODEL => 'ST310003'
},
{
NAME => 'c7t0d0',
@@ -1692,7 +1692,7 @@ my %tests = (
FIRMWARE => '0.01',
DESCRIPTION => 'FW:0.01',
MANUFACTURER => 'Intel',
- MODEL => 'RMM2 VDrive 1 '
+ MODEL => 'RMM2 VDrive 1'
},
{
NAME => 'c8t0d0',
@@ -1700,7 +1700,7 @@ my %tests = (
FIRMWARE => '0.01',
DESCRIPTION => 'FW:0.01',
MANUFACTURER => 'Intel',
- MODEL => 'RMM2 VDrive 2 '
+ MODEL => 'RMM2 VDrive 2'
},
{
NAME => 'c10t0d0',
@@ -1708,7 +1708,7 @@ my %tests = (
FIRMWARE => '0.01',
DESCRIPTION => 'FW:0.01',
MANUFACTURER => 'Intel',
- MODEL => 'RMM2 VDrive 4 '
+ MODEL => 'RMM2 VDrive 4'
},
{
NAME => 'c9t0d0',
@@ -1716,7 +1716,7 @@ my %tests = (
FIRMWARE => '0.01',
DESCRIPTION => 'FW:0.01',
MANUFACTURER => 'Intel',
- MODEL => 'RMM2 VDrive 3 '
+ MODEL => 'RMM2 VDrive 3'
}
]
);
================================================================
Commit: 8b35e839ef7c7ef88671fe352ece25ff1373b1a2
https://github.com/fusinv/fusioninventory-agent/commit/8b35e839ef7c7ef88671fe352ece25ff1373b1a2
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2011-12-15 (Thu, 15 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm
Log Message:
-----------
use explicit iterator
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm
index 143c637..ff2fe92 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm
@@ -31,11 +31,11 @@ sub _getStorages {
my @storages;
my $storage;
- while (<$handle>) {
- if (/^(\S+)\s+Soft/) {
+ while (my $line = <$handle>) {
+ if ($line =~ /^(\S+)\s+Soft/) {
$storage->{NAME} = $1;
}
- if (/^
+ if ($line =~ /^
Vendor: \s (\S+) \s+
Product: \s (\S[\w\s-]*\S) \s+
Revision: \s (\S+) \s+
@@ -46,10 +46,10 @@ sub _getStorages {
$storage->{FIRMWARE} = $3;
$storage->{SERIALNUMBER} = $4 if $4;
}
- if (/<(\d+) bytes/) {
+ if ($line =~ /<(\d+) bytes/) {
$storage->{DISKSIZE} = int($1/(1000*1000));
}
- if(/^Illegal/) { # Last ligne
+ if ($line =~ /^Illegal/) { # Last ligne
## To be removed when SERIALNUMBER will be supported
if ($storage->{SERIALNUMBER}) {
================================================================
Commit: dc4975c7154e27f098279ac39898cef7131f267d
https://github.com/fusinv/fusioninventory-agent/commit/dc4975c7154e27f098279ac39898cef7131f267d
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2011-12-15 (Thu, 15 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm
Log Message:
-----------
move external command usage out of parsing function
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm
index ff2fe92..5f2c715 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm
@@ -15,9 +15,22 @@ sub doInventory {
my $inventory = $params{inventory};
my $logger = $params{logger};
- foreach my $storage (_getStorages(
- logger => $logger, command => 'iostat -En'
- )) {
+ my @storages = _getStorages(
+ logger => $logger, command => 'iostat -En'
+ );
+
+ foreach my $storage (@storages) {
+ if (-l "/dev/rdsk/$storage->{NAME}s2") {
+ my $rdisk_path = getFirstLine(
+ command => "ls -l /dev/rdsk/$storage->{NAME}s2"
+ );
+ $storage->{TYPE} =
+ $rdisk_path =~ /->.*scsi_vhci/ ? 'MPxIO' :
+ $rdisk_path =~ /->.*fp@/ ? 'FC' :
+ $rdisk_path =~ /->.*scsi@/ ? 'SCSI' :
+ undef ;
+ }
+
$inventory->addEntry(section => 'STORAGES', entry => $storage);
}
}
@@ -77,16 +90,6 @@ sub _getStorages {
}
- if (-l "/dev/rdsk/$storage->{NAME}s2") {
- my $rdisk_path = getFirstLine(
- command => "ls -l /dev/rdsk/$storage->{NAME}s2"
- );
- $storage->{TYPE} =
- $rdisk_path =~ /->.*scsi_vhci/ ? 'MPxIO' :
- $rdisk_path =~ /->.*fp@/ ? 'FC' :
- $rdisk_path =~ /->.*scsi@/ ? 'SCSI' :
- undef ;
- }
push @storages, $storage;
undef $storage;
}
================================================================
Commit: 9523594831f92e961e7c59d7d1c570ff76770a10
https://github.com/fusinv/fusioninventory-agent/commit/9523594831f92e961e7c59d7d1c570ff76770a10
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2011-12-15 (Thu, 15 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm
Log Message:
-----------
cleanup
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm
index 5f2c715..172b111 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Storages.pm
@@ -81,8 +81,11 @@ sub _getStorages {
if ($storage->{MANUFACTURER}) {
## Workaround for MANUFACTURER == ATA case
- if (($storage->{MANUFACTURER} eq 'ATA') && $storage->{MODEL} =~ s/^(Hitachi|Seagate|INTEL)\s(\S.*)/$2/i) {
+ if (
+ $storage->{MANUFACTURER} eq 'ATA' &&
+ $storage->{MODEL} =~ /^(Hitachi|Seagate|INTEL) (.+)/i) {
$storage->{MANUFACTURER} = $1;
+ $storage->{MODEL} = $2;
}
## Drop the (R) from the manufacturer string
================================================================
Commit: 9fbfc038e8fd8ac1598aa8c9a2a1d814325fd2dd
https://github.com/fusinv/fusioninventory-agent/commit/9fbfc038e8fd8ac1598aa8c9a2a1d814325fd2dd
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2011-12-15 (Thu, 15 Dec 2011)
Changed paths:
M Changes
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
Log Message:
-----------
Merge remote-tracking branch 'forge/2.2.x' into 2.2.x
diff --git a/Changes b/Changes
index effd112..1a8eec8 100644
--- a/Changes
+++ b/Changes
@@ -56,6 +56,22 @@ Minor changes:
* Linux: Use /sbin/ip to get the interface IP addresses (#854)
* HPUX: don't report unoccupied memory slots
+2.1.12 Wed, 14 Dec 2011 13:06:44 +0100
+
+TEST-SUITE
+ ✔ 2.1.10 Test suite fails
+ commit:8035bd
+ http://forge.fusioninventory.org/issues/1161
+ thanks: Remi Collet
+
+WINDOWS
+ ✔ VM System incorrect
+ commit:b59a09
+ http://forge.fusioninventory.org/issues/1391
+ thanks: Mario Gzuk
+ ✔ Fix the CPU detection on Windows
+ thanks: Anthony Facchin
+
2.1.12 Wed, 23 Nov 2011 18:14:52 +0100
GENERIC
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
index a4575b4..2dca55b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
@@ -82,6 +82,8 @@ sub doInventory {
}
+ $bios->{$_} =~ s/\s+$// foreach (keys %bios);
+
$inventory->setBios($bios);
if (
@@ -92,7 +94,16 @@ sub doInventory {
$inventory->setHardware ({
VMSYSTEM => 'VirtualBox'
});
+ } elsif (
+ ($bios->{BIOSSERIAL} && ($bios->{BIOSSERIAL} =~ /VMware/i))
+ ||
+ ($bios->{SMODEL} && ($bios->{SMODEL} eq 'VirtualBox'))
+ ) {
+ $inventory->setHardware ({
+ VMSYSTEM => 'VMware'
+ });
}
+
}
1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index 0fba5f9..c9e9acd 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -102,6 +102,12 @@ sub doInventory {
} else {
$interface->{VIRTUALDEV} = $nic->PNPDeviceID =~ /^ROOT/ ? 1 : 0;
}
+
+ if (defined $nic->AdapterType) {
+ $interface->{TYPE} = $nic->AdapterType;
+ $interface->{TYPE} =~ s/Ethernet.*/Ethernet/;
+ }
+
}
foreach my $interface (@interfaces) {
================================================================
Commit: b9afc14d29a65716c17c82a52751fd2800b08fab
https://github.com/fusinv/fusioninventory-agent/commit/b9afc14d29a65716c17c82a52751fd2800b08fab
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2011-12-15 (Thu, 15 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Client.pm
Log Message:
-----------
cosmetics, and uniform error messages
diff --git a/lib/FusionInventory/Agent/HTTP/Client.pm b/lib/FusionInventory/Agent/HTTP/Client.pm
index 2a3eb72..eb26736 100644
--- a/lib/FusionInventory/Agent/HTTP/Client.pm
+++ b/lib/FusionInventory/Agent/HTTP/Client.pm
@@ -22,23 +22,23 @@ sub new {
if $params{ca_cert_dir} && ! -d $params{ca_cert_dir};
my $self = {
- logger => $params{logger} ||
+ logger => $params{logger} ||
FusionInventory::Agent::Logger->new(),
- user => $params{user},
- password => $params{password},
- timeout => $params{timeout} || 180,
- ssl_set => 0,
- no_ssl_check => $params{no_ssl_check},
- ca_cert_dir => $params{ca_cert_dir},
- ca_cert_file => $params{ca_cert_file}
+ user => $params{user},
+ password => $params{password},
+ timeout => $params{timeout} || 180,
+ ssl_set => 0,
+ no_ssl_check => $params{no_ssl_check},
+ ca_cert_dir => $params{ca_cert_dir},
+ ca_cert_file => $params{ca_cert_file}
};
bless $self, $class;
# create user agent
$self->{ua} = LWP::UserAgent->new(
- parse_head => 0, # No need to parse HTML
- keep_alive => 1,
- requests_redirectable => ['POST', 'GET', 'HEAD']
+ parse_head => 0, # No need to parse HTML
+ keep_alive => 1,
+ requests_redirectable => ['POST', 'GET', 'HEAD']
);
if ($params{proxy}) {
@@ -139,8 +139,9 @@ sub _setSSLOptions {
# certificate hostname
IO::Socket::SSL->require();
die
- "failed to load IO::Socket::SSL" .
- ", unable to perform SSL certificate validation"
+ "failed to load IO::Socket::SSL, " .
+ "unable to perform SSL certificate validation.\n" .
+ "You can use 'no-ssl-check' option to disable it."
if $EVAL_ERROR;
if ($LWP::VERSION >= 6) {
@@ -148,13 +149,14 @@ sub _setSSLOptions {
if $self->{'ca_cert_file'};
$self->{ua}->ssl_opts(SSL_ca_path => $self->{'ca_cert_dir'})
if $self->{'ca_cert_dir'};
- } elsif ($IO::Socket::SSL::VERSION < 1.14) {
- # SSL_verifycn_scheme and SSL_verifycn_name are required
- die "IO::Socket::SSL $IO::Socket::SSL::VERSION is too old. Version 1.14 is ".
- "required to do SSL cert validation.\n".
- " You can use 'no-ssl-check' option ".
- " if you want to disable the SSL cert check";
} else {
+ # SSL_verifycn_scheme and SSL_verifycn_name are required
+ die
+ "IO::Socket::SSL $IO::Socket::SSL::VERSION is too old, " .
+ "version 1.14 is required for SSL certificate validation.\n" .
+ " You can use 'no-ssl-check' option to disable SSL it."
+ if $IO::Socket::SSL::VERSION < 1.14;
+
# use a custom HTTPS handler to workaround default LWP5 behaviour
FusionInventory::Agent::HTTP::Protocol::https->use(
ca_cert_file => $self->{'ca_cert_file'},
@@ -162,9 +164,8 @@ sub _setSSLOptions {
);
die
"failed to load FusionInventory::Agent::HTTP::Protocol::https" .
- ", unable to perform SSL certificate validation.\n".
- " You can use 'no-ssl-check' option ".
- " if you want to disable the SSL cert check"
+ ", unable to perform SSL certificate validation.\n" .
+ "You can use 'no-ssl-check' option to disable it."
if $EVAL_ERROR;
LWP::Protocol::implementor(
================================================================
Commit: 578e2ace95dee92157c9a313f2ea11f80d8e198a
https://github.com/fusinv/fusioninventory-agent/commit/578e2ace95dee92157c9a313f2ea11f80d8e198a
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-18 (Sun, 18 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Server.pm
Log Message:
-----------
HTTP /deploy: speed up the file lookup
diff --git a/lib/FusionInventory/Agent/HTTP/Server.pm b/lib/FusionInventory/Agent/HTTP/Server.pm
index 44dc263..139744f 100644
--- a/lib/FusionInventory/Agent/HTTP/Server.pm
+++ b/lib/FusionInventory/Agent/HTTP/Server.pm
@@ -148,29 +148,24 @@ sub _handle_deploy {
my $logger = $self->{logger};
- return unless $sha512 =~ /^..(.{6})/;
- my $name = $1;
- my $path;
+ return unless $sha512 =~ /^(.)(.)(.{6})/;
+ my $subFilePath = $1.'/'.$2.'/'.$3;
- File::Find->require();
+ File::Glob->require();
Digest::SHA->require();
- foreach my $target ($self->{scheduler}->getTargets()) {
- my $shareDir = $target->{storage}->getDirectory()."/deploy/fileparts/shared";
- next unless -d $shareDir;
-
- my $wanted = sub {
- return unless -f $_;
- return unless basename($_) eq $name;
+ my $path;
+ LOOP: foreach my $target ($self->{scheduler}->getTargets()) {
+ foreach (File::Glob::glob($target->{storage}->getDirectory()."/deploy/fileparts/shared/*")) {
+ next unless -f $_.'/'.$subFilePath;
my $sha = Digest::SHA->new('512');
- $sha->addfile($File::Find::name, 'b');
- return unless $sha->hexdigest eq $sha512;
+ $sha->addfile($_.'/'.$subFilePath, 'b');
+ next unless $sha->hexdigest eq $sha512;
- $path = $File::Find::name;
- };
- File::Find::find({ wanted => $wanted, no_chdir => 1 }, $shareDir);
- last if $path;
+ $path = $_.'/'.$subFilePath;
+ last LOOP;
+ }
}
if ($path) {
$logger->debug($log_prefix . "file $sha512 found");
================================================================
Commit: 89ee7511ba3cd886268a6597eb73900893d2df5a
https://github.com/fusinv/fusioninventory-agent/commit/89ee7511ba3cd886268a6597eb73900893d2df5a
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2011-12-18 (Sun, 18 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Users.pm
Log Message:
-----------
don't use version-specific options with last
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Users.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Users.pm
index fe84463..8c0817b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Users.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Users.pm
@@ -41,9 +41,9 @@ sub doInventory {
}
my ($lastUser, $lastDate);
- my $last = getFirstLine(command => 'last -R');
+ my $last = getFirstLine(command => 'last');
if ($last &&
- $last =~ /^(\S+) \s+ \S+ \s+ (\S+ \s+ \S+ \s+ \S+ \s+ \S+)/x
+ $last =~ /^(\S+) \s+ \S+ \s+ \S+ \s+ (\S+ \s+ \S+ \s+ \S+ \s+ \S+)/x
) {
$lastUser = $1;
$lastDate = $2;
================================================================
Commit: 47feefb96d78ee945a97eae2067f4eab7f1df269
https://github.com/fusinv/fusioninventory-agent/commit/47feefb96d78ee945a97eae2067f4eab7f1df269
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2011-12-18 (Sun, 18 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
Log Message:
-----------
fix attribute, this is COMMENTS and not DESCRIPTION (fix #1395)
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
index 6e54649..2ca73af 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
@@ -39,9 +39,9 @@ sub _getPackagesListFromPkgInfo {
while (my $line = <$handle>) {
next unless $line =~ /^(\S+)-(\d+\S*)\s+(.*)/;
push @packages, {
- NAME => $1,
- VERSION => $2,
- DESCRIPTION => $3
+ NAME => $1,
+ VERSION => $2,
+ COMMENTS => $3
};
}
================================================================
Commit: 17308ffc5c6944ae890550444a64b87089c83ab2
https://github.com/fusinv/fusioninventory-agent/commit/17308ffc5c6944ae890550444a64b87089c83ab2
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2011-12-18 (Sun, 18 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Drives.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Drives.pm
M lib/FusionInventory/Agent/Tools/Unix.pm
Log Message:
-----------
pass filesystem type explicitely when it can not get computed from df output (fix #1394)
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Drives.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Drives.pm
index 094b7cd..9c64cb7 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Drives.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Drives.pm
@@ -25,8 +25,9 @@ sub doInventory {
my @filesystems;
foreach my $type (@types) {
push @filesystems, getFilesystemsFromDf(
- logger => $logger,
- command => "df -P -k -t $type"
+ logger => $logger,
+ command => "df -P -k -t $type",
+ type => $type
);
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Drives.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Drives.pm
index 949d020..d798a5e 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Drives.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Drives.pm
@@ -25,8 +25,9 @@ sub doInventory {
my @filesystems;
foreach my $type (@types) {
push @filesystems, getFilesystemsFromDf(
- logger => $logger,
- command => "df -P -k -t $type"
+ logger => $logger,
+ command => "df -P -k -t $type",
+ type => $type,
);
}
diff --git a/lib/FusionInventory/Agent/Tools/Unix.pm b/lib/FusionInventory/Agent/Tools/Unix.pm
index 115e1a6..428f54f 100644
--- a/lib/FusionInventory/Agent/Tools/Unix.pm
+++ b/lib/FusionInventory/Agent/Tools/Unix.pm
@@ -146,7 +146,8 @@ sub _parseDhcpLeaseFile {
}
sub getFilesystemsFromDf {
- my $handle = getFileHandle(@_);
+ my %params = (@_);
+ my $handle = getFileHandle(%params);
my @filesystems;
@@ -161,7 +162,9 @@ sub getFilesystemsFromDf {
chomp $line;
my @infos = split(/\s+/, $line);
- # depending of the number of colums, information index change
+ # depending on the df implementation, and how it is called
+ # the filesystem type may appear as second colum, or be missing
+ # in the second case, it has to be given by caller
my ($filesystem, $total, $free, $type);
if ($headers[1] eq 'Type') {
$filesystem = $infos[1];
@@ -169,6 +172,7 @@ sub getFilesystemsFromDf {
$free = $infos[4];
$type = $infos[6];
} else {
+ $filesystem = $params{type},
$total = $infos[1];
$free = $infos[3];
$type = $infos[5];
================================================================
Commit: d3b3c3c36d3b9291296353e915f2922d6e684f5c
https://github.com/fusinv/fusioninventory-agent/commit/d3b3c3c36d3b9291296353e915f2922d6e684f5c
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2011-12-18 (Sun, 18 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Server.pm
Log Message:
-----------
Merge remote branch 'origin/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/HTTP/Server.pm b/lib/FusionInventory/Agent/HTTP/Server.pm
index 44dc263..139744f 100644
--- a/lib/FusionInventory/Agent/HTTP/Server.pm
+++ b/lib/FusionInventory/Agent/HTTP/Server.pm
@@ -148,29 +148,24 @@ sub _handle_deploy {
my $logger = $self->{logger};
- return unless $sha512 =~ /^..(.{6})/;
- my $name = $1;
- my $path;
+ return unless $sha512 =~ /^(.)(.)(.{6})/;
+ my $subFilePath = $1.'/'.$2.'/'.$3;
- File::Find->require();
+ File::Glob->require();
Digest::SHA->require();
- foreach my $target ($self->{scheduler}->getTargets()) {
- my $shareDir = $target->{storage}->getDirectory()."/deploy/fileparts/shared";
- next unless -d $shareDir;
-
- my $wanted = sub {
- return unless -f $_;
- return unless basename($_) eq $name;
+ my $path;
+ LOOP: foreach my $target ($self->{scheduler}->getTargets()) {
+ foreach (File::Glob::glob($target->{storage}->getDirectory()."/deploy/fileparts/shared/*")) {
+ next unless -f $_.'/'.$subFilePath;
my $sha = Digest::SHA->new('512');
- $sha->addfile($File::Find::name, 'b');
- return unless $sha->hexdigest eq $sha512;
+ $sha->addfile($_.'/'.$subFilePath, 'b');
+ next unless $sha->hexdigest eq $sha512;
- $path = $File::Find::name;
- };
- File::Find::find({ wanted => $wanted, no_chdir => 1 }, $shareDir);
- last if $path;
+ $path = $_.'/'.$subFilePath;
+ last LOOP;
+ }
}
if ($path) {
$logger->debug($log_prefix . "file $sha512 found");
================================================================
Commit: 331f2de03b4dd97c1a7eafaa3a5b5dd3b0c6b8cd
https://github.com/fusinv/fusioninventory-agent/commit/331f2de03b4dd97c1a7eafaa3a5b5dd3b0c6b8cd
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-19 (Mon, 19 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Client.pm
Log Message:
-----------
verify_hostname => 0 may also by required with LWP5
LWP5 + IO::Socket::SSL require the verify_hostname => 0 too,
to avoid breakage, we run it in an eval()
diff --git a/lib/FusionInventory/Agent/HTTP/Client.pm b/lib/FusionInventory/Agent/HTTP/Client.pm
index 2a3eb72..ef08294 100644
--- a/lib/FusionInventory/Agent/HTTP/Client.pm
+++ b/lib/FusionInventory/Agent/HTTP/Client.pm
@@ -129,10 +129,10 @@ sub _setSSLOptions {
# SSL handling
if ($self->{'no_ssl_check'}) {
- if ($LWP::VERSION >= 6) {
- # LWP6 default behavior is to check the SSL hostname
- $self->{ua}->ssl_opts(verify_hostname => 0);
- }
+# IO::Socket::SSL default behavior is to check the SSL hostname
+# We run it in a eval to avoid break if the ssl_opts doesn't work on some
+# old LWP
+ eval { $self->{ua}->ssl_opts(verify_hostname => 0); }
} else {
# only IO::Socket::SSL can perform full server certificate validation,
# Net::SSL is only able to check certification authority, and not
================================================================
Commit: 614bafad8cde5af1d0e08f88196c99db939077f7
https://github.com/fusinv/fusioninventory-agent/commit/614bafad8cde5af1d0e08f88196c99db939077f7
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-20 (Tue, 20 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Battery.pm
Log Message:
-----------
avoid a warning if there is no batterie
closes: #1402
Reported-by: David Durieux <d.durieux at siprossii.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Battery.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Battery.pm
index a3c0ef6..dc55899 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Battery.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Battery.pm
@@ -18,6 +18,8 @@ sub doInventory {
my $battery = _getBattery(logger => $logger);
+ return unless $battery;
+
$inventory->addEntry(
section => 'BATTERIES',
entry => $battery
================================================================
Commit: 5e9ddf1789eb3a09265f3c179e68beab8d7d0775
https://github.com/fusinv/fusioninventory-agent/commit/5e9ddf1789eb3a09265f3c179e68beab8d7d0775
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-20 (Tue, 20 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
fix: missing monitor on Windows
closes: #1400
Reported-by: David Durieux <d.durieux at siprossii.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 71f1606..23ed66d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -105,17 +105,19 @@ sub _getScreensFromWindows {
}
# The generic Win32_DesktopMonitor class, the second screen will be missing
- foreach my $objItem (getWmiProperties('Win32_DesktopMonitor', qw/
+ foreach my $object (FusionInventory::Agent::Tools::Win32::getWmiObjects(
+ class => 'Win32_DesktopMonitor',
+ properties => [ qw/
Caption MonitorManufacturer MonitorType PNPDeviceID
- /)) {
+ / ] )) {
- next unless $objItem->{"Availability"};
- next unless $objItem->{"PNPDeviceID"};
- next unless $objItem->{"Availability"} == 3;
- my $name = $objItem->{"Caption"};
+ next unless $object->{"Availability"};
+ next unless $object->{"PNPDeviceID"};
+ next unless $object->{"Availability"} == 3;
+ my $name = $object->{"Caption"};
- $devices->{lc($objItem->{"PNPDeviceID"})} = { name => $name, type => $objItem->{MonitorType}, manufacturer => $objItem->{MonitorManufacturer}, caption => $objItem->{Caption} };
+ $devices->{lc($object->{"PNPDeviceID"})} = { name => $name, type => $object->{MonitorType}, manufacturer => $object->{MonitorManufacturer}, caption => $object->{Caption} };
}
================================================================
Commit: 008d4a0b6e89002314dfbe5bd123cfbca8724922
https://github.com/fusinv/fusioninventory-agent/commit/008d4a0b6e89002314dfbe5bd123cfbca8724922
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-20 (Tue, 20 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
Log Message:
-----------
bios: avoid a warning if a key is undef
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
index 2dca55b..b8e2f95 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
@@ -82,7 +82,9 @@ sub doInventory {
}
- $bios->{$_} =~ s/\s+$// foreach (keys %bios);
+ foreach (keys %$bios) {
+ $bios->{$_} =~ s/\s+$// if $bios->{$_};
+ }
$inventory->setBios($bios);
================================================================
Commit: 096cc919ed0f7c3429c6629cb996362a5a022865
https://github.com/fusinv/fusioninventory-agent/commit/096cc919ed0f7c3429c6629cb996362a5a022865
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-20 (Tue, 20 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm
Log Message:
-----------
avoid a warning
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm
index 0d12f8c..ebcdbeb 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm
@@ -51,7 +51,7 @@ sub doInventory {
}
# avoid duplicates
- next if $seen->{$antivirus->{NAME}}->{$antivirus->{VERSION}}++;
+ next if $seen->{$antivirus->{NAME}}->{$antivirus->{VERSION}||'_undef_'}++;
$inventory->addEntry(
section => 'ANTIVIRUS',
================================================================
Commit: 0c812544694849ff24b59ee6e8500eebd5fa3568
https://github.com/fusinv/fusioninventory-agent/commit/0c812544694849ff24b59ee6e8500eebd5fa3568
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-20 (Tue, 20 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
Log Message:
-----------
avoid a warning if software version is undef
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index 25656db..64651a0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -133,7 +133,7 @@ sub _getSoftwares {
$software->{VERSION} =~ s/[\000-\037].*// if $software->{VERSION};
# avoid duplicates
- next if $seen->{$software->{NAME}}->{$software->{VERSION}}++;
+ next if $seen->{$software->{NAME}}->{$software->{VERSION} || '_undef_'}++;
push @softwares, $software;
}
================================================================
Commit: 919f0831f1a98f4cfa2e2e4611f3d05bb5bff0c9
https://github.com/fusinv/fusioninventory-agent/commit/919f0831f1a98f4cfa2e2e4611f3d05bb5bff0c9
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2011-12-20 (Tue, 20 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
Log Message:
-----------
fix: use dmidecode to collect CPU information
closes: #1398
Reported-by: David Durieux <d.durieux at siprossii.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
index 0a38bab..a086573 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
@@ -32,6 +32,8 @@ sub doInventory {
my $id;
my $speed;
+ my @dmidecodeCpu = getCpusFromDmidecode();
+
my $vmsystem;
my $cpuId = 0;
@@ -49,12 +51,15 @@ sub doInventory {
);
# my $cache = $object->{L2CacheSize}+$object->{L3CacheSize};
- my $core = $object->{NumberOfCores};
+ my $core = $dmidecodeCpu[$cpuId]->{CORE} || $object->{NumberOfCores};
+ my $thread = $dmidecodeCpu[$cpuId]->{THREAD};
my $description = $info->{Identifier};
my $name = $info->{ProcessorNameString};
my $manufacturer = $info->{VendorIdentifier};
- my $id = $object->{ProcessorId};
- my $speed = $object->{MaxClockSpeed};
+ my $id = $dmidecodeCpu[$cpuId]->{ID} || $object->{ProcessorId};
+ my $speed = $dmidecodeCpu[$cpuId]->{SPEED} || $object->{MaxClockSpeed};
+ my $serial = $dmidecodeCpu[$cpuId]->{SERIAL};
+
# Some information are missing on Win2000
if (!$name) {
@@ -93,6 +98,7 @@ sub doInventory {
section => 'CPUS',
entry => {
CORE => $core,
+ THREAD => $thread,
DESCRIPTION => $description,
NAME => $name,
MANUFACTURER => $manufacturer,
================================================================
Commit: f5d8222211bbf1c8cf308b6cc709e97bc33132ed
https://github.com/fusinv/fusioninventory-agent/commit/f5d8222211bbf1c8cf308b6cc709e97bc33132ed
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2011-12-20 (Tue, 20 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Client.pm
M lib/FusionInventory/Agent/HTTP/Server.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Drives.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Battery.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Users.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Drives.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
M lib/FusionInventory/Agent/Tools/Unix.pm
Log Message:
-----------
Merge remote-tracking branch 'forge/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/HTTP/Client.pm b/lib/FusionInventory/Agent/HTTP/Client.pm
index eb26736..bd782a8 100644
--- a/lib/FusionInventory/Agent/HTTP/Client.pm
+++ b/lib/FusionInventory/Agent/HTTP/Client.pm
@@ -129,10 +129,10 @@ sub _setSSLOptions {
# SSL handling
if ($self->{'no_ssl_check'}) {
- if ($LWP::VERSION >= 6) {
- # LWP6 default behavior is to check the SSL hostname
- $self->{ua}->ssl_opts(verify_hostname => 0);
- }
+# IO::Socket::SSL default behavior is to check the SSL hostname
+# We run it in a eval to avoid break if the ssl_opts doesn't work on some
+# old LWP
+ eval { $self->{ua}->ssl_opts(verify_hostname => 0); }
} else {
# only IO::Socket::SSL can perform full server certificate validation,
# Net::SSL is only able to check certification authority, and not
diff --git a/lib/FusionInventory/Agent/HTTP/Server.pm b/lib/FusionInventory/Agent/HTTP/Server.pm
index 44dc263..139744f 100644
--- a/lib/FusionInventory/Agent/HTTP/Server.pm
+++ b/lib/FusionInventory/Agent/HTTP/Server.pm
@@ -148,29 +148,24 @@ sub _handle_deploy {
my $logger = $self->{logger};
- return unless $sha512 =~ /^..(.{6})/;
- my $name = $1;
- my $path;
+ return unless $sha512 =~ /^(.)(.)(.{6})/;
+ my $subFilePath = $1.'/'.$2.'/'.$3;
- File::Find->require();
+ File::Glob->require();
Digest::SHA->require();
- foreach my $target ($self->{scheduler}->getTargets()) {
- my $shareDir = $target->{storage}->getDirectory()."/deploy/fileparts/shared";
- next unless -d $shareDir;
-
- my $wanted = sub {
- return unless -f $_;
- return unless basename($_) eq $name;
+ my $path;
+ LOOP: foreach my $target ($self->{scheduler}->getTargets()) {
+ foreach (File::Glob::glob($target->{storage}->getDirectory()."/deploy/fileparts/shared/*")) {
+ next unless -f $_.'/'.$subFilePath;
my $sha = Digest::SHA->new('512');
- $sha->addfile($File::Find::name, 'b');
- return unless $sha->hexdigest eq $sha512;
+ $sha->addfile($_.'/'.$subFilePath, 'b');
+ next unless $sha->hexdigest eq $sha512;
- $path = $File::Find::name;
- };
- File::Find::find({ wanted => $wanted, no_chdir => 1 }, $shareDir);
- last if $path;
+ $path = $_.'/'.$subFilePath;
+ last LOOP;
+ }
}
if ($path) {
$logger->debug($log_prefix . "file $sha512 found");
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Drives.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Drives.pm
index 094b7cd..9c64cb7 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Drives.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Drives.pm
@@ -25,8 +25,9 @@ sub doInventory {
my @filesystems;
foreach my $type (@types) {
push @filesystems, getFilesystemsFromDf(
- logger => $logger,
- command => "df -P -k -t $type"
+ logger => $logger,
+ command => "df -P -k -t $type",
+ type => $type
);
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
index 6e54649..2ca73af 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
@@ -39,9 +39,9 @@ sub _getPackagesListFromPkgInfo {
while (my $line = <$handle>) {
next unless $line =~ /^(\S+)-(\d+\S*)\s+(.*)/;
push @packages, {
- NAME => $1,
- VERSION => $2,
- DESCRIPTION => $3
+ NAME => $1,
+ VERSION => $2,
+ COMMENTS => $3
};
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Battery.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Battery.pm
index a3c0ef6..dc55899 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Battery.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Battery.pm
@@ -18,6 +18,8 @@ sub doInventory {
my $battery = _getBattery(logger => $logger);
+ return unless $battery;
+
$inventory->addEntry(
section => 'BATTERIES',
entry => $battery
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 71f1606..23ed66d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -105,17 +105,19 @@ sub _getScreensFromWindows {
}
# The generic Win32_DesktopMonitor class, the second screen will be missing
- foreach my $objItem (getWmiProperties('Win32_DesktopMonitor', qw/
+ foreach my $object (FusionInventory::Agent::Tools::Win32::getWmiObjects(
+ class => 'Win32_DesktopMonitor',
+ properties => [ qw/
Caption MonitorManufacturer MonitorType PNPDeviceID
- /)) {
+ / ] )) {
- next unless $objItem->{"Availability"};
- next unless $objItem->{"PNPDeviceID"};
- next unless $objItem->{"Availability"} == 3;
- my $name = $objItem->{"Caption"};
+ next unless $object->{"Availability"};
+ next unless $object->{"PNPDeviceID"};
+ next unless $object->{"Availability"} == 3;
+ my $name = $object->{"Caption"};
- $devices->{lc($objItem->{"PNPDeviceID"})} = { name => $name, type => $objItem->{MonitorType}, manufacturer => $objItem->{MonitorManufacturer}, caption => $objItem->{Caption} };
+ $devices->{lc($object->{"PNPDeviceID"})} = { name => $name, type => $object->{MonitorType}, manufacturer => $object->{MonitorManufacturer}, caption => $object->{Caption} };
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Users.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Users.pm
index fe84463..8c0817b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Users.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Users.pm
@@ -41,9 +41,9 @@ sub doInventory {
}
my ($lastUser, $lastDate);
- my $last = getFirstLine(command => 'last -R');
+ my $last = getFirstLine(command => 'last');
if ($last &&
- $last =~ /^(\S+) \s+ \S+ \s+ (\S+ \s+ \S+ \s+ \S+ \s+ \S+)/x
+ $last =~ /^(\S+) \s+ \S+ \s+ \S+ \s+ (\S+ \s+ \S+ \s+ \S+ \s+ \S+)/x
) {
$lastUser = $1;
$lastDate = $2;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Drives.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Drives.pm
index 949d020..d798a5e 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Drives.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Drives.pm
@@ -25,8 +25,9 @@ sub doInventory {
my @filesystems;
foreach my $type (@types) {
push @filesystems, getFilesystemsFromDf(
- logger => $logger,
- command => "df -P -k -t $type"
+ logger => $logger,
+ command => "df -P -k -t $type",
+ type => $type,
);
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm
index 0d12f8c..ebcdbeb 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm
@@ -51,7 +51,7 @@ sub doInventory {
}
# avoid duplicates
- next if $seen->{$antivirus->{NAME}}->{$antivirus->{VERSION}}++;
+ next if $seen->{$antivirus->{NAME}}->{$antivirus->{VERSION}||'_undef_'}++;
$inventory->addEntry(
section => 'ANTIVIRUS',
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
index 2dca55b..b8e2f95 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
@@ -82,7 +82,9 @@ sub doInventory {
}
- $bios->{$_} =~ s/\s+$// foreach (keys %bios);
+ foreach (keys %$bios) {
+ $bios->{$_} =~ s/\s+$// if $bios->{$_};
+ }
$inventory->setBios($bios);
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
index 0a38bab..a086573 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
@@ -32,6 +32,8 @@ sub doInventory {
my $id;
my $speed;
+ my @dmidecodeCpu = getCpusFromDmidecode();
+
my $vmsystem;
my $cpuId = 0;
@@ -49,12 +51,15 @@ sub doInventory {
);
# my $cache = $object->{L2CacheSize}+$object->{L3CacheSize};
- my $core = $object->{NumberOfCores};
+ my $core = $dmidecodeCpu[$cpuId]->{CORE} || $object->{NumberOfCores};
+ my $thread = $dmidecodeCpu[$cpuId]->{THREAD};
my $description = $info->{Identifier};
my $name = $info->{ProcessorNameString};
my $manufacturer = $info->{VendorIdentifier};
- my $id = $object->{ProcessorId};
- my $speed = $object->{MaxClockSpeed};
+ my $id = $dmidecodeCpu[$cpuId]->{ID} || $object->{ProcessorId};
+ my $speed = $dmidecodeCpu[$cpuId]->{SPEED} || $object->{MaxClockSpeed};
+ my $serial = $dmidecodeCpu[$cpuId]->{SERIAL};
+
# Some information are missing on Win2000
if (!$name) {
@@ -93,6 +98,7 @@ sub doInventory {
section => 'CPUS',
entry => {
CORE => $core,
+ THREAD => $thread,
DESCRIPTION => $description,
NAME => $name,
MANUFACTURER => $manufacturer,
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index 25656db..64651a0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -133,7 +133,7 @@ sub _getSoftwares {
$software->{VERSION} =~ s/[\000-\037].*// if $software->{VERSION};
# avoid duplicates
- next if $seen->{$software->{NAME}}->{$software->{VERSION}}++;
+ next if $seen->{$software->{NAME}}->{$software->{VERSION} || '_undef_'}++;
push @softwares, $software;
}
diff --git a/lib/FusionInventory/Agent/Tools/Unix.pm b/lib/FusionInventory/Agent/Tools/Unix.pm
index 115e1a6..428f54f 100644
--- a/lib/FusionInventory/Agent/Tools/Unix.pm
+++ b/lib/FusionInventory/Agent/Tools/Unix.pm
@@ -146,7 +146,8 @@ sub _parseDhcpLeaseFile {
}
sub getFilesystemsFromDf {
- my $handle = getFileHandle(@_);
+ my %params = (@_);
+ my $handle = getFileHandle(%params);
my @filesystems;
@@ -161,7 +162,9 @@ sub getFilesystemsFromDf {
chomp $line;
my @infos = split(/\s+/, $line);
- # depending of the number of colums, information index change
+ # depending on the df implementation, and how it is called
+ # the filesystem type may appear as second colum, or be missing
+ # in the second case, it has to be given by caller
my ($filesystem, $total, $free, $type);
if ($headers[1] eq 'Type') {
$filesystem = $infos[1];
@@ -169,6 +172,7 @@ sub getFilesystemsFromDf {
$free = $infos[4];
$type = $infos[6];
} else {
+ $filesystem = $params{type},
$total = $infos[1];
$free = $infos[3];
$type = $infos[5];
================================================================
Commit: 9f345fc20bd966a4a7094394ce482bbbe6d5373e
https://github.com/fusinv/fusioninventory-agent/commit/9f345fc20bd966a4a7094394ce482bbbe6d5373e
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2011-12-21 (Wed, 21 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Uptime.pm
Log Message:
-----------
no need to actually run sysctl to consider it usable
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Uptime.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Uptime.pm
index 1b5e7ad..120f99b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Uptime.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Uptime.pm
@@ -6,8 +6,7 @@ use warnings;
use FusionInventory::Agent::Tools;
sub isEnabled {
- my $boottime = getFirstLine(command => 'sysctl -n kern.boottime');
- return $boottime;
+ return canRun('sysctl');
}
sub doInventory {
================================================================
Commit: d7dfd63b2e77a3d97f5052df8d7cf6f332f34166
https://github.com/fusinv/fusioninventory-agent/commit/d7dfd63b2e77a3d97f5052df8d7cf6f332f34166
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2011-12-21 (Wed, 21 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Uptime.pm
Log Message:
-----------
honours BSD-specific output formats (fix #1215)
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Uptime.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Uptime.pm
index 120f99b..601b062 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Uptime.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Uptime.pm
@@ -22,10 +22,13 @@ sub doInventory {
}
sub _getUptime {
- my $boottime = getFirstMatch(
- pattern => qr/sec\s*=\s*(\d+)/,
- @_,
- );
+ my $line = getFirstLine(@_);
+
+ # the output of 'sysctl -n kern.boottime' differs between BSD flavours
+ my $boottime =
+ $line =~ /^(\d+)/ ? $1 : # OpenBSD format
+ $line =~ /sec = (\d+)/ ? $1 : # FreeBSD format
+ undef;
return unless $boottime;
my $uptime = $boottime - time();
================================================================
Commit: eb69507838484ec5b211c45d91c628dbf3a961a5
https://github.com/fusinv/fusioninventory-agent/commit/eb69507838484ec5b211c45d91c628dbf3a961a5
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2011-12-22 (Thu, 22 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages/Adaptec.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
Log Message:
-----------
use explicit iterator
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
index 8469882..de317fe 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
@@ -141,9 +141,9 @@ sub _getUevent {
return unless $handle;
my ($driver, $pcislot);
- while (<$handle>) {
- $driver = $1 if /^DRIVER=(\S+)/;
- $pcislot = $1 if /^PCI_SLOT_NAME=(\S+)/;
+ while (my $line = <$handle>) {
+ $driver = $1 if $line =~ /^DRIVER=(\S+)/;
+ $pcislot = $1 if $line =~ /^PCI_SLOT_NAME=(\S+)/;
}
close $handle;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages/Adaptec.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages/Adaptec.pm
index 355d48a..f171fc4 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages/Adaptec.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages/Adaptec.pm
@@ -56,8 +56,8 @@ sub _getDisksFromProc {
my $disk;
my $count = -1;
- while (<$handle>) {
- if (/^Host: (\w+)/) {
+ while (my $line = <$handle>) {
+ if ($line =~ /^Host: (\w+)/) {
$count++;
if ($1 eq $params{controller}) {
# that's the controller we're looking for
@@ -72,7 +72,7 @@ sub _getDisksFromProc {
}
}
- if (/Model:\s(\S+).*Rev:\s(\S+)/) {
+ if ($line =~ /Model:\s(\S+).*Rev:\s(\S+)/) {
next unless $disk;
$disk->{MODEL} = $1;
$disk->{FIRMWARE} = $2;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
index d50ec28..91a3aa0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
@@ -42,9 +42,9 @@ sub _getSlots4 {
my @slots;
- while (<$handle>) {
- next unless /pci/;
- my @pci = split(/ +/);
+ while (my $line = <$handle>) {
+ next unless $line =~ /pci/;
+ my @pci = split(/ +/, $line);
push @slots, {
DESCRIPTION => $pci[0] . " (" . $pci[1] . ")",
DESIGNATION => $pci[3],
================================================================
Commit: 9cf276e5ec889620fd562bfa8412a2f711c1dec1
https://github.com/fusinv/fusioninventory-agent/commit/9cf276e5ec889620fd562bfa8412a2f711c1dec1
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2011-12-28 (Wed, 28 Dec 2011)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/LSB.pm
Log Message:
-----------
run lsb_release only once
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/LSB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/LSB.pm
index 604a0a5..4792d11 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/LSB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/LSB.pm
@@ -15,31 +15,30 @@ sub doInventory {
my $inventory = $params{inventory};
my $logger = $params{logger};
- my $release = getFirstMatch(
+ my $handle = getFileHandle(
logger => $logger,
- command => 'lsb_release -d',
- pattern => qr/Description:\s+(.+)/
+ command => 'lsb_release -a',
);
- # See: #1262
- $release =~ s/^Enterprise Linux Enterprise Linux/Oracle Linux/;
-
- my $linuxDistributionName;
- my $linuxDistributionVersion;
- # Redirect stderr to /dev/null to avoid "No LSB modules are available" message
- foreach (`lsb_release -a 2> /dev/null`) {
- $linuxDistributionName = $1 if /Distributor ID:\s+(.+)/;
- $linuxDistributionVersion = $1 if /Release:\s+(.+)/;
+ my ($name, $version, $description);
+ while (my $line = <$handle>) {
+ $name = $1 if $line =~ /^Distributor ID:\s+(.+)/;
+ $version = $1 if $line =~ /^Release:\s+(.+)/;
+ $description = $1 if $line =~ /^Description:\s+(.+)/;
}
+ close $handle;
+
+ # See: #1262
+ $description =~ s/^Enterprise Linux Enterprise Linux/Oracle Linux/;
$inventory->setHardware({
- OSNAME => $release,
+ OSNAME => $description,
});
$inventory->setOperatingSystem({
- NAME => $linuxDistributionName,
- VERSION => $linuxDistributionVersion,
- FULL_NAME => $release
+ NAME => $name,
+ VERSION => $version,
+ FULL_NAME => $description
});
}
================================================================
Commit: cc231cb993ad6ff00b427004e36562ad5beb85e7
https://github.com/fusinv/fusioninventory-agent/commit/cc231cb993ad6ff00b427004e36562ad5beb85e7
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-02 (Mon, 02 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
cosmetics (indendation)
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 23ed66d..37f107b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -77,10 +77,10 @@ sub _getScreensFromWindows {
require FusionInventory::Agent::Tools::Win32;
require Win32::TieRegistry;
Win32::TieRegistry->import(
- Delimiter => '/',
- ArrayValues => 0,
- TiedRef => \$Registry
- );
+ Delimiter => '/',
+ ArrayValues => 0,
+ TiedRef => \$Registry
+ );
};
if ($EVAL_ERROR) {
print "Failed to load Win32::OLE and Win32::TieRegistry\n";
@@ -90,13 +90,14 @@ sub _getScreensFromWindows {
use constant wbemFlagReturnImmediately => 0x10;
use constant wbemFlagForwardOnly => 0x20;
-# Vista and upper, able to get the second screen
+ # Vista and upper, able to get the second screen
my $WMIServices = Win32::OLE->GetObject(
- "winmgmts:{impersonationLevel=impersonate,authenticationLevel=Pkt}!//./root/wmi" );
+ "winmgmts:{impersonationLevel=impersonate,authenticationLevel=Pkt}!//./root/wmi"
+ );
- foreach my $properties ( Win32::OLE::in( $WMIServices->InstancesOf(
- "WMIMonitorID" ) ) )
- {
+ foreach my $properties (Win32::OLE::in($WMIServices->InstancesOf(
+ "WMIMonitorID"
+ ))) {
next unless $properties->{InstanceName};
my $PNPDeviceID = $properties->{InstanceName};
@@ -106,18 +107,23 @@ sub _getScreensFromWindows {
# The generic Win32_DesktopMonitor class, the second screen will be missing
foreach my $object (FusionInventory::Agent::Tools::Win32::getWmiObjects(
- class => 'Win32_DesktopMonitor',
- properties => [ qw/
- Caption MonitorManufacturer MonitorType PNPDeviceID
- / ] )) {
-
+ class => 'Win32_DesktopMonitor',
+ properties => [ qw/
+ Caption MonitorManufacturer MonitorType PNPDeviceID
+ / ]
+ )) {
next unless $object->{"Availability"};
next unless $object->{"PNPDeviceID"};
next unless $object->{"Availability"} == 3;
my $name = $object->{"Caption"};
- $devices->{lc($object->{"PNPDeviceID"})} = { name => $name, type => $object->{MonitorType}, manufacturer => $object->{MonitorManufacturer}, caption => $object->{Caption} };
+ $devices->{lc($object->{"PNPDeviceID"})} = {
+ name => $name,
+ type => $object->{MonitorType},
+ manufacturer => $object->{MonitorManufacturer},
+ caption => $object->{Caption}
+ };
}
@@ -140,8 +146,8 @@ sub _getScreensFromWindows {
# Win32-specifics constants can not be loaded on non-Windows OS
no strict 'subs';
$machKey = $Registry->Open('LMachine', {
- Access => $access
- } ) or $logger->fault("Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR");
+ Access => $access
+ } ) or $logger->fault("Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR");
}
================================================================
Commit: 3d65a28cc768c80baab8d763509ba1ebd373e59b
https://github.com/fusinv/fusioninventory-agent/commit/3d65a28cc768c80baab8d763509ba1ebd373e59b
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-02 (Mon, 02 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
useless quotes
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 37f107b..e084653 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -113,12 +113,12 @@ sub _getScreensFromWindows {
/ ]
)) {
- next unless $object->{"Availability"};
- next unless $object->{"PNPDeviceID"};
- next unless $object->{"Availability"} == 3;
- my $name = $object->{"Caption"};
+ next unless $object->{Availability};
+ next unless $object->{PNPDeviceID};
+ next unless $object->{Availability} == 3;
+ my $name = $object->{Caption};
- $devices->{lc($object->{"PNPDeviceID"})} = {
+ $devices->{lc($object->{PNPDeviceID})} = {
name => $name,
type => $object->{MonitorType},
manufacturer => $object->{MonitorManufacturer},
================================================================
Commit: 07b9345b67d1cf1cdf0c6159ef1d35b705a58731
https://github.com/fusinv/fusioninventory-agent/commit/07b9345b67d1cf1cdf0c6159ef1d35b705a58731
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-02 (Mon, 02 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Memory.pm
Log Message:
-----------
no VERSION attribute for memories (fix #1301)
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Memory.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Memory.pm
index 1e6992f..50b141f 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Memory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Memory.pm
@@ -77,7 +77,6 @@ sub _getMemories {
TYPE => $info->{PN},
CAPTION => 'Slot ' . $info->{YL},
SERIALNUMBER=> $info->{SN},
- VERSION => $info->{VK},
NUMSLOTS => $numslots++
};
}
================================================================
Commit: 562e8164e2dac793b7947e75369139c135df475e
https://github.com/fusinv/fusioninventory-agent/commit/562e8164e2dac793b7947e75369139c135df475e
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-01-04 (Wed, 04 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/OS/Generic/Screen.pm
Log Message:
-----------
HSD manufacturer code: Hannspree Inc
https://bugs.launchpad.net/ocsinventory-windows-agent/+bug/911696
diff --git a/lib/FusionInventory/Agent/Task/Inventory/OS/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/OS/Generic/Screen.pm
index bfbdd42..65044a7 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/OS/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/OS/Generic/Screen.pm
@@ -683,6 +683,7 @@ sub _getManifacturerFromCode {
"IFS" => "InFocus",
"BOE" => "BOE Display Technology",
"IQT" => "Hyundai",
+ "HSD" => "Hannspree Inc"
};
================================================================
Commit: c0474f5fb56984d6a9ed425617c295e8b75c9c10
https://github.com/fusinv/fusioninventory-agent/commit/c0474f5fb56984d6a9ed425617c295e8b75c9c10
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-01-04 (Wed, 04 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Screen.pm
Log Message:
-----------
Merge branch '2.1.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Tools/Screen.pm b/lib/FusionInventory/Agent/Tools/Screen.pm
index af81348..6c4c320 100644
--- a/lib/FusionInventory/Agent/Tools/Screen.pm
+++ b/lib/FusionInventory/Agent/Tools/Screen.pm
@@ -500,6 +500,7 @@ sub getManufacturerFromCode {
"IFS" => "InFocus",
"BOE" => "BOE Display Technology",
"IQT" => "Hyundai",
+ "HSD" => "Hannspree Inc"
};
================================================================
Commit: c4566b306bedce28720bfacfe97da9cfbce0c626
https://github.com/fusinv/fusioninventory-agent/commit/c4566b306bedce28720bfacfe97da9cfbce0c626
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-05 (Thu, 05 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Screen.pm
Log Message:
-----------
Merge remote-tracking branch 'forge/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Tools/Screen.pm b/lib/FusionInventory/Agent/Tools/Screen.pm
index af81348..6c4c320 100644
--- a/lib/FusionInventory/Agent/Tools/Screen.pm
+++ b/lib/FusionInventory/Agent/Tools/Screen.pm
@@ -500,6 +500,7 @@ sub getManufacturerFromCode {
"IFS" => "InFocus",
"BOE" => "BOE Display Technology",
"IQT" => "Hyundai",
+ "HSD" => "Hannspree Inc"
};
================================================================
Commit: 16c73051d3beef50b15c763163c716c4d6d341b2
https://github.com/fusinv/fusioninventory-agent/commit/16c73051d3beef50b15c763163c716c4d6d341b2
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-05 (Thu, 05 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools.pm
Log Message:
-----------
partly revert commit #2df3c4f
diff --git a/lib/FusionInventory/Agent/Tools.pm b/lib/FusionInventory/Agent/Tools.pm
index 9bf640a..7ff5ed8 100644
--- a/lib/FusionInventory/Agent/Tools.pm
+++ b/lib/FusionInventory/Agent/Tools.pm
@@ -47,6 +47,13 @@ our @EXPORT = qw(
my $nowhere = $OSNAME eq 'MSWin32' ? 'nul' : '/dev/null';
+# this trigger some errors on Perl 5.12/Win32:
+# Anonymous function called in forbidden scalar context
+if ($OSNAME ne 'MSWin32') {
+ memoize('canRun');
+ memoize('canRead');
+}
+
sub getFormatedLocalTime {
my ($time) = @_;
================================================================
Commit: a34981178ab9ee55e756616413cfa29e9199fc91
https://github.com/fusinv/fusioninventory-agent/commit/a34981178ab9ee55e756616413cfa29e9199fc91
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-06 (Fri, 06 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
Log Message:
-----------
no need to read the release file twice
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
index 303d1f4..1794eba 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
@@ -70,11 +70,13 @@ sub doInventory {
my $distribution = first { -f $_->[0] } @distributions;
return unless $distribution;
+ my $data = _getDistroData($distribution);
+
$inventory->setHardware({
- OSNAME => _findRelease($distribution),
+ OSNAME => $data->{FULL_NAME }
});
- $inventory->setOperatingSystem(_getDistroData($distribution));
+ $inventory->setOperatingSystem($data);
}
sub _getDistroData {
@@ -104,15 +106,4 @@ sub _getDistroData {
return $data;
}
-sub _findRelease {
- my ($distribution) = @_;
-
- my $template = $distribution->[3];
-
- my $line = getFirstLine(file => $distribution->[0]);
- my $release = sprintf $template, $line;
-
- return $release;
-}
-
1;
================================================================
Commit: 99662bb42fe30b8a9911e1157cf71b5ec33a775f
https://github.com/fusinv/fusioninventory-agent/commit/99662bb42fe30b8a9911e1157cf71b5ec33a775f
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-06 (Fri, 06 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
Log Message:
-----------
don't forget to import List::Util
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
index 1794eba..f4d7d78 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
@@ -6,6 +6,7 @@ use warnings;
use English qw(-no_match_vars);
use FusionInventory::Agent::Tools;
+use List::Util qw(first);
# This array contains four items for each distribution:
# - release file
================================================================
Commit: 19bfcf71c4f2ee8e6478d940abb0c25362283b65
https://github.com/fusinv/fusioninventory-agent/commit/19bfcf71c4f2ee8e6478d940abb0c25362283b65
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-06 (Fri, 06 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
Log Message:
-----------
arch-linux has an empty release file (bug #1286)
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
index f4d7d78..207a500 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
@@ -17,7 +17,7 @@ my @distributions = (
# vmware-release contains something like "VMware ESX Server 3" or "VMware ESX 4.0 (Kandinsky)"
[ '/etc/vmware-release', 'VMWare', '([\d.]+)', '%s' ],
- [ '/etc/arch-release', 'ArchLinux', '(.*)', 'ArchLinux %s' ],
+ [ '/etc/arch-release', 'ArchLinux', '(.*)', 'ArchLinux' ],
[ '/etc/debian_version', 'Debian', '(.*)', 'Debian GNU/Linux %s'],
@@ -88,8 +88,14 @@ sub _getDistroData {
my $template = $distribution->[3];
my $line = getFirstLine(file => $distribution->[0]);
- my $release = sprintf $template, $line;
- my ($version) = $line =~ /$regexp/;
+ # Arch Linux has an empty release file
+ my ($release, $version);
+ if ($line) {
+ $release = sprintf $template, $line;
+ ($version) = $line =~ /$regexp/;
+ } else {
+ $release = $template;
+ }
my $data = {
NAME => $name,
================================================================
Commit: ee9cd66dbd732d7a087f0b1bc6a8e25c5fed0c0e
https://github.com/fusinv/fusioninventory-agent/commit/ee9cd66dbd732d7a087f0b1bc6a8e25c5fed0c0e
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-06 (Fri, 06 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Networks.pm
Log Message:
-----------
complete list of interfaces found with lscfg with iconfig -l output (bug #1326)
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Networks.pm
index dee026f..5c1518c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Networks.pm
@@ -41,11 +41,17 @@ sub _getInterfaces {
my $logger = $params{logger};
+ # get a first list of interfaces objects from lscfg
my @interfaces = _parseLscfg(
command => 'lscfg -v -l en*',
logger => $logger
);
+ # complete with empty interfaces objects from ifconfig
+ push @interfaces,
+ map { { DESCRIPTION => $_ } }
+ split(/ /, getFirstLine(command => 'ifconfig -l'));
+
foreach my $interface (@interfaces) {
my $handle = getFileHandle(
command => "lsattr -E -l $interface->{DESCRIPTION}",
================================================================
Commit: 633a4d2b7e7ce572882c97ea332d2d1da57c63bc
https://github.com/fusinv/fusioninventory-agent/commit/633a4d2b7e7ce572882c97ea332d2d1da57c63bc
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-06 (Fri, 06 Jan 2012)
Changed paths:
M t/inventory/bsd/softwares.t
Log Message:
-----------
fix identation
diff --git a/t/inventory/bsd/softwares.t b/t/inventory/bsd/softwares.t
index 3f1d690..474a827 100755
--- a/t/inventory/bsd/softwares.t
+++ b/t/inventory/bsd/softwares.t
@@ -10,183 +10,182 @@ use FusionInventory::Agent::Task::Inventory::Input::BSD::Softwares;
my %pkg_info_tests = (
'sample1' => [
{
- 'NAME' => 'GeoIP',
- 'DESCRIPTION' => 'Find the country that any IP address or hostname originates',
- 'VERSION' => '1.4.8_1'
+ NAME => 'GeoIP',
+ DESCRIPTION => 'Find the country that any IP address or hostname originates',
+ VERSION => '1.4.8_1'
},
{
- 'NAME' => 'ImageMagick',
- 'DESCRIPTION' => 'Image processing tools',
- 'VERSION' => '6.7.0.10_1'
+ NAME => 'ImageMagick',
+ DESCRIPTION => 'Image processing tools',
+ VERSION => '6.7.0.10_1'
},
{
- 'NAME' => 'ORBit2',
- 'DESCRIPTION' => 'High-performance CORBA ORB with support for the C language',
- 'VERSION' => '2.14.19'
+ NAME => 'ORBit2',
+ DESCRIPTION => 'High-performance CORBA ORB with support for the C language',
+ VERSION => '2.14.19'
},
{
- 'NAME' => 'Ocsinventory-Agent',
- 'DESCRIPTION' => 'Keep track of the computers configuration and software',
- 'VERSION' => '1.1.2.1_1,1'
+ NAME => 'Ocsinventory-Agent',
+ DESCRIPTION => 'Keep track of the computers configuration and software',
+ VERSION => '1.1.2.1_1,1'
},
{
- 'NAME' => 'Ocsinventory-Agent',
- 'DESCRIPTION' => 'Keep track of the computers configuration and software',
- 'VERSION' => '2.0,1'
+ NAME => 'Ocsinventory-Agent',
+ DESCRIPTION => 'Keep track of the computers configuration and software',
+ VERSION => '2.0,1'
},
{
- 'NAME' => 'OpenEXR',
- 'DESCRIPTION' => 'A high dynamic-range (HDR) image file format',
- 'VERSION' => '1.6.1_3'
+ NAME => 'OpenEXR',
+ DESCRIPTION => 'A high dynamic-range (HDR) image file format',
+ VERSION => '1.6.1_3'
},
{
- 'NAME' => 'a2ps-a4',
- 'DESCRIPTION' => 'Formats an ascii file for printing on a postscript printer',
- 'VERSION' => '4.13b_4'
+ NAME => 'a2ps-a4',
+ DESCRIPTION => 'Formats an ascii file for printing on a postscript printer',
+ VERSION => '4.13b_4'
},
{
- 'NAME' => 'aalib',
- 'DESCRIPTION' => 'An ascii art library',
- 'VERSION' => '1.4.r5_6'
+ NAME => 'aalib',
+ DESCRIPTION => 'An ascii art library',
+ VERSION => '1.4.r5_6'
},
{
- 'NAME' => 'acidrip',
- 'DESCRIPTION' => 'GTK2::Perl wrapper for MPlayer and MEncoder for ripping DVD',
- 'VERSION' => '0.14_8'
+ NAME => 'acidrip',
+ DESCRIPTION => 'GTK2::Perl wrapper for MPlayer and MEncoder for ripping DVD',
+ VERSION => '0.14_8'
},
{
- 'NAME' => 'acroread8',
- 'DESCRIPTION' => 'Adobe Reader for view, print, and search PDF documents (ENU',
- 'VERSION' => '8.1.7_3'
+ NAME => 'acroread8',
+ DESCRIPTION => 'Adobe Reader for view, print, and search PDF documents (ENU',
+ VERSION => '8.1.7_3'
},
{
- 'NAME' => 'acroreadwrapper',
- 'DESCRIPTION' => 'Wrapper script for Adobe Reader',
- 'VERSION' => '0.0.20110920'
+ NAME => 'acroreadwrapper',
+ DESCRIPTION => 'Wrapper script for Adobe Reader',
+ VERSION => '0.0.20110920'
},
{
- 'NAME' => 'alsa-lib',
- 'DESCRIPTION' => 'ALSA compatibility library',
- 'VERSION' => '1.0.23'
+ NAME => 'alsa-lib',
+ DESCRIPTION => 'ALSA compatibility library',
+ VERSION => '1.0.23'
},
{
- 'NAME' => 'ap22-mod_perl2',
- 'DESCRIPTION' => 'Embeds a Perl interpreter in the Apache2 server',
- 'VERSION' => '2.0.5_1,3'
+ NAME => 'ap22-mod_perl2',
+ DESCRIPTION => 'Embeds a Perl interpreter in the Apache2 server',
+ VERSION => '2.0.5_1,3'
},
{
- 'NAME' => 'apache',
- 'DESCRIPTION' => 'Version 2.2.x of Apache web server with prefork MPM.',
- 'VERSION' => '2.2.19'
+ NAME => 'apache',
+ DESCRIPTION => 'Version 2.2.x of Apache web server with prefork MPM.',
+ VERSION => '2.2.19'
},
{
- 'NAME' => 'apache-ant',
- 'DESCRIPTION' => 'Java- and XML-based build tool, conceptually similar to mak',
- 'VERSION' => '1.8.2'
+ NAME => 'apache-ant',
+ DESCRIPTION => 'Java- and XML-based build tool, conceptually similar to mak',
+ VERSION => '1.8.2'
},
{
- 'NAME' => 'appres',
- 'DESCRIPTION' => 'Program to list application\'s resources',
- 'VERSION' => '1.0.3'
+ NAME => 'appres',
+ DESCRIPTION => 'Program to list application\'s resources',
+ VERSION => '1.0.3'
},
{
- 'NAME' => 'apr-ipv6-devrandom-gdbm-db42',
- 'DESCRIPTION' => 'Apache Portability Library',
- 'VERSION' => '1.4.5.1.3.12'
+ NAME => 'apr-ipv6-devrandom-gdbm-db42',
+ DESCRIPTION => 'Apache Portability Library',
+ VERSION => '1.4.5.1.3.12'
},
{
- 'NAME' => 'aspell',
- 'DESCRIPTION' => 'Spelling checker with better suggestion logic than ispell',
- 'VERSION' => '0.60.6.1'
+ NAME => 'aspell',
+ DESCRIPTION => 'Spelling checker with better suggestion logic than ispell',
+ VERSION => '0.60.6.1'
},
{
- 'NAME' => 'atk',
- 'DESCRIPTION' => 'A GNOME accessibility toolkit (ATK)',
- 'VERSION' => '2.0.1'
+ NAME => 'atk',
+ DESCRIPTION => 'A GNOME accessibility toolkit (ATK)',
+ VERSION => '2.0.1'
},
{
- 'NAME' => 'atkmm',
- 'DESCRIPTION' => 'C++ wrapper for ATK API library',
- 'VERSION' => '2.22.5'
+ NAME => 'atkmm',
+ DESCRIPTION => 'C++ wrapper for ATK API library',
+ VERSION => '2.22.5'
},
{
- 'NAME' => 'attica',
- 'DESCRIPTION' => 'Collaboration Services API library',
- 'VERSION' => '0.2.80,1'
+ NAME => 'attica',
+ DESCRIPTION => 'Collaboration Services API library',
+ VERSION => '0.2.80,1'
},
{
- 'NAME' => 'atunes',
- 'DESCRIPTION' => 'A full-featured audio player and manager developed in Java',
- 'VERSION' => '2.0.1'
+ NAME => 'atunes',
+ DESCRIPTION => 'A full-featured audio player and manager developed in Java',
+ VERSION => '2.0.1'
},
{
- 'NAME' => 'audacity',
- 'DESCRIPTION' => 'Audacity is a GUI editor for digital audio waveforms',
- 'VERSION' => '1.2.4b_9'
+ NAME => 'audacity',
+ DESCRIPTION => 'Audacity is a GUI editor for digital audio waveforms',
+ VERSION => '1.2.4b_9'
},
{
- 'NAME' => 'autoconf',
- 'DESCRIPTION' => 'Automatically configure source code on many Un*x platforms ',
- 'VERSION' => '2.13.000227_6'
+ NAME => 'autoconf',
+ DESCRIPTION => 'Automatically configure source code on many Un*x platforms ',
+ VERSION => '2.13.000227_6'
},
{
- 'NAME' => 'autoconf',
- 'DESCRIPTION' => 'Automatically configure source code on many Un*x platforms ',
- 'VERSION' => '2.68'
+ NAME => 'autoconf',
+ DESCRIPTION => 'Automatically configure source code on many Un*x platforms ',
+ VERSION => '2.68'
},
{
- 'NAME' => 'autoconf-wrapper',
- 'DESCRIPTION' => 'Wrapper script for GNU autoconf',
- 'VERSION' => '20101119'
+ NAME => 'autoconf-wrapper',
+ DESCRIPTION => 'Wrapper script for GNU autoconf',
+ VERSION => '20101119'
},
{
- 'NAME' => 'automake',
- 'DESCRIPTION' => 'GNU Standards-compliant Makefile generator (1.11)',
- 'VERSION' => '1.11.1'
+ NAME => 'automake',
+ DESCRIPTION => 'GNU Standards-compliant Makefile generator (1.11)',
+ VERSION => '1.11.1'
},
{
- 'NAME' => 'automake',
- 'DESCRIPTION' => 'GNU Standards-compliant Makefile generator (1.4)',
- 'VERSION' => '1.4.6_6'
+ NAME => 'automake',
+ DESCRIPTION => 'GNU Standards-compliant Makefile generator (1.4)',
+ VERSION => '1.4.6_6'
},
{
- 'NAME' => 'automake-wrapper',
- 'DESCRIPTION' => 'Wrapper script for GNU automake',
- 'VERSION' => '20101119'
+ NAME => 'automake-wrapper',
+ DESCRIPTION => 'Wrapper script for GNU automake',
+ VERSION => '20101119'
},
{
- 'NAME' => 'automoc4',
- 'DESCRIPTION' => 'Automatic moc for Qt 4 packages',
- 'VERSION' => '0.9.88_1'
+ NAME => 'automoc4',
+ DESCRIPTION => 'Automatic moc for Qt 4 packages',
+ VERSION => '0.9.88_1'
},
{
- 'NAME' => 'avahi-app',
- 'DESCRIPTION' => 'Service discovery on a local network',
- 'VERSION' => '0.6.29'
+ NAME => 'avahi-app',
+ DESCRIPTION => 'Service discovery on a local network',
+ VERSION => '0.6.29'
},
{
- 'NAME' => 'b43-fwcutter',
- 'DESCRIPTION' => 'Extracts firmware for Broadcom Wireless adapters',
- 'VERSION' => '012'
+ NAME => 'b43-fwcutter',
+ DESCRIPTION => 'Extracts firmware for Broadcom Wireless adapters',
+ VERSION => '012'
},
{
- 'NAME' => 'babl',
- 'DESCRIPTION' => 'Dynamic pixel format conversion library',
- 'VERSION' => '0.1.4'
+ NAME => 'babl',
+ DESCRIPTION => 'Dynamic pixel format conversion library',
+ VERSION => '0.1.4'
},
{
- 'NAME' => 'bash',
- 'DESCRIPTION' => 'The GNU Project\'s Bourne Again SHell',
- 'VERSION' => '4.1.11'
+ NAME => 'bash',
+ DESCRIPTION => 'The GNU Project\'s Bourne Again SHell',
+ VERSION => '4.1.11'
}
]
);
plan tests => scalar keys %pkg_info_tests;
-use Data::Dumper;
foreach my $test (keys %pkg_info_tests) {
my $file = "resources/bsd/pkg_info/$test";
my $results = FusionInventory::Agent::Task::Inventory::Input::BSD::Softwares::_getPackagesListFromPkgInfo(file => $file);
- is_deeply($results, $pkg_info_tests{$test}, $test) or print Dumper($results);
+ is_deeply($results, $pkg_info_tests{$test}, $test);
}
================================================================
Commit: d256f0330022cf4f838106d632c5bb00accc7bb3
https://github.com/fusinv/fusioninventory-agent/commit/d256f0330022cf4f838106d632c5bb00accc7bb3
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-06 (Fri, 06 Jan 2012)
Changed paths:
M t/inventory/bsd/softwares.t
Log Message:
-----------
fix expected results
diff --git a/t/inventory/bsd/softwares.t b/t/inventory/bsd/softwares.t
index 474a827..2464a04 100755
--- a/t/inventory/bsd/softwares.t
+++ b/t/inventory/bsd/softwares.t
@@ -10,174 +10,174 @@ use FusionInventory::Agent::Task::Inventory::Input::BSD::Softwares;
my %pkg_info_tests = (
'sample1' => [
{
- NAME => 'GeoIP',
- DESCRIPTION => 'Find the country that any IP address or hostname originates',
- VERSION => '1.4.8_1'
+ NAME => 'GeoIP',
+ COMMENTS => 'Find the country that any IP address or hostname originates',
+ VERSION => '1.4.8_1'
},
{
- NAME => 'ImageMagick',
- DESCRIPTION => 'Image processing tools',
- VERSION => '6.7.0.10_1'
+ NAME => 'ImageMagick',
+ COMMENTS => 'Image processing tools',
+ VERSION => '6.7.0.10_1'
},
{
- NAME => 'ORBit2',
- DESCRIPTION => 'High-performance CORBA ORB with support for the C language',
- VERSION => '2.14.19'
+ NAME => 'ORBit2',
+ COMMENTS => 'High-performance CORBA ORB with support for the C language',
+ VERSION => '2.14.19'
},
{
- NAME => 'Ocsinventory-Agent',
- DESCRIPTION => 'Keep track of the computers configuration and software',
- VERSION => '1.1.2.1_1,1'
+ NAME => 'Ocsinventory-Agent',
+ COMMENTS => 'Keep track of the computers configuration and software',
+ VERSION => '1.1.2.1_1,1'
},
{
- NAME => 'Ocsinventory-Agent',
- DESCRIPTION => 'Keep track of the computers configuration and software',
- VERSION => '2.0,1'
+ NAME => 'Ocsinventory-Agent',
+ COMMENTS => 'Keep track of the computers configuration and software',
+ VERSION => '2.0,1'
},
{
- NAME => 'OpenEXR',
- DESCRIPTION => 'A high dynamic-range (HDR) image file format',
- VERSION => '1.6.1_3'
+ NAME => 'OpenEXR',
+ COMMENTS => 'A high dynamic-range (HDR) image file format',
+ VERSION => '1.6.1_3'
},
{
- NAME => 'a2ps-a4',
- DESCRIPTION => 'Formats an ascii file for printing on a postscript printer',
- VERSION => '4.13b_4'
+ NAME => 'a2ps-a4',
+ COMMENTS => 'Formats an ascii file for printing on a postscript printer',
+ VERSION => '4.13b_4'
},
{
- NAME => 'aalib',
- DESCRIPTION => 'An ascii art library',
- VERSION => '1.4.r5_6'
+ NAME => 'aalib',
+ COMMENTS => 'An ascii art library',
+ VERSION => '1.4.r5_6'
},
{
- NAME => 'acidrip',
- DESCRIPTION => 'GTK2::Perl wrapper for MPlayer and MEncoder for ripping DVD',
- VERSION => '0.14_8'
+ NAME => 'acidrip',
+ COMMENTS => 'GTK2::Perl wrapper for MPlayer and MEncoder for ripping DVD',
+ VERSION => '0.14_8'
},
{
- NAME => 'acroread8',
- DESCRIPTION => 'Adobe Reader for view, print, and search PDF documents (ENU',
- VERSION => '8.1.7_3'
+ NAME => 'acroread8',
+ COMMENTS => 'Adobe Reader for view, print, and search PDF documents (ENU',
+ VERSION => '8.1.7_3'
},
{
- NAME => 'acroreadwrapper',
- DESCRIPTION => 'Wrapper script for Adobe Reader',
- VERSION => '0.0.20110920'
+ NAME => 'acroreadwrapper',
+ COMMENTS => 'Wrapper script for Adobe Reader',
+ VERSION => '0.0.20110920'
},
{
- NAME => 'alsa-lib',
- DESCRIPTION => 'ALSA compatibility library',
- VERSION => '1.0.23'
+ NAME => 'alsa-lib',
+ COMMENTS => 'ALSA compatibility library',
+ VERSION => '1.0.23'
},
{
- NAME => 'ap22-mod_perl2',
- DESCRIPTION => 'Embeds a Perl interpreter in the Apache2 server',
- VERSION => '2.0.5_1,3'
+ NAME => 'ap22-mod_perl2',
+ COMMENTS => 'Embeds a Perl interpreter in the Apache2 server',
+ VERSION => '2.0.5_1,3'
},
{
- NAME => 'apache',
- DESCRIPTION => 'Version 2.2.x of Apache web server with prefork MPM.',
- VERSION => '2.2.19'
+ NAME => 'apache',
+ COMMENTS => 'Version 2.2.x of Apache web server with prefork MPM.',
+ VERSION => '2.2.19'
},
{
- NAME => 'apache-ant',
- DESCRIPTION => 'Java- and XML-based build tool, conceptually similar to mak',
- VERSION => '1.8.2'
+ NAME => 'apache-ant',
+ COMMENTS => 'Java- and XML-based build tool, conceptually similar to mak',
+ VERSION => '1.8.2'
},
{
- NAME => 'appres',
- DESCRIPTION => 'Program to list application\'s resources',
- VERSION => '1.0.3'
+ NAME => 'appres',
+ COMMENTS => 'Program to list application\'s resources',
+ VERSION => '1.0.3'
},
{
- NAME => 'apr-ipv6-devrandom-gdbm-db42',
- DESCRIPTION => 'Apache Portability Library',
- VERSION => '1.4.5.1.3.12'
+ NAME => 'apr-ipv6-devrandom-gdbm-db42',
+ COMMENTS => 'Apache Portability Library',
+ VERSION => '1.4.5.1.3.12'
},
{
- NAME => 'aspell',
- DESCRIPTION => 'Spelling checker with better suggestion logic than ispell',
- VERSION => '0.60.6.1'
+ NAME => 'aspell',
+ COMMENTS => 'Spelling checker with better suggestion logic than ispell',
+ VERSION => '0.60.6.1'
},
{
- NAME => 'atk',
- DESCRIPTION => 'A GNOME accessibility toolkit (ATK)',
- VERSION => '2.0.1'
+ NAME => 'atk',
+ COMMENTS => 'A GNOME accessibility toolkit (ATK)',
+ VERSION => '2.0.1'
},
{
- NAME => 'atkmm',
- DESCRIPTION => 'C++ wrapper for ATK API library',
- VERSION => '2.22.5'
+ NAME => 'atkmm',
+ COMMENTS => 'C++ wrapper for ATK API library',
+ VERSION => '2.22.5'
},
{
- NAME => 'attica',
- DESCRIPTION => 'Collaboration Services API library',
- VERSION => '0.2.80,1'
+ NAME => 'attica',
+ COMMENTS => 'Collaboration Services API library',
+ VERSION => '0.2.80,1'
},
{
- NAME => 'atunes',
- DESCRIPTION => 'A full-featured audio player and manager developed in Java',
- VERSION => '2.0.1'
+ NAME => 'atunes',
+ COMMENTS => 'A full-featured audio player and manager developed in Java',
+ VERSION => '2.0.1'
},
{
- NAME => 'audacity',
- DESCRIPTION => 'Audacity is a GUI editor for digital audio waveforms',
- VERSION => '1.2.4b_9'
+ NAME => 'audacity',
+ COMMENTS => 'Audacity is a GUI editor for digital audio waveforms',
+ VERSION => '1.2.4b_9'
},
{
- NAME => 'autoconf',
- DESCRIPTION => 'Automatically configure source code on many Un*x platforms ',
- VERSION => '2.13.000227_6'
+ NAME => 'autoconf',
+ COMMENTS => 'Automatically configure source code on many Un*x platforms ',
+ VERSION => '2.13.000227_6'
},
{
- NAME => 'autoconf',
- DESCRIPTION => 'Automatically configure source code on many Un*x platforms ',
- VERSION => '2.68'
+ NAME => 'autoconf',
+ COMMENTS => 'Automatically configure source code on many Un*x platforms ',
+ VERSION => '2.68'
},
{
- NAME => 'autoconf-wrapper',
- DESCRIPTION => 'Wrapper script for GNU autoconf',
- VERSION => '20101119'
+ NAME => 'autoconf-wrapper',
+ COMMENTS => 'Wrapper script for GNU autoconf',
+ VERSION => '20101119'
},
{
- NAME => 'automake',
- DESCRIPTION => 'GNU Standards-compliant Makefile generator (1.11)',
- VERSION => '1.11.1'
+ NAME => 'automake',
+ COMMENTS => 'GNU Standards-compliant Makefile generator (1.11)',
+ VERSION => '1.11.1'
},
{
- NAME => 'automake',
- DESCRIPTION => 'GNU Standards-compliant Makefile generator (1.4)',
- VERSION => '1.4.6_6'
+ NAME => 'automake',
+ COMMENTS => 'GNU Standards-compliant Makefile generator (1.4)',
+ VERSION => '1.4.6_6'
},
{
- NAME => 'automake-wrapper',
- DESCRIPTION => 'Wrapper script for GNU automake',
- VERSION => '20101119'
+ NAME => 'automake-wrapper',
+ COMMENTS => 'Wrapper script for GNU automake',
+ VERSION => '20101119'
},
{
- NAME => 'automoc4',
- DESCRIPTION => 'Automatic moc for Qt 4 packages',
- VERSION => '0.9.88_1'
+ NAME => 'automoc4',
+ COMMENTS => 'Automatic moc for Qt 4 packages',
+ VERSION => '0.9.88_1'
},
{
- NAME => 'avahi-app',
- DESCRIPTION => 'Service discovery on a local network',
- VERSION => '0.6.29'
+ NAME => 'avahi-app',
+ COMMENTS => 'Service discovery on a local network',
+ VERSION => '0.6.29'
},
{
- NAME => 'b43-fwcutter',
- DESCRIPTION => 'Extracts firmware for Broadcom Wireless adapters',
- VERSION => '012'
+ NAME => 'b43-fwcutter',
+ COMMENTS => 'Extracts firmware for Broadcom Wireless adapters',
+ VERSION => '012'
},
{
- NAME => 'babl',
- DESCRIPTION => 'Dynamic pixel format conversion library',
- VERSION => '0.1.4'
+ NAME => 'babl',
+ COMMENTS => 'Dynamic pixel format conversion library',
+ VERSION => '0.1.4'
},
{
- NAME => 'bash',
- DESCRIPTION => 'The GNU Project\'s Bourne Again SHell',
- VERSION => '4.1.11'
+ NAME => 'bash',
+ COMMENTS => 'The GNU Project\'s Bourne Again SHell',
+ VERSION => '4.1.11'
}
]
);
================================================================
Commit: b189b846a7e88054e5d544a66f3041468748bce5
https://github.com/fusinv/fusioninventory-agent/commit/b189b846a7e88054e5d544a66f3041468748bce5
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-06 (Fri, 06 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
Log Message:
-----------
clearer regexp
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
index 2ca73af..9376672 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
@@ -37,7 +37,7 @@ sub _getPackagesListFromPkgInfo {
my @packages;
while (my $line = <$handle>) {
- next unless $line =~ /^(\S+)-(\d+\S*)\s+(.*)/;
+ next unless $line =~ /^(\S+) - (\S+) \s+ (.*)/x;
push @packages, {
NAME => $1,
VERSION => $2,
================================================================
Commit: 86c492f0305cbdd132b5dafe399f4a324bc128a5
https://github.com/fusinv/fusioninventory-agent/commit/86c492f0305cbdd132b5dafe399f4a324bc128a5
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-06 (Fri, 06 Jan 2012)
Changed paths:
M t/inventory/aix/memory.t
Log Message:
-----------
fix expected results
diff --git a/t/inventory/aix/memory.t b/t/inventory/aix/memory.t
index d8c5095..5f54fe3 100755
--- a/t/inventory/aix/memory.t
+++ b/t/inventory/aix/memory.t
@@ -14,7 +14,6 @@ my %tests = (
NUMSLOTS => 0,
SERIALNUMBER=> 'YH10MS5CH923',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'RS6K',
TYPE => '00P5767',
CAPTION => 'Slot U787A.001.DPM2CW2-P1-C9',
CAPACITY => '512'
@@ -23,7 +22,6 @@ my %tests = (
NUMSLOTS => 1,
SERIALNUMBER=> 'YH10MS5CH8ED',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'RS6K',
TYPE => '00P5767',
CAPTION => 'Slot U787A.001.DPM2CW2-P1-C11',
CAPACITY => '512'
@@ -32,7 +30,6 @@ my %tests = (
NUMSLOTS => 2,
SERIALNUMBER=> 'YH10MS5CH8F0',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'RS6K',
TYPE => '00P5767',
CAPTION => 'Slot U787A.001.DPM2CW2-P1-C14',
CAPACITY => '512'
@@ -41,7 +38,6 @@ my %tests = (
NUMSLOTS => 3,
SERIALNUMBER=> 'YH10MS5CH92C',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'RS6K',
TYPE => '00P5767',
CAPTION => 'Slot U787A.001.DPM2CW2-P1-C16',
CAPACITY => '512'
@@ -52,7 +48,6 @@ my %tests = (
NUMSLOTS => 0,
SERIALNUMBER=> '00005055',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'RS6K',
TYPE => undef,
CAPTION => 'Slot U788D.001.99DXY4Y-P1-C1',
CAPACITY => '1024'
@@ -61,7 +56,6 @@ my %tests = (
NUMSLOTS => 1,
SERIALNUMBER=> '04008030',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'RS6K',
TYPE => undef,
CAPTION => 'Slot U788D.001.99DXY4Y-P1-C2',
CAPACITY => '1024'
@@ -70,7 +64,6 @@ my %tests = (
NUMSLOTS => 2,
SERIALNUMBER=> '00007033',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'RS6K',
TYPE => undef,
CAPTION => 'Slot U788D.001.99DXY4Y-P1-C3',
CAPACITY => '1024'
@@ -79,7 +72,6 @@ my %tests = (
NUMSLOTS => 3,
SERIALNUMBER=> '00005031',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'RS6K',
TYPE => undef,
CAPTION => 'Slot U788D.001.99DXY4Y-P1-C4',
CAPACITY => '1024'
@@ -90,7 +82,6 @@ my %tests = (
NUMSLOTS => 0,
SERIALNUMBER=> 'YLD001110C29',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5036',
CAPTION => 'Slot U78A5.001.WIH5D66-P1-C1',
CAPACITY => '4096'
@@ -99,7 +90,6 @@ my %tests = (
NUMSLOTS => 1,
SERIALNUMBER=> 'YLD005346272',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5036',
CAPTION => 'Slot U78A5.001.WIH5D66-P1-C2',
CAPACITY => '4096'
@@ -108,7 +98,6 @@ my %tests = (
NUMSLOTS => 2,
SERIALNUMBER=> 'YLD000110C0C',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5036',
CAPTION => 'Slot U78A5.001.WIH5D66-P1-C3',
CAPACITY => '4096'
@@ -117,7 +106,6 @@ my %tests = (
NUMSLOTS => 3,
SERIALNUMBER=> 'YLD004930776',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5036',
CAPTION => 'Slot U78A5.001.WIH5D66-P1-C4',
CAPACITY => '4096'
@@ -126,7 +114,6 @@ my %tests = (
NUMSLOTS => 4,
SERIALNUMBER=> 'YLD00793074C',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5036',
CAPTION => 'Slot U78A5.001.WIH5D66-P1-C5',
CAPACITY => '4096'
@@ -135,7 +122,6 @@ my %tests = (
NUMSLOTS => 5,
SERIALNUMBER=> 'YLD003810961',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5036',
CAPTION => 'Slot U78A5.001.WIH5D66-P1-C6',
CAPACITY => '4096'
@@ -144,7 +130,6 @@ my %tests = (
NUMSLOTS => 6,
SERIALNUMBER=> 'YLD006346270',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5036',
CAPTION => 'Slot U78A5.001.WIH5D66-P1-C7',
CAPACITY => '4096'
@@ -153,7 +138,6 @@ my %tests = (
NUMSLOTS => 7,
SERIALNUMBER=> 'YLD00281096F',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5036',
CAPTION => 'Slot U78A5.001.WIH5D66-P1-C8',
CAPACITY => '4096'
@@ -162,7 +146,6 @@ my %tests = (
NUMSLOTS => 8,
SERIALNUMBER=> 'YLD009710956',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5036',
CAPTION => 'Slot U78A5.001.WIH5D66-P2-C1',
CAPACITY => '4096'
@@ -171,7 +154,6 @@ my %tests = (
NUMSLOTS => 9,
SERIALNUMBER=> 'YLD00D346271',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5036',
CAPTION => 'Slot U78A5.001.WIH5D66-P2-C2',
CAPACITY => '4096'
@@ -180,7 +162,6 @@ my %tests = (
NUMSLOTS => 10,
SERIALNUMBER=> 'YLD00851096F',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5036',
CAPTION => 'Slot U78A5.001.WIH5D66-P2-C3',
CAPACITY => '4096'
@@ -189,7 +170,6 @@ my %tests = (
NUMSLOTS => 11,
SERIALNUMBER=> 'YLD00C930661',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5036',
CAPTION => 'Slot U78A5.001.WIH5D66-P2-C4',
CAPACITY => '4096'
@@ -198,7 +178,6 @@ my %tests = (
NUMSLOTS => 12,
SERIALNUMBER=> 'YLD00F930748',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5036',
CAPTION => 'Slot U78A5.001.WIH5D66-P2-C5',
CAPACITY => '4096'
@@ -207,7 +186,6 @@ my %tests = (
NUMSLOTS => 13,
SERIALNUMBER=> 'YLD00B410C26',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5036',
CAPTION => 'Slot U78A5.001.WIH5D66-P2-C6',
CAPACITY => '4096'
@@ -216,7 +194,6 @@ my %tests = (
NUMSLOTS => 14,
SERIALNUMBER=> 'YLD00E34627B',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5036',
CAPTION => 'Slot U78A5.001.WIH5D66-P2-C7',
CAPACITY => '4096'
@@ -225,7 +202,6 @@ my %tests = (
NUMSLOTS => 15,
SERIALNUMBER=> 'YLD00A610973',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5036',
CAPTION => 'Slot U78A5.001.WIH5D66-P2-C8',
CAPACITY => '4096'
@@ -236,7 +212,6 @@ my %tests = (
NUMSLOTS => 0,
SERIALNUMBER=> 'YLD0014403BC',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5035',
CAPTION => 'Slot U78A5.001.WIH55B2-P1-C1',
CAPACITY => '2048'
@@ -245,7 +220,6 @@ my %tests = (
NUMSLOTS => 1,
SERIALNUMBER=> 'YLD0004403BB',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '43X5035',
CAPTION => 'Slot U78A5.001.WIH55B2-P1-C3',
CAPACITY => '2048'
@@ -256,7 +230,6 @@ my %tests = (
NUMSLOTS => 0,
SERIALNUMBER=> 'YLD00030486D',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '77P8784',
CAPTION => 'Slot U78A0.001.DNWHPLG-P1-C13-C2',
CAPACITY => '4096'
@@ -265,7 +238,6 @@ my %tests = (
NUMSLOTS => 1,
SERIALNUMBER=> 'YLD003304853',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '77P8784',
CAPTION => 'Slot U78A0.001.DNWHPLG-P1-C13-C3',
CAPACITY => '4096'
@@ -274,7 +246,6 @@ my %tests = (
NUMSLOTS => 2,
SERIALNUMBER=> 'YLD0013047DE',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '77P8784',
CAPTION => 'Slot U78A0.001.DNWHPLG-P1-C13-C4',
CAPACITY => '4096'
@@ -283,7 +254,6 @@ my %tests = (
NUMSLOTS => 3,
SERIALNUMBER=> 'YLD002304855',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '77P8784',
CAPTION => 'Slot U78A0.001.DNWHPLG-P1-C13-C5',
CAPACITY => '4096'
@@ -292,7 +262,6 @@ my %tests = (
NUMSLOTS => 4,
SERIALNUMBER=> 'YLD006304856',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '77P8784',
CAPTION => 'Slot U78A0.001.DNWHPLG-P1-C13-C6',
CAPACITY => '4096'
@@ -301,7 +270,6 @@ my %tests = (
NUMSLOTS => 5,
SERIALNUMBER=> 'YLD00530483B',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '77P8784',
CAPTION => 'Slot U78A0.001.DNWHPLG-P1-C13-C7',
CAPACITY => '4096'
@@ -310,7 +278,6 @@ my %tests = (
NUMSLOTS => 6,
SERIALNUMBER=> 'YLD007304859',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '77P8784',
CAPTION => 'Slot U78A0.001.DNWHPLG-P1-C13-C8',
CAPACITY => '4096'
@@ -319,7 +286,6 @@ my %tests = (
NUMSLOTS => 7,
SERIALNUMBER=> 'YLD00430481E',
DESCRIPTION => 'Memory DIMM',
- VERSION => 'ipzSeries',
TYPE => '77P8784',
CAPTION => 'Slot U78A0.001.DNWHPLG-P1-C13-C9',
CAPACITY => '4096'
================================================================
Commit: 59283239dd2d83e35287dc06794f25f293559117
https://github.com/fusinv/fusioninventory-agent/commit/59283239dd2d83e35287dc06794f25f293559117
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-06 (Fri, 06 Jan 2012)
Changed paths:
M MANIFEST.SKIP
Log Message:
-----------
more exceptions
diff --git a/MANIFEST.SKIP b/MANIFEST.SKIP
index 8f614e9..3b5f123 100644
--- a/MANIFEST.SKIP
+++ b/MANIFEST.SKIP
@@ -5,11 +5,13 @@ CVS/
^.gitignore$
^.cvsignore$
.svn
+.merge
^blib
^_build
^Build$
^cover_db
+^nytprof
^Makefile(\.old)?$
^MANIFEST\.
^pm_to_blib$
================================================================
Commit: 7568e644430e1f9ed889f56aa6a70175f6242de9
https://github.com/fusinv/fusioninventory-agent/commit/7568e644430e1f9ed889f56aa6a70175f6242de9
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-06 (Fri, 06 Jan 2012)
Changed paths:
M Makefile.PL
Log Message:
-----------
update comment
diff --git a/Makefile.PL b/Makefile.PL
index f94fddc..1aa4f63 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -88,7 +88,7 @@ use English qw(-no_match_vars);
our %variables;
-# force a perl-independant prefix for everything but perl modules
+# force a perl-independant prefix for everything
sub constants {
my ($self) = @_;
================================================================
Commit: cab7edb03629fec3da0b6e4500b991ec5e1b1322
https://github.com/fusinv/fusioninventory-agent/commit/cab7edb03629fec3da0b6e4500b991ec5e1b1322
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-06 (Fri, 06 Jan 2012)
Changed paths:
M Makefile.PL
Log Message:
-----------
add junit test results target
diff --git a/Makefile.PL b/Makefile.PL
index 1aa4f63..b9af25b 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -202,3 +202,15 @@ fusioninventory-agent.1.html: fusioninventory-agent
EOF
return $manifypods;
}
+
+sub test {
+ my ($self) = @_;
+ my $test = $self->SUPER::test(@_);
+
+ $test .= <<'EOF';
+junit.xml:
+ prove -l --recurse --formatter TAP::Formatter::JUnit t > junit.xml
+EOF
+
+ return $test;
+}
================================================================
Commit: 72c643f4da530a5922df521770aa98ca1d42cbc2
https://github.com/fusinv/fusioninventory-agent/commit/72c643f4da530a5922df521770aa98ca1d42cbc2
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-06 (Fri, 06 Jan 2012)
Changed paths:
M Makefile.PL
Log Message:
-----------
pass --timer option to probe
diff --git a/Makefile.PL b/Makefile.PL
index b9af25b..0d4434f 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -209,7 +209,8 @@ sub test {
$test .= <<'EOF';
junit.xml:
- prove -l --recurse --formatter TAP::Formatter::JUnit t > junit.xml
+ prove --lib --timer --recurse --formatter TAP::Formatter::JUnit t \
+ > junit.xml
EOF
return $test;
================================================================
Commit: 46779d7d8619ebe402dcb34bf983450cfff229bc
https://github.com/fusinv/fusioninventory-agent/commit/46779d7d8619ebe402dcb34bf983450cfff229bc
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-06 (Fri, 06 Jan 2012)
Changed paths:
M Makefile.PL
Log Message:
-----------
allow to specific junit result file name
diff --git a/Makefile.PL b/Makefile.PL
index 0d4434f..a5863a6 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -208,9 +208,9 @@ sub test {
my $test = $self->SUPER::test(@_);
$test .= <<'EOF';
-junit.xml:
+%-junit.xml:
prove --lib --timer --recurse --formatter TAP::Formatter::JUnit t \
- > junit.xml
+ > $@
EOF
return $test;
================================================================
Commit: 6800d9effa0e67c005bb469296e0f7494d230fa1
https://github.com/fusinv/fusioninventory-agent/commit/6800d9effa0e67c005bb469296e0f7494d230fa1
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-06 (Fri, 06 Jan 2012)
Changed paths:
M Makefile.PL
Log Message:
-----------
let user manage output redirection himself
diff --git a/Makefile.PL b/Makefile.PL
index a5863a6..9c91fd5 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -208,9 +208,8 @@ sub test {
my $test = $self->SUPER::test(@_);
$test .= <<'EOF';
-%-junit.xml:
- prove --lib --timer --recurse --formatter TAP::Formatter::JUnit t \
- > $@
+test-junit:
+ prove --lib --timer --recurse --formatter TAP::Formatter::JUnit t
EOF
return $test;
================================================================
Commit: 9581ed0951dd288f329e2116f91156c75ba619f7
https://github.com/fusinv/fusioninventory-agent/commit/9581ed0951dd288f329e2116f91156c75ba619f7
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-06 (Fri, 06 Jan 2012)
Changed paths:
M Makefile.PL
Log Message:
-----------
Revert "let user manage output redirection himself"
We don't want the command itself in the output
This reverts commit 6800d9effa0e67c005bb469296e0f7494d230fa1.
diff --git a/Makefile.PL b/Makefile.PL
index 9c91fd5..a5863a6 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -208,8 +208,9 @@ sub test {
my $test = $self->SUPER::test(@_);
$test .= <<'EOF';
-test-junit:
- prove --lib --timer --recurse --formatter TAP::Formatter::JUnit t
+%-junit.xml:
+ prove --lib --timer --recurse --formatter TAP::Formatter::JUnit t \
+ > $@
EOF
return $test;
================================================================
Commit: a4ebd2193dcc488d789b7b0eadf91ab19c802e62
https://github.com/fusinv/fusioninventory-agent/commit/a4ebd2193dcc488d789b7b0eadf91ab19c802e62
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-10 (Tue, 10 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
use UNIVERSAL::require, instead of require keyword
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index e084653..05a899a 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -73,20 +73,26 @@ sub _getScreensFromWindows {
my $devices = {};
my $Registry;
- eval {
- require FusionInventory::Agent::Tools::Win32;
- require Win32::TieRegistry;
- Win32::TieRegistry->import(
- Delimiter => '/',
- ArrayValues => 0,
- TiedRef => \$Registry
- );
- };
+
+ FusionInventory::Agent::Tools::Win32->require();
+ if ($EVAL_ERROR) {
+ print
+ "Failed to load FusionInventory::Agent::Tools::Win32: $EVAL_ERROR";
+ return;
+ }
+
+ Win32::TieRegistry->require();
if ($EVAL_ERROR) {
- print "Failed to load Win32::OLE and Win32::TieRegistry\n";
+ print "Failed to load Win32::TieRegistry: $EVAL_ERROR";
return;
}
+ Win32::TieRegistry->import(
+ Delimiter => '/',
+ ArrayValues => 0,
+ TiedRef => \$Registry
+ );
+
use constant wbemFlagReturnImmediately => 0x10;
use constant wbemFlagForwardOnly => 0x20;
================================================================
Commit: c35ed7f6073b8db83774bbcda03dfe3ac68eb790
https://github.com/fusinv/fusioninventory-agent/commit/c35ed7f6073b8db83774bbcda03dfe3ac68eb790
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-10 (Tue, 10 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
keep module loading near the place where they are used
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 05a899a..d2ded95 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -72,7 +72,6 @@ sub _getScreensFromWindows {
my ($logger) = @_;
my $devices = {};
- my $Registry;
FusionInventory::Agent::Tools::Win32->require();
if ($EVAL_ERROR) {
@@ -81,18 +80,6 @@ sub _getScreensFromWindows {
return;
}
- Win32::TieRegistry->require();
- if ($EVAL_ERROR) {
- print "Failed to load Win32::TieRegistry: $EVAL_ERROR";
- return;
- }
-
- Win32::TieRegistry->import(
- Delimiter => '/',
- ArrayValues => 0,
- TiedRef => \$Registry
- );
-
use constant wbemFlagReturnImmediately => 0x10;
use constant wbemFlagForwardOnly => 0x20;
@@ -133,6 +120,19 @@ sub _getScreensFromWindows {
}
+ Win32::TieRegistry->require();
+ if ($EVAL_ERROR) {
+ print "Failed to load Win32::TieRegistry: $EVAL_ERROR";
+ return;
+ }
+
+ my $Registry;
+ Win32::TieRegistry->import(
+ Delimiter => '/',
+ ArrayValues => 0,
+ TiedRef => \$Registry
+ );
+
my @ret;
foreach my $PNPDeviceID (keys %{$devices}) {
================================================================
Commit: 9717b6317eba1090bf68d8ca1db57f1334cf4ed5
https://github.com/fusinv/fusioninventory-agent/commit/9717b6317eba1090bf68d8ca1db57f1334cf4ed5
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-10 (Tue, 10 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
unused variables
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index d2ded95..0056e08 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -80,9 +80,6 @@ sub _getScreensFromWindows {
return;
}
- use constant wbemFlagReturnImmediately => 0x10;
- use constant wbemFlagForwardOnly => 0x20;
-
# Vista and upper, able to get the second screen
my $WMIServices = Win32::OLE->GetObject(
"winmgmts:{impersonationLevel=impersonate,authenticationLevel=Pkt}!//./root/wmi"
================================================================
Commit: 424adaf12ec35c0f31e8bed6254122ff22a20bfb
https://github.com/fusinv/fusioninventory-agent/commit/424adaf12ec35c0f31e8bed6254122ff22a20bfb
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-10 (Tue, 10 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
use Tools::Win32 functions, instead of direct Win32::OLE ones
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 0056e08..77dceb5 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -81,28 +81,25 @@ sub _getScreensFromWindows {
}
# Vista and upper, able to get the second screen
- my $WMIServices = Win32::OLE->GetObject(
- "winmgmts:{impersonationLevel=impersonate,authenticationLevel=Pkt}!//./root/wmi"
- );
-
- foreach my $properties (Win32::OLE::in($WMIServices->InstancesOf(
- "WMIMonitorID"
- ))) {
+ foreach my $object (FusionInventory::Agent::Tools::Win32::getWmiObjects(
+ moniker => 'winmgmts:{impersonationLevel=impersonate,authenticationLevel=Pkt}!//./root/wmi',
+ class => 'WMIMonitorID',
+ properties => [ qw/InstanceName/ ]
+ )) {
+ next unless $object->{InstanceName};
- next unless $properties->{InstanceName};
- my $PNPDeviceID = $properties->{InstanceName};
+ my $PNPDeviceID = $object->{InstanceName};
$PNPDeviceID =~ s/_\d+//;
$devices->{lc($PNPDeviceID)} = {};
}
-# The generic Win32_DesktopMonitor class, the second screen will be missing
+ # The generic Win32_DesktopMonitor class, the second screen will be missing
foreach my $object (FusionInventory::Agent::Tools::Win32::getWmiObjects(
class => 'Win32_DesktopMonitor',
properties => [ qw/
Caption MonitorManufacturer MonitorType PNPDeviceID
/ ]
)) {
-
next unless $object->{Availability};
next unless $object->{PNPDeviceID};
next unless $object->{Availability} == 3;
@@ -114,7 +111,6 @@ sub _getScreensFromWindows {
manufacturer => $object->{MonitorManufacturer},
caption => $object->{Caption}
};
-
}
Win32::TieRegistry->require();
================================================================
Commit: e9cbeec3aa6b8fcba3826e6ef3331eac842b5e02
https://github.com/fusinv/fusioninventory-agent/commit/e9cbeec3aa6b8fcba3826e6ef3331eac842b5e02
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-10 (Tue, 10 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
cleanup
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 77dceb5..4e9c460 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -129,26 +129,17 @@ sub _getScreensFromWindows {
my @ret;
foreach my $PNPDeviceID (keys %{$devices}) {
+ my $KEY_WOW64_64KEY = 0x100;
- my $machKey;
- {
- my $KEY_WOW64_64KEY = 0x100;
+ my $access = FusionInventory::Agent::Tools::Win32::is64bit() ?
+ Win32::TieRegistry::KEY_READ() | $KEY_WOW64_64KEY :
+ Win32::TieRegistry::KEY_READ();
- my $access;
-
- if (FusionInventory::Agent::Tools::Win32::is64bit()) {
- $access = Win32::TieRegistry::KEY_READ() | $KEY_WOW64_64KEY;
- } else {
- $access = Win32::TieRegistry::KEY_READ();
- }
-
-# Win32-specifics constants can not be loaded on non-Windows OS
- no strict 'subs';
- $machKey = $Registry->Open('LMachine', {
- Access => $access
- } ) or $logger->fault("Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR");
-
- }
+ my $machKey = $Registry->Open('LMachine', {
+ Access => $access
+ } ) or $logger->fault(
+ "Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR"
+ );
$devices->{$PNPDeviceID}{edid} =
$machKey->{"SYSTEM/CurrentControlSet/Enum/".$PNPDeviceID."/Device Parameters/EDID"} || '';
================================================================
Commit: 03c7d4cd7c79822bdbcee9aa3d64afacf0e32b39
https://github.com/fusinv/fusioninventory-agent/commit/03c7d4cd7c79822bdbcee9aa3d64afacf0e32b39
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-10 (Tue, 10 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
split unix screens computing into its own function
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 4e9c460..df0dc4b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -151,35 +151,28 @@ sub _getScreensFromWindows {
}
+sub _getScreensFromUnix {
+ my $raw_edid =
+ getFirstLine(command => 'monitor-get-edid-using-vbe') ||
+ getFirstLine(command => 'monitor-get-edid');
-sub _getScreens {
- my ($logger) = @_;
-
- my @screens;
-
- if ($OSNAME eq 'MSWin32') {
-
- return _getScreensFromWindows($logger);
-
- } else {
- # Mandriva
- my $raw_edid =
- getFirstLine(command => 'monitor-get-edid-using-vbe') ||
- getFirstLine(command => 'monitor-get-edid');
-
- if (!$raw_edid) {
- foreach (1..5) { # Sometime get-edid return an empty string...
- $raw_edid = getFirstLine(command => 'get-edid');
- last if $raw_edid && (length($raw_edid) == 128 || length($raw_edid) == 256);
- }
+ if (!$raw_edid) {
+ foreach (1..5) { # Sometime get-edid return an empty string...
+ $raw_edid = getFirstLine(command => 'get-edid');
+ last if $raw_edid && (length($raw_edid) == 128 || length($raw_edid) == 256);
}
- return unless length($raw_edid) == 128 || length($raw_edid) == 256;
-
- push @screens, { edid => $raw_edid };
}
+ return unless length($raw_edid) == 128 || length($raw_edid) == 256;
+
+ return ( { edid => $raw_edid } );
+}
+
+sub _getScreens {
+ my ($logger) = @_;
- return @screens;
+ return $OSNAME eq 'MSWin32' ?
+ _getScreensFromWindows($logger) : _getScreensFromUnix($logger);
}
1;
================================================================
Commit: 6d2c452bc734b43ac7ca6fb711757b4111df9f1b
https://github.com/fusinv/fusioninventory-agent/commit/6d2c452bc734b43ac7ca6fb711757b4111df9f1b
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-10 (Tue, 10 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
no need to use an hash to store results, indexed access is never used
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index df0dc4b..17130fb 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -71,8 +71,6 @@ sub doInventory {
sub _getScreensFromWindows {
my ($logger) = @_;
- my $devices = {};
-
FusionInventory::Agent::Tools::Win32->require();
if ($EVAL_ERROR) {
print
@@ -80,6 +78,8 @@ sub _getScreensFromWindows {
return;
}
+ my @screens;
+
# Vista and upper, able to get the second screen
foreach my $object (FusionInventory::Agent::Tools::Win32::getWmiObjects(
moniker => 'winmgmts:{impersonationLevel=impersonate,authenticationLevel=Pkt}!//./root/wmi',
@@ -90,7 +90,9 @@ sub _getScreensFromWindows {
my $PNPDeviceID = $object->{InstanceName};
$PNPDeviceID =~ s/_\d+//;
- $devices->{lc($PNPDeviceID)} = {};
+ push @screens, {
+ id => $object->{PNPDeviceID}
+ };
}
# The generic Win32_DesktopMonitor class, the second screen will be missing
@@ -105,7 +107,8 @@ sub _getScreensFromWindows {
next unless $object->{Availability} == 3;
my $name = $object->{Caption};
- $devices->{lc($object->{PNPDeviceID})} = {
+ push @screens, {
+ id => $object->{PNPDeviceID},
name => $name,
type => $object->{MonitorType},
manufacturer => $object->{MonitorManufacturer},
@@ -126,8 +129,7 @@ sub _getScreensFromWindows {
TiedRef => \$Registry
);
- my @ret;
- foreach my $PNPDeviceID (keys %{$devices}) {
+ foreach my $screen (@screens) {
my $KEY_WOW64_64KEY = 0x100;
@@ -141,14 +143,13 @@ sub _getScreensFromWindows {
"Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR"
);
- $devices->{$PNPDeviceID}{edid} =
- $machKey->{"SYSTEM/CurrentControlSet/Enum/".$PNPDeviceID."/Device Parameters/EDID"} || '';
- $devices->{$PNPDeviceID}{edid} =~ s/^\s+$//;
+ $screen->{edid} =
+ $machKey->{"SYSTEM/CurrentControlSet/Enum/$screen->{id}/Device Parameters/EDID"} || '';
+ $screen->{edid} =~ s/^\s+$//;
- push @ret, $devices->{$PNPDeviceID};
}
- return @ret;
+ return @screens;
}
sub _getScreensFromUnix {
================================================================
Commit: beddf63818dd54a5b0b3a3b4baa499ed3f8c47c7
https://github.com/fusinv/fusioninventory-agent/commit/beddf63818dd54a5b0b3a3b4baa499ed3f8c47c7
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-10 (Tue, 10 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
useless intermediate variable
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 17130fb..9fc659a 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -105,11 +105,10 @@ sub _getScreensFromWindows {
next unless $object->{Availability};
next unless $object->{PNPDeviceID};
next unless $object->{Availability} == 3;
- my $name = $object->{Caption};
push @screens, {
id => $object->{PNPDeviceID},
- name => $name,
+ name => $object->{Caption},
type => $object->{MonitorType},
manufacturer => $object->{MonitorManufacturer},
caption => $object->{Caption}
================================================================
Commit: dbdbedd2e301a6e94f0b011c534c4d6dcf3a6d61
https://github.com/fusinv/fusioninventory-agent/commit/dbdbedd2e301a6e94f0b011c534c4d6dcf3a6d61
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-10 (Tue, 10 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
don't duplicate constants
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 9fc659a..909da4e 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -130,10 +130,9 @@ sub _getScreensFromWindows {
foreach my $screen (@screens) {
- my $KEY_WOW64_64KEY = 0x100;
-
my $access = FusionInventory::Agent::Tools::Win32::is64bit() ?
- Win32::TieRegistry::KEY_READ() | $KEY_WOW64_64KEY :
+ Win32::TieRegistry::KEY_READ() |
+ FusionInventory::Agent::Tools::Win32::KEY_WOW64_64() :
Win32::TieRegistry::KEY_READ();
my $machKey = $Registry->Open('LMachine', {
================================================================
Commit: 52dbd190ba1e6d1a559fe0965d44f001151ef1e2
https://github.com/fusinv/fusioninventory-agent/commit/52dbd190ba1e6d1a559fe0965d44f001151ef1e2
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-10 (Tue, 10 Jan 2012)
Changed paths:
M t/01compile.t
M t/04pod-coverage.t
M t/FusionInventory/Test/Utils.pm
Log Message:
-----------
use local filtering functions to work on filename or namespace
diff --git a/t/01compile.t b/t/01compile.t
index a5d445d..330e077 100755
--- a/t/01compile.t
+++ b/t/01compile.t
@@ -7,7 +7,6 @@ use English qw(-no_match_vars);
use Test::More;
use lib 't';
-use FusionInventory::Test::Utils;
eval {
require Test::Compile;
@@ -29,3 +28,11 @@ if ($OSNAME eq 'MSWin32') {
my @files = grep { filter($_) } all_pm_files('lib');
all_pm_files_ok(@files);
+
+# filename-based filter
+sub filter {
+ return 0 if $_ =~ m{FusionInventory/VMware};
+ return 1 if $_ =~ m{FusionInventory/Agent/Task/(Inventory|WakeOnLan)};
+ return 0 if $_ =~ m{FusionInventory/Agent/Task};
+ return 1;
+}
diff --git a/t/04pod-coverage.t b/t/04pod-coverage.t
index 7e9e1f2..bc59126 100755
--- a/t/04pod-coverage.t
+++ b/t/04pod-coverage.t
@@ -3,11 +3,11 @@
use strict;
use warnings;
+
use Test::More;
use English qw(-no_match_vars);
use lib 't';
-use FusionInventory::Test::Utils;
if (!$ENV{TEST_AUTHOR}) {
my $msg = 'Author test. Set $ENV{TEST_AUTHOR} to a true value to run.';
@@ -43,3 +43,11 @@ foreach my $module (@modules) {
}
);
}
+
+# namespace-based filter
+sub filter {
+ return 0 if $_ =~ m{FusionInventory::VMware};
+ return 1 if $_ =~ m{FusionInventory::Agent::Task::(Inventory|WakeOnLan)};
+ return 0 if $_ =~ m{FusionInventory::Agent::Task};
+ return 1;
+}
diff --git a/t/FusionInventory/Test/Utils.pm b/t/FusionInventory/Test/Utils.pm
index 5d2b7be..8d1cb0a 100644
--- a/t/FusionInventory/Test/Utils.pm
+++ b/t/FusionInventory/Test/Utils.pm
@@ -8,7 +8,6 @@ use Socket;
our @EXPORT = qw(
test_port
- filter
);
sub test_port {
@@ -26,20 +25,3 @@ sub test_port {
return 0;
}
-
-# blacklist additional tasks that may be installed
-sub filter {
- if ($_ =~ m{FusionInventory/VMware}) {
- return 0;
- }
- if ($_ =~ m{FusionInventory/Agent/Tools}) {
- return 1;
- }
- if ($_ !~ m{FusionInventory/Agent/Task/(Inventory|WakeOnLan)}) {
- return 0;
- }
- return 1;
-}
-
-
-
================================================================
Commit: cc0a9d77dbb02d89bd64f1e9a1d58b28cd40a9d7
https://github.com/fusinv/fusioninventory-agent/commit/cc0a9d77dbb02d89bd64f1e9a1d58b28cd40a9d7
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-10 (Tue, 10 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Hostname.pm
Log Message:
-----------
keep modules import statement out of BEGIN block
diff --git a/lib/FusionInventory/Agent/Tools/Hostname.pm b/lib/FusionInventory/Agent/Tools/Hostname.pm
index c85498a..f7813e5 100644
--- a/lib/FusionInventory/Agent/Tools/Hostname.pm
+++ b/lib/FusionInventory/Agent/Tools/Hostname.pm
@@ -3,10 +3,11 @@ package FusionInventory::Agent::Tools::Hostname;
use strict;
use warnings;
-BEGIN {
- use UNIVERSAL::require();
- use English qw(-no_match_vars);
+use UNIVERSAL::require();
+use Encode;
+use English qw(-no_match_vars);
+BEGIN {
if ($OSNAME eq 'MSWin32') {
Win32::API->require();
# Kernel32.dll is used more or less everywhere.
@@ -16,13 +17,9 @@ BEGIN {
}
}
-use Encode;
-
sub getHostname {
if ($OSNAME eq 'MSWin32') {
-
-
my $GetComputerName = Win32::API->new("kernel32", "GetComputerNameExW", ["I", "P", "P"], "N");
my $buffer = "\x00" x 1024;
my $N=1024;#pack ("c4", 160,0,0,0);
@@ -33,12 +30,10 @@ sub getHostname {
# to UTF8
return encode("UTF-8", substr(decode("UCS-2le", $buffer),0,ord $N));
} else {
-
Sys::Hostname->require();
return Sys::Hostname::hostname();
return
}
-
}
================================================================
Commit: c4b7de573f5d82df59bb220c7a9adacecec3c2af
https://github.com/fusinv/fusioninventory-agent/commit/c4b7de573f5d82df59bb220c7a9adacecec3c2af
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-10 (Tue, 10 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Hostname.pm
Log Message:
-----------
no need for multiple return
diff --git a/lib/FusionInventory/Agent/Tools/Hostname.pm b/lib/FusionInventory/Agent/Tools/Hostname.pm
index f7813e5..3d1f19a 100644
--- a/lib/FusionInventory/Agent/Tools/Hostname.pm
+++ b/lib/FusionInventory/Agent/Tools/Hostname.pm
@@ -32,7 +32,6 @@ sub getHostname {
} else {
Sys::Hostname->require();
return Sys::Hostname::hostname();
- return
}
}
================================================================
Commit: b893d8b9e1aeb80a06f2c3b1505ce8fd6f7c9a96
https://github.com/fusinv/fusioninventory-agent/commit/b893d8b9e1aeb80a06f2c3b1505ce8fd6f7c9a96
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-10 (Tue, 10 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent.pm
M lib/FusionInventory/Agent/HTTP/Server.pm
M lib/FusionInventory/Agent/Tools/Hostname.pm
M lib/FusionInventory/Agent/Tools/Win32.pm
Log Message:
-----------
fix missing documentation
diff --git a/lib/FusionInventory/Agent.pm b/lib/FusionInventory/Agent.pm
index 4491937..45da0af 100644
--- a/lib/FusionInventory/Agent.pm
+++ b/lib/FusionInventory/Agent.pm
@@ -448,6 +448,10 @@ the options to use.
=back
+=head2 init()
+
+Initialize the agent.
+
=head2 run()
Run the agent.
diff --git a/lib/FusionInventory/Agent/HTTP/Server.pm b/lib/FusionInventory/Agent/HTTP/Server.pm
index 139744f..9ce4400 100644
--- a/lib/FusionInventory/Agent/HTTP/Server.pm
+++ b/lib/FusionInventory/Agent/HTTP/Server.pm
@@ -375,3 +375,7 @@ an IP adress or an IP adress range from which to trust incoming requests
without authentication token (default: none)
=back
+
+=head2 terminate
+
+Ensure the listening thread terminates.
diff --git a/lib/FusionInventory/Agent/Tools/Hostname.pm b/lib/FusionInventory/Agent/Tools/Hostname.pm
index 3d1f19a..3c73a80 100644
--- a/lib/FusionInventory/Agent/Tools/Hostname.pm
+++ b/lib/FusionInventory/Agent/Tools/Hostname.pm
@@ -37,3 +37,18 @@ sub getHostname {
}
1;
+__END__
+
+=head1 NAME
+
+FusionInventory::Agent::Tools::Hostname - OS-independant hostname computing
+
+=head1 DESCRIPTION
+
+This module provides a generic function to retrieve host name
+
+=head1 FUNCTIONS
+
+=head2 getHostname()
+
+Returns the host name.
diff --git a/lib/FusionInventory/Agent/Tools/Win32.pm b/lib/FusionInventory/Agent/Tools/Win32.pm
index d164dbd..7e816f9 100644
--- a/lib/FusionInventory/Agent/Tools/Win32.pm
+++ b/lib/FusionInventory/Agent/Tools/Win32.pm
@@ -140,6 +140,10 @@ This module provides some Windows-specific generic functions.
Returns true if the OS is 64bit or false.
+=head2 getLocalcodepage()
+
+Returns the local codepage.
+
=head2 getWmiObjects(%params)
Returns the list of objects from given WMI class, with given properties, properly encoded.
================================================================
Commit: 8ea381e50620ac71eeb6d529928b81fe46fd8f57
https://github.com/fusinv/fusioninventory-agent/commit/8ea381e50620ac71eeb6d529928b81fe46fd8f57
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-10 (Tue, 10 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Win32.pm
Log Message:
-----------
proper capitalisation
diff --git a/lib/FusionInventory/Agent/Tools/Win32.pm b/lib/FusionInventory/Agent/Tools/Win32.pm
index 7e816f9..6624a0e 100644
--- a/lib/FusionInventory/Agent/Tools/Win32.pm
+++ b/lib/FusionInventory/Agent/Tools/Win32.pm
@@ -31,7 +31,7 @@ our @EXPORT = qw(
KEY_WOW64_32
getRegistryValue
getWmiObjects
- getLocalcodepage
+ getLocalCodepage
);
sub is64bit {
@@ -43,7 +43,7 @@ sub is64bit {
);
}
-sub getLocalcodepage {
+sub getLocalCodepage {
if (!$localCodepage) {
my $lmachine = $Registry->Open('LMachine', {
Access => KEY_READ
@@ -66,7 +66,7 @@ sub encodeFromRegistry {
## no critic (ExplicitReturnUndef)
return undef unless $string;
- return encode("UTF-8", decode(getLocalcodepage(), $string));
+ return encode("UTF-8", decode(getLocalCodepage(), $string));
}
sub getWmiObjects {
@@ -140,7 +140,7 @@ This module provides some Windows-specific generic functions.
Returns true if the OS is 64bit or false.
-=head2 getLocalcodepage()
+=head2 getLocalCodepage()
Returns the local codepage.
================================================================
Commit: 8f9104d6ff23c26dbdfd0122f2d5bd5aa7c52c79
https://github.com/fusinv/fusioninventory-agent/commit/8f9104d6ff23c26dbdfd0122f2d5bd5aa7c52c79
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-10 (Tue, 10 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
ensure Win32::TieRegistry loading always works under windows
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 909da4e..4be0f7c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -115,13 +115,8 @@ sub _getScreensFromWindows {
};
}
- Win32::TieRegistry->require();
- if ($EVAL_ERROR) {
- print "Failed to load Win32::TieRegistry: $EVAL_ERROR";
- return;
- }
-
my $Registry;
+ Win32::TieRegistry->require();
Win32::TieRegistry->import(
Delimiter => '/',
ArrayValues => 0,
================================================================
Commit: e8935065cd69a53337824f3982e15039f7d91f81
https://github.com/fusinv/fusioninventory-agent/commit/e8935065cd69a53337824f3982e15039f7d91f81
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-01-11 (Wed, 11 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent.pm
Log Message:
-----------
prepare 4th prerelease of the 2.2.0 agent
diff --git a/lib/FusionInventory/Agent.pm b/lib/FusionInventory/Agent.pm
index 45da0af..3673bfa 100644
--- a/lib/FusionInventory/Agent.pm
+++ b/lib/FusionInventory/Agent.pm
@@ -21,7 +21,7 @@ use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Hostname;
use FusionInventory::Agent::XML::Query::Prolog;
-our $VERSION = '2.1.9903';
+our $VERSION = '2.1.9904';
our $VERSION_STRING =
"FusionInventory unified agent for UNIX, Linux and MacOSX ($VERSION)";
our $AGENT_STRING =
================================================================
Commit: e2a82c95cce5170e372c6dbfcbed243a732a9c32
https://github.com/fusinv/fusioninventory-agent/commit/e2a82c95cce5170e372c6dbfcbed243a732a9c32
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-01-11 (Wed, 11 Jan 2012)
Changed paths:
M .gitignore
M tools/createExtLinks.sh
Log Message:
-----------
add a missing symlink
lib/FusionInventory/Agent/SNMP.pm
diff --git a/.gitignore b/.gitignore
index f7a4036..6716e84 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,7 @@ lib/FusionInventory/Agent/Task/SNMPQuery
lib/FusionInventory/Agent/Task/Deploy
lib/FusionInventory/Agent/Task/Deploy.pm
lib/FusionInventory/Agent/Task/ESX.pm
+lib/FusionInventory/Agent/SNMP.pm
pm_to_blib
./README
*~
diff --git a/tools/createExtLinks.sh b/tools/createExtLinks.sh
index d921f61..41d5242 100755
--- a/tools/createExtLinks.sh
+++ b/tools/createExtLinks.sh
@@ -17,6 +17,10 @@ done
if [ ! -e lib/FusionInventory/VMware ]; then
ln -s $PWD/../agent-task-esx/lib/FusionInventory/VMware lib/FusionInventory/
fi
+if [ ! -e lib/FusionInventory/Agent/SNMP.pm ]; then
+ ln -s $PWD/../agent-task-netdiscovery/lib/FusionInventory/Agent/SNMP.pm lib/FusionInventory/Agent/SNMP.pm
+fi
+
if [ ! -e fusioninventory-esx ]; then
ln -s $PWD/../agent-task-esx/fusioninventory-esx .
fi
================================================================
Commit: 7e5242b4166355a00aca6611c3c81361cdaec1cd
https://github.com/fusinv/fusioninventory-agent/commit/7e5242b4166355a00aca6611c3c81361cdaec1cd
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-17 (Tue, 17 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Client.pm
Log Message:
-----------
uneeded quoting
diff --git a/lib/FusionInventory/Agent/HTTP/Client.pm b/lib/FusionInventory/Agent/HTTP/Client.pm
index bd782a8..f117248 100644
--- a/lib/FusionInventory/Agent/HTTP/Client.pm
+++ b/lib/FusionInventory/Agent/HTTP/Client.pm
@@ -128,10 +128,10 @@ sub _setSSLOptions {
my ($self) = @_;
# SSL handling
- if ($self->{'no_ssl_check'}) {
-# IO::Socket::SSL default behavior is to check the SSL hostname
-# We run it in a eval to avoid break if the ssl_opts doesn't work on some
-# old LWP
+ if ($self->{no_ssl_check}) {
+ # IO::Socket::SSL default behavior is to check the SSL hostname
+ # We run it in a eval to avoid break if the ssl_opts doesn't work
+ # with old LWP
eval { $self->{ua}->ssl_opts(verify_hostname => 0); }
} else {
# only IO::Socket::SSL can perform full server certificate validation,
@@ -145,10 +145,10 @@ sub _setSSLOptions {
if $EVAL_ERROR;
if ($LWP::VERSION >= 6) {
- $self->{ua}->ssl_opts(SSL_ca_file => $self->{'ca_cert_file'})
- if $self->{'ca_cert_file'};
- $self->{ua}->ssl_opts(SSL_ca_path => $self->{'ca_cert_dir'})
- if $self->{'ca_cert_dir'};
+ $self->{ua}->ssl_opts(SSL_ca_file => $self->{ca_cert_file})
+ if $self->{ca_cert_file};
+ $self->{ua}->ssl_opts(SSL_ca_path => $self->{ca_cert_dir})
+ if $self->{ca_cert_dir};
} else {
# SSL_verifycn_scheme and SSL_verifycn_name are required
die
@@ -159,8 +159,8 @@ sub _setSSLOptions {
# use a custom HTTPS handler to workaround default LWP5 behaviour
FusionInventory::Agent::HTTP::Protocol::https->use(
- ca_cert_file => $self->{'ca_cert_file'},
- ca_cert_dir => $self->{'ca_cert_dir'},
+ ca_cert_file => $self->{ca_cert_file},
+ ca_cert_dir => $self->{ca_cert_dir},
);
die
"failed to load FusionInventory::Agent::HTTP::Protocol::https" .
@@ -174,7 +174,7 @@ sub _setSSLOptions {
# abuse user agent internal to pass values to the handler, so
# as to have different behaviors in the same process
- $self->{ua}->{ssl_check} = $self->{'no_ssl_check'} ? 0 : 1;
+ $self->{ua}->{ssl_check} = $self->{no_ssl_check} ? 0 : 1;
}
}
================================================================
Commit: 1f5f1601d62a5a549c21a50b4985bc93e0f5f4a2
https://github.com/fusinv/fusioninventory-agent/commit/1f5f1601d62a5a549c21a50b4985bc93e0f5f4a2
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-17 (Tue, 17 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Client.pm
Log Message:
-----------
use an explicit condition
diff --git a/lib/FusionInventory/Agent/HTTP/Client.pm b/lib/FusionInventory/Agent/HTTP/Client.pm
index f117248..0f322c4 100644
--- a/lib/FusionInventory/Agent/HTTP/Client.pm
+++ b/lib/FusionInventory/Agent/HTTP/Client.pm
@@ -130,9 +130,7 @@ sub _setSSLOptions {
# SSL handling
if ($self->{no_ssl_check}) {
# IO::Socket::SSL default behavior is to check the SSL hostname
- # We run it in a eval to avoid break if the ssl_opts doesn't work
- # with old LWP
- eval { $self->{ua}->ssl_opts(verify_hostname => 0); }
+ $self->{ua}->ssl_opts(verify_hostname => 0) if $LWP::VERSION >= 6;
} else {
# only IO::Socket::SSL can perform full server certificate validation,
# Net::SSL is only able to check certification authority, and not
================================================================
Commit: 0d7c459832c56150f2f3d349df2a0e9afabebb67
https://github.com/fusinv/fusioninventory-agent/commit/0d7c459832c56150f2f3d349df2a0e9afabebb67
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-17 (Tue, 17 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Protocol/https.pm
Log Message:
-----------
uneeded quoting
diff --git a/lib/FusionInventory/Agent/HTTP/Protocol/https.pm b/lib/FusionInventory/Agent/HTTP/Protocol/https.pm
index 9681ffc..c07fe99 100644
--- a/lib/FusionInventory/Agent/HTTP/Protocol/https.pm
+++ b/lib/FusionInventory/Agent/HTTP/Protocol/https.pm
@@ -10,10 +10,10 @@ sub import {
my ($class, %params) = @_;
# set default context
- IO::Socket::SSL::set_ctx_defaults(ca_file => $params{'ca_cert_file'})
- if $params{'ca_cert_file'};
- IO::Socket::SSL::set_ctx_defaults(ca_path => $params{'ca_cert_dir'})
- if $params{'ca_cert_dir'};
+ IO::Socket::SSL::set_ctx_defaults(ca_file => $params{ca_cert_file})
+ if $params{ca_cert_file};
+ IO::Socket::SSL::set_ctx_defaults(ca_path => $params{ca_cert_dir})
+ if $params{ca_cert_dir};
}
sub _extra_sock_opts {
================================================================
Commit: 0e95737ce35bb3c775e5446423cee9ad6d34c21d
https://github.com/fusinv/fusioninventory-agent/commit/0e95737ce35bb3c775e5446423cee9ad6d34c21d
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-18 (Wed, 18 Jan 2012)
Changed paths:
M .gitignore
M lib/FusionInventory/Agent.pm
M tools/createExtLinks.sh
Log Message:
-----------
Merge remote-tracking branch 'forge/2.2.x' into 2.2.x
diff --git a/.gitignore b/.gitignore
index f7a4036..6716e84 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,7 @@ lib/FusionInventory/Agent/Task/SNMPQuery
lib/FusionInventory/Agent/Task/Deploy
lib/FusionInventory/Agent/Task/Deploy.pm
lib/FusionInventory/Agent/Task/ESX.pm
+lib/FusionInventory/Agent/SNMP.pm
pm_to_blib
./README
*~
diff --git a/lib/FusionInventory/Agent.pm b/lib/FusionInventory/Agent.pm
index 45da0af..3673bfa 100644
--- a/lib/FusionInventory/Agent.pm
+++ b/lib/FusionInventory/Agent.pm
@@ -21,7 +21,7 @@ use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Hostname;
use FusionInventory::Agent::XML::Query::Prolog;
-our $VERSION = '2.1.9903';
+our $VERSION = '2.1.9904';
our $VERSION_STRING =
"FusionInventory unified agent for UNIX, Linux and MacOSX ($VERSION)";
our $AGENT_STRING =
diff --git a/tools/createExtLinks.sh b/tools/createExtLinks.sh
index d921f61..41d5242 100755
--- a/tools/createExtLinks.sh
+++ b/tools/createExtLinks.sh
@@ -17,6 +17,10 @@ done
if [ ! -e lib/FusionInventory/VMware ]; then
ln -s $PWD/../agent-task-esx/lib/FusionInventory/VMware lib/FusionInventory/
fi
+if [ ! -e lib/FusionInventory/Agent/SNMP.pm ]; then
+ ln -s $PWD/../agent-task-netdiscovery/lib/FusionInventory/Agent/SNMP.pm lib/FusionInventory/Agent/SNMP.pm
+fi
+
if [ ! -e fusioninventory-esx ]; then
ln -s $PWD/../agent-task-esx/fusioninventory-esx .
fi
================================================================
Commit: 0681a8c5d3078245b3f3728aa54be344e1afae9e
https://github.com/fusinv/fusioninventory-agent/commit/0681a8c5d3078245b3f3728aa54be344e1afae9e
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-01-20 (Fri, 20 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Client.pm
Log Message:
-----------
change condition
Fedora backported behaviour change from LWP 6 to LWP 5, so the check
should be done on method availability, not on LWP version
diff --git a/lib/FusionInventory/Agent/HTTP/Client.pm b/lib/FusionInventory/Agent/HTTP/Client.pm
index 0f322c4..8c1940f 100644
--- a/lib/FusionInventory/Agent/HTTP/Client.pm
+++ b/lib/FusionInventory/Agent/HTTP/Client.pm
@@ -129,8 +129,11 @@ sub _setSSLOptions {
# SSL handling
if ($self->{no_ssl_check}) {
- # IO::Socket::SSL default behavior is to check the SSL hostname
- $self->{ua}->ssl_opts(verify_hostname => 0) if $LWP::VERSION >= 6;
+ # LWP 6 default behaviour is to check hostname
+ # Fedora also backported this behaviour change in its LWP5 package, so
+ # just checking on LWP version is not enough
+ $self->{ua}->ssl_opts(verify_hostname => 0)
+ if $self->{ua}->can('ssl_opts');
} else {
# only IO::Socket::SSL can perform full server certificate validation,
# Net::SSL is only able to check certification authority, and not
================================================================
Commit: 2599963207a1108fdfd34c4dafb7bea27162164a
https://github.com/fusinv/fusioninventory-agent/commit/2599963207a1108fdfd34c4dafb7bea27162164a
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-01-24 (Tue, 24 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Bios.pm
Log Message:
-----------
Fix: detect Win2k Xen guest
closes: #1436
Reported-by: Mario Gzuk <mariogzuk at technikz.de>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Bios.pm
index f153039..c0416f1 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Bios.pm
@@ -127,8 +127,9 @@ sub doInventory {
# if ($bmanufacturer eq 'Bochs' || $mmodel eq 'Bochs') {
# $vmsystem = 'QEMU';
# } els
-
- if ($bversion eq 'VirtualBox' || $mmodel eq 'VirtualBox') {
+ if ($smanufacturer eq 'Xen' || $bmanufacturer eq 'Xen') {
+ $vmsystem = 'Xen';
+ } elsif ($bversion eq 'VirtualBox' || $mmodel eq 'VirtualBox') {
$vmsystem = 'VirtualBox';
} elsif ($smodel =~ /VMware/i) {
$vmsystem = 'VMware';
================================================================
Commit: a97316fa3265f773ecbdfd2475505e26dc8f1e34
https://github.com/fusinv/fusioninventory-agent/commit/a97316fa3265f773ecbdfd2475505e26dc8f1e34
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-01-24 (Tue, 24 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
Log Message:
-----------
Merge fix for #1436 from '2.1.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
index b8e2f95..a3d02be 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
@@ -104,6 +104,14 @@ sub doInventory {
$inventory->setHardware ({
VMSYSTEM => 'VMware'
});
+ } elsif (
+ ($bios->{SMANUFACTURER} eq 'Xen')
+ ||
+ ($bios->{BMANUFACTURER} eq 'Xen')
+ ) {
+ $inventory->setHardware ({
+ VMSYSTEM => 'Xen'
+ });
}
}
================================================================
Commit: 39f3c75852ded3b1cb7d215c4d7f931fbd3f1d92
https://github.com/fusinv/fusioninventory-agent/commit/39f3c75852ded3b1cb7d215c4d7f931fbd3f1d92
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-01-26 (Thu, 26 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Software.pm
Log Message:
-----------
import MSIE and MS Office
Import the MSIE version from HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer
and do not ignore hidden software (SystemComponent=1) like MS Office anymore, see: #927.
This patch also add a mechanism to avoid duplicated software (see: #927)
closes: #1441
closes: #1425
closes: #1065
Reported-by: Xavier Caillaud <tsmr at thetsmr.fr>
Reported-by: Walid Nouh <walid.nouh at gmail.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Software.pm b/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Software.pm
index e50f1ce..5f85da8 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Software.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/OS/Win32/Software.pm
@@ -20,6 +20,8 @@ use Win32::TieRegistry (
use FusionInventory::Agent::Task::Inventory::OS::Win32;
+my $seen = {};
+
sub isInventoryEnabled {
return 1;
}
@@ -60,7 +62,7 @@ sub processSoftwares {
foreach my $rawGuid ( keys %$softwares ) {
my $data = $softwares->{$rawGuid};
next unless keys %$data;
-
+
my $guid = $rawGuid;
$guid =~ s/\/$//; # drop the tailing /
@@ -69,10 +71,6 @@ sub processSoftwares {
next;
}
-# See bug #927
-# http://stackoverflow.com/questions/2639513/duplicate-entries-in-uninstall-registry-key-when-compiling-list-of-installed-soft
- next if $data->{'/SystemComponent'};
-
my $name = encodeFromRegistry($data->{'/DisplayName'});
# Use the folder name if there is no DisplayName
$name = encodeFromRegistry($guid) unless $name;
@@ -95,7 +93,9 @@ sub processSoftwares {
# Workaround for #415
$version =~ s/[\000-\037].*// if $version;
- $inventory->addSoftware ({
+ addSoftware(
+ inventory => $inventory,
+ fields => {
COMMENTS => $comments,
# FILESIZE => $filesize,
# FOLDER => $folder,
@@ -117,6 +117,40 @@ sub processSoftwares {
}
}
+sub processMSIE {
+ my %params = @_;
+
+ my $inventory = $params{inventory};
+ my $is64bit = $params{is64bit} || 0;
+ my $machKey = $params{machKey};
+
+ my $name = "Internet Explorer";
+ if ($is64bit) {
+ $name .= " (64bit)";
+ }
+ my $version = $params{machKey}->{"SOFTWARE/Microsoft/Internet Explorer/Version"};
+
+ addSoftware (
+ inventory => $inventory,
+ fields => {
+ FROM => "registry",
+ IS64BIT => $is64bit,
+ NAME => $name,
+ VERSION => $version,
+ PUBLISHER => "Microsoft Corporation"
+ }
+ )
+}
+
+sub addSoftware {
+ my %params = @_;
+
+ return if $seen->{$params{fields}->{NAME}}->{$params{fields}->{IS64BIT}}{$params{fields}->{VERSION} || '_undef_'}++;
+
+ $params{inventory}->addSoftware ($params{fields});
+
+}
+
sub doInventory {
my $params = shift;
@@ -144,15 +178,28 @@ sub doInventory {
$machKey64bit->{"SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall"};
processSoftwares({ inventory => $inventory, softwares => $softwares, is64bit => 1});
+ processMSIE(
+ machKey => $machKey64bit,
+ inventory => $inventory,
+ is64bit => 1,
+ );
+
+
my $machKey32bit = $Registry->Open('LMachine', {
Access => KEY_READ | KEY_WOW64_32KEY
}) or $logger->fault("Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR");
$softwares=
$machKey32bit->{"SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall"};
-
processSoftwares({ inventory => $inventory, softwares => $softwares, is64bit => 0});
+ processMSIE(
+ machKey => $machKey32bit,
+ inventory => $inventory,
+ is64bit => 0,
+ );
+
+
} else {
my $machKey = $Registry->Open('LMachine', {
Access => KEY_READ()
@@ -160,9 +207,13 @@ sub doInventory {
my $softwares=
$machKey->{"SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall"};
-
processSoftwares({ inventory => $inventory, softwares => $softwares, is64bit => 0});
+ processMSIE(
+ machKey => $machKey,
+ inventory => $inventory,
+ is64bit => 0,
+ );
}
# Copyright (c) 2009 Megagram
================================================================
Commit: 6a87bf0852b3231db850312c66243fc8815dcb44
https://github.com/fusinv/fusioninventory-agent/commit/6a87bf0852b3231db850312c66243fc8815dcb44
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-01-26 (Thu, 26 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
Log Message:
-----------
Merge branch '2.1.x' into 2.2.x
Merge commit:39f3c75852ded3b1cb7d215c4d7f931fbd3f1d92
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index 64651a0..16331bb 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -46,8 +46,13 @@ sub doInventory {
softwares => $softwares64,
is64bit => 1
)) {
- $inventory->addEntry(section => 'SOFTWARES', entry => $software);
+ _addSoftware(inventory => $inventory, entry => $software);
}
+ _processMSIE(
+ machKey => $machKey64,
+ inventory => $inventory,
+ is64bit => 1
+ );
my $machKey32 = $Registry->Open('LMachine', {
Access => KEY_READ | KEY_WOW64_32 ## no critic (ProhibitBitwise)
@@ -60,8 +65,15 @@ sub doInventory {
softwares => $softwares32,
is64bit => 0
)) {
- $inventory->addEntry(section => 'SOFTWARES', entry => $software);
+ _addSoftware(inventory => $inventory, entry => $software);
}
+ _processMSIE(
+ machKey => $machKey64,
+ inventory => $inventory,
+ is64bit => 0
+ );
+
+
} else {
my $machKey = $Registry->Open('LMachine', {
Access => KEY_READ
@@ -74,8 +86,13 @@ sub doInventory {
softwares => $softwares,
is64bit => 0
)) {
- $inventory->addEntry(section => 'SOFTWARES', entry => $software);
+ _addSoftware(inventory => $inventory, entry => $software);
}
+ _processMSIE(
+ machKey => $machKey,
+ inventory => $inventory,
+ is64bit => 0
+ );
}
}
@@ -103,10 +120,6 @@ sub _getSoftwares {
# odd, found on Win2003
next unless keys %$data > 2;
- # See bug #927
- # http://stackoverflow.com/questions/2639513/duplicate-entries-in-uninstall-registry-key-when-compiling-list-of-installed-soft
- next if $data->{'/SystemComponent'};
-
my $guid = $rawGuid;
$guid =~ s/\/$//; # drop the tailing /
@@ -132,13 +145,47 @@ sub _getSoftwares {
# Workaround for #415
$software->{VERSION} =~ s/[\000-\037].*// if $software->{VERSION};
- # avoid duplicates
- next if $seen->{$software->{NAME}}->{$software->{VERSION} || '_undef_'}++;
-
push @softwares, $software;
}
return @softwares;
}
+sub _addSoftware {
+ my %params = @_;
+
+ my $entry = $params{entry};
+
+ # avoid duplicates
+ return if $seen->{$entry->{NAME}}->{$entry->{IS64BIT}}{$entry->{VERSION} || '_undef_'}++;
+
+ $params{inventory}->addEntry(section => 'SOFTWARES', entry => $entry);
+}
+
+sub _processMSIE {
+ my %params = @_;
+
+ my $inventory = $params{inventory};
+ my $is64bit = $params{is64bit} || 0;
+ my $machKey = $params{machKey};
+
+ my $name = "Internet Explorer";
+ if ($is64bit) {
+ $name .= " (64bit)";
+ }
+ my $version = $params{machKey}->{"SOFTWARE/Microsoft/Internet Explorer/Version"};
+
+ _addSoftware(
+ inventory => $params{inventory},
+ entry => {
+ FROM => "registry",
+ IS64BIT => $is64bit,
+ NAME => $name,
+ VERSION => $version,
+ PUBLISHER => "Microsoft Corporation"
+ });
+
+}
+
+
1;
================================================================
Commit: 30c09825abeccb8e03fb6f9f1a72d48d3d1e3011
https://github.com/fusinv/fusioninventory-agent/commit/30c09825abeccb8e03fb6f9f1a72d48d3d1e3011
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-01-26 (Thu, 26 Jan 2012)
Changed paths:
M AUTHORS
M fusioninventory-agent
M fusioninventory-injector
Log Message:
-----------
update the Copyright: add 2012
diff --git a/AUTHORS b/AUTHORS
index ae80b04..200d1d5 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -2,7 +2,7 @@ maintainer:
Gonéri LE BOUDER <goneri at rulezlan.org>
Copyright 2006-2010 OCS Inventory contributors
-Copyright 2010-2011 FusionInventory Team
+Copyright 2010-2012 FusionInventory Team
Website: http://www.fusioninventory.org
diff --git a/fusioninventory-agent b/fusioninventory-agent
index acbee13..0e3026d 100755
--- a/fusioninventory-agent
+++ b/fusioninventory-agent
@@ -639,7 +639,7 @@ http://forge.fusionInventory.org
=head1 COPYRIGHT
Copyright (C) 2006-2010 OCS Inventory contributors
-Copyright (C) 2010-2011 FusionInventory Team
+Copyright (C) 2010-2012 FusionInventory Team
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/fusioninventory-injector b/fusioninventory-injector
index 65166a0..f74d0de 100755
--- a/fusioninventory-injector
+++ b/fusioninventory-injector
@@ -2,7 +2,7 @@
###############################################################################
##Copyleft Pascal DANEK 2005
##Copyleft Goneri Le Bouder 2006
-##Copyleft FusionInventory Project 2010-2011
+##Copyleft FusionInventory Project 2010-2012
##Web : http://www.FusionInventory.org
##
##This code is open source and may be copied and modified as long as the source
================================================================
Commit: adb5e51fef8fd8cfe05a2fb0d3759cf4a8289153
https://github.com/fusinv/fusioninventory-agent/commit/adb5e51fef8fd8cfe05a2fb0d3759cf4a8289153
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-01-26 (Thu, 26 Jan 2012)
Changed paths:
M AUTHORS
M fusioninventory-agent
M fusioninventory-injector
Log Message:
-----------
Merge branch '2.1.x' into 2.2.x
diff --git a/AUTHORS b/AUTHORS
index ae80b04..200d1d5 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -2,7 +2,7 @@ maintainer:
Gonéri LE BOUDER <goneri at rulezlan.org>
Copyright 2006-2010 OCS Inventory contributors
-Copyright 2010-2011 FusionInventory Team
+Copyright 2010-2012 FusionInventory Team
Website: http://www.fusioninventory.org
diff --git a/fusioninventory-agent b/fusioninventory-agent
index af49f6d..bc9dd88 100755
--- a/fusioninventory-agent
+++ b/fusioninventory-agent
@@ -649,7 +649,7 @@ http://forge.fusionInventory.org
=head1 COPYRIGHT
Copyright (C) 2006-2010 OCS Inventory contributors
-Copyright (C) 2010-2011 FusionInventory Team
+Copyright (C) 2010-2012 FusionInventory Team
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/fusioninventory-injector b/fusioninventory-injector
index ab303c6..c45f688 100755
--- a/fusioninventory-injector
+++ b/fusioninventory-injector
@@ -2,7 +2,7 @@
###############################################################################
##Copyleft Pascal DANEK 2005
##Copyleft Goneri Le Bouder 2006
-##Copyleft FusionInventory Project 2010-2011
+##Copyleft FusionInventory Project 2010-2012
##Web : http://www.FusionInventory.org
##
##This code is open source and may be copied and modified as long as the source
================================================================
Commit: 7c62d9182855b06e4f492a478bdc0e18d195a48a
https://github.com/fusinv/fusioninventory-agent/commit/7c62d9182855b06e4f492a478bdc0e18d195a48a
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-01-29 (Sun, 29 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm
Log Message:
-----------
load Tools::MacOS for getIODevices()
closes: #1439
Reported-by: Walid Nouh <walid.nouh at gmail.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm
index f588551..4f526d9 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm
@@ -4,6 +4,7 @@ use strict;
use warnings;
use FusionInventory::Agent::Tools;
+use FusionInventory::Agent::Tools::MacOS;
my $seen;
================================================================
Commit: fac06dc1e483769841022701561fd0931eb2befc
https://github.com/fusinv/fusioninventory-agent/commit/fac06dc1e483769841022701561fd0931eb2befc
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-01-30 (Mon, 30 Jan 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Uptime.pm
A t/inventory/macos/uptime.t
Log Message:
-----------
fix: uptime on MacOSX
closes: #1440
closes: #1135
Reported-by: Walid Nouh <walid.nouh at gmail.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Uptime.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Uptime.pm
index a27de15..e890f9d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Uptime.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Uptime.pm
@@ -21,14 +21,20 @@ sub doInventory {
});
}
-sub _getUptime {
+sub _getBootTime {
my $boottime = getFirstMatch(
- pattern => qr/sec\s*=\s*(\d+)/,
+ pattern => qr/(\d+)$/,
@_,
);
+
+ return $boottime;
+}
+
+sub _getUptime {
+ my $boottime = _getBootTime(@_);
return unless $boottime;
- my $uptime = $boottime - time();
+ my $uptime = time() - $boottime;
return getFormatedGmTime($uptime);
}
diff --git a/t/inventory/macos/uptime.t b/t/inventory/macos/uptime.t
new file mode 100644
index 0000000..620634b
--- /dev/null
+++ b/t/inventory/macos/uptime.t
@@ -0,0 +1,20 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use FusionInventory::Agent::Task::Inventory::Input::MacOS::Uptime;
+
+my %tests = (
+ '1325070226' => '1325070226',
+ 'sec = 1325070226' => '1325070226'
+);
+
+plan tests => scalar keys %tests;
+
+foreach my $test (keys %tests) {
+ my $r = FusionInventory::Agent::Task::Inventory::Input::MacOS::Uptime::_getBootTime(string => $test);
+ ok($r eq $tests{$test});
+}
================================================================
Commit: d3a252b082818471bdf66fd28ea3fd9e6c492d94
https://github.com/fusinv/fusioninventory-agent/commit/d3a252b082818471bdf66fd28ea3fd9e6c492d94
Author: Jonathan Clarke <jonathan.clarke at normation.com>
Date: 2012-02-01 (Wed, 01 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/OS/Linux/Distro/NonLSB.pm
Log Message:
-----------
detect CentOS without lsb_release
closes: #1193
diff --git a/lib/FusionInventory/Agent/Task/Inventory/OS/Linux/Distro/NonLSB.pm b/lib/FusionInventory/Agent/Task/Inventory/OS/Linux/Distro/NonLSB.pm
index dfc9538..3473eaa 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/OS/Linux/Distro/NonLSB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/OS/Linux/Distro/NonLSB.pm
@@ -16,6 +16,7 @@ my @files = (
[ '/etc/knoppix_version' => 'Knoppix GNU/Linux %s' ],
[ '/etc/mandriva-release' => '%s' ],
[ '/etc/mandrake-release' => '%s' ],
+ [ '/etc/centos-release' => '%s' ],
[ '/etc/redhat-release' => '%s' ],
[ '/etc/slackware-version' => '%s' ],
[ '/etc/SuSE-release' => '%s' ],
@@ -56,6 +57,9 @@ my @filesDistros = (
# mandrake-release contains something like "Mandrakelinux release 10.1 (Community) for i586"
[ '/etc/mandrake-release' => 'Mandrake' => '.* release ([0-9\.]+).*' => '%s'],
+ # centos-release contains something like "CentOS Linux release 6.0 (Final)"
+ [ '/etc/centos-release' => 'CentOS' => '.* release ([0-9\.]+).*' => '%s' ],
+
# redhat-release contains something like "Red Hat Enterprise Linux Server release 5 (Tikanga)"
[ '/etc/redhat-release' => 'RedHat' => '.* release ([0-9\.]+).*' => '%s' ],
================================================================
Commit: b495d1ef204f924ca3db6b132f382c9fa36f9dc0
https://github.com/fusinv/fusioninventory-agent/commit/b495d1ef204f924ca3db6b132f382c9fa36f9dc0
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-01 (Wed, 01 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
Log Message:
-----------
Merge branch '2.1.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
index 207a500..a42afe6 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
@@ -36,6 +36,9 @@ my @distributions = (
# mandrake-release contains something like "Mandrakelinux release 10.1 (Community) for i586"
[ '/etc/mandrake-release', 'Mandrake', 'release ([\d.]+)', '%s'],
+ # centos-release contains something like "CentOS Linux release 6.0 (Final)
+ [ '/etc/centos-release', 'CentOS', 'release ([\d.]+)', '%s' ],
+
# redhat-release contains something like "Red Hat Enterprise Linux Server release 5 (Tikanga)"
[ '/etc/redhat-release', 'RedHat', 'release ([\d.]+)', '%s' ],
================================================================
Commit: a9ee803cc349bafce138621946e84cd50885e498
https://github.com/fusinv/fusioninventory-agent/commit/a9ee803cc349bafce138621946e84cd50885e498
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-01 (Wed, 01 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Client/OCS.pm
M t/components/client/ocs/compression.t
Log Message:
-----------
use official compression format name, and set content-type accordingly
diff --git a/lib/FusionInventory/Agent/HTTP/Client/OCS.pm b/lib/FusionInventory/Agent/HTTP/Client/OCS.pm
index 4ba93ab..9c001f4 100644
--- a/lib/FusionInventory/Agent/HTTP/Client/OCS.pm
+++ b/lib/FusionInventory/Agent/HTTP/Client/OCS.pm
@@ -23,21 +23,24 @@ sub new {
# check compression mode
if (Compress::Zlib->require()) {
- $self->{compression} = 'native';
- $self->{ua}->default_header('Content-type' => 'application/x-compress');
+ # RFC 1950
+ $self->{compression} = 'zlib';
+ $self->{ua}->default_header('Content-type' => 'application/x-compress-zlib');
$self->{logger}->debug(
$log_prefix .
'Using Compress::Zlib for compression'
);
} elsif (canRun('gzip')) {
+ # RFC 1952
$self->{compression} = 'gzip';
- $self->{ua}->default_header('Content-type' => 'application/x-compress');
+ $self->{ua}->default_header('Content-type' => 'application/x-compress-gzip');
$self->{logger}->debug(
$log_prefix .
'Using gzip for compression'
);
} else {
$self->{compression} = 'none';
+ $self->{ua}->default_header('Content-type' => 'application/xml');
$self->{logger}->debug(
$log_prefix .
'Not using compression'
@@ -110,9 +113,9 @@ sub _compress {
my ($self, $data) = @_;
return
- $self->{compression} eq 'native' ? $self->_compressNative($data) :
- $self->{compression} eq 'gzip' ? $self->_compressGzip($data) :
- $data;
+ $self->{compression} eq 'zlib' ? $self->_compressZlib($data) :
+ $self->{compression} eq 'gzip' ? $self->_compressGzip($data) :
+ $data;
}
sub _uncompress {
@@ -120,7 +123,7 @@ sub _uncompress {
if ($data =~ /(\x78\x9C.*)/s) {
$self->{logger}->debug2("format: Zlib");
- return $self->_uncompressNative($1);
+ return $self->_uncompressZlib($1);
} elsif ($data =~ /(\x1F\x8B\x08.*)/s) {
$self->{logger}->debug2("format: Gzip");
return $self->_uncompressGzip($1);
@@ -133,7 +136,7 @@ sub _uncompress {
}
}
-sub _compressNative {
+sub _compressZlib {
my ($self, $data) = @_;
return Compress::Zlib::compress($data);
@@ -160,7 +163,7 @@ sub _compressGzip {
return $result;
}
-sub _uncompressNative {
+sub _uncompressZlib {
my ($self, $data) = @_;
return Compress::Zlib::uncompress($data);
diff --git a/t/components/client/ocs/compression.t b/t/components/client/ocs/compression.t
index de0edad..f7fa57a 100755
--- a/t/components/client/ocs/compression.t
+++ b/t/components/client/ocs/compression.t
@@ -16,7 +16,7 @@ my $client = FusionInventory::Agent::HTTP::Client::OCS->new();
my $data = "this is a test";
is(
- $client->_uncompressNative($client->_compressNative($data)),
+ $client->_uncompressZlib($client->_compressZlib($data)),
$data,
'round-trip compression with Compress::Zlib'
);
================================================================
Commit: aa708b9d44310e4646bdb9b9136f5ed51f6efc70
https://github.com/fusinv/fusioninventory-agent/commit/aa708b9d44310e4646bdb9b9136f5ed51f6efc70
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-01 (Wed, 01 Feb 2012)
Changed paths:
M AUTHORS
M fusioninventory-agent
M fusioninventory-injector
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Uptime.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
A t/inventory/macos/uptime.t
Log Message:
-----------
Merge remote-tracking branch 'forge/2.2.x' into 2.2.x
diff --git a/AUTHORS b/AUTHORS
index ae80b04..200d1d5 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -2,7 +2,7 @@ maintainer:
Gonéri LE BOUDER <goneri at rulezlan.org>
Copyright 2006-2010 OCS Inventory contributors
-Copyright 2010-2011 FusionInventory Team
+Copyright 2010-2012 FusionInventory Team
Website: http://www.fusioninventory.org
diff --git a/fusioninventory-agent b/fusioninventory-agent
index af49f6d..bc9dd88 100755
--- a/fusioninventory-agent
+++ b/fusioninventory-agent
@@ -649,7 +649,7 @@ http://forge.fusionInventory.org
=head1 COPYRIGHT
Copyright (C) 2006-2010 OCS Inventory contributors
-Copyright (C) 2010-2011 FusionInventory Team
+Copyright (C) 2010-2012 FusionInventory Team
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/fusioninventory-injector b/fusioninventory-injector
index ab303c6..c45f688 100755
--- a/fusioninventory-injector
+++ b/fusioninventory-injector
@@ -2,7 +2,7 @@
###############################################################################
##Copyleft Pascal DANEK 2005
##Copyleft Goneri Le Bouder 2006
-##Copyleft FusionInventory Project 2010-2011
+##Copyleft FusionInventory Project 2010-2012
##Web : http://www.FusionInventory.org
##
##This code is open source and may be copied and modified as long as the source
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
index 207a500..a42afe6 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
@@ -36,6 +36,9 @@ my @distributions = (
# mandrake-release contains something like "Mandrakelinux release 10.1 (Community) for i586"
[ '/etc/mandrake-release', 'Mandrake', 'release ([\d.]+)', '%s'],
+ # centos-release contains something like "CentOS Linux release 6.0 (Final)
+ [ '/etc/centos-release', 'CentOS', 'release ([\d.]+)', '%s' ],
+
# redhat-release contains something like "Red Hat Enterprise Linux Server release 5 (Tikanga)"
[ '/etc/redhat-release', 'RedHat', 'release ([\d.]+)', '%s' ],
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm
index f588551..4f526d9 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm
@@ -4,6 +4,7 @@ use strict;
use warnings;
use FusionInventory::Agent::Tools;
+use FusionInventory::Agent::Tools::MacOS;
my $seen;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Uptime.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Uptime.pm
index a27de15..e890f9d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Uptime.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Uptime.pm
@@ -21,14 +21,20 @@ sub doInventory {
});
}
-sub _getUptime {
+sub _getBootTime {
my $boottime = getFirstMatch(
- pattern => qr/sec\s*=\s*(\d+)/,
+ pattern => qr/(\d+)$/,
@_,
);
+
+ return $boottime;
+}
+
+sub _getUptime {
+ my $boottime = _getBootTime(@_);
return unless $boottime;
- my $uptime = $boottime - time();
+ my $uptime = time() - $boottime;
return getFormatedGmTime($uptime);
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
index b8e2f95..a3d02be 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
@@ -104,6 +104,14 @@ sub doInventory {
$inventory->setHardware ({
VMSYSTEM => 'VMware'
});
+ } elsif (
+ ($bios->{SMANUFACTURER} eq 'Xen')
+ ||
+ ($bios->{BMANUFACTURER} eq 'Xen')
+ ) {
+ $inventory->setHardware ({
+ VMSYSTEM => 'Xen'
+ });
}
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index 64651a0..16331bb 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -46,8 +46,13 @@ sub doInventory {
softwares => $softwares64,
is64bit => 1
)) {
- $inventory->addEntry(section => 'SOFTWARES', entry => $software);
+ _addSoftware(inventory => $inventory, entry => $software);
}
+ _processMSIE(
+ machKey => $machKey64,
+ inventory => $inventory,
+ is64bit => 1
+ );
my $machKey32 = $Registry->Open('LMachine', {
Access => KEY_READ | KEY_WOW64_32 ## no critic (ProhibitBitwise)
@@ -60,8 +65,15 @@ sub doInventory {
softwares => $softwares32,
is64bit => 0
)) {
- $inventory->addEntry(section => 'SOFTWARES', entry => $software);
+ _addSoftware(inventory => $inventory, entry => $software);
}
+ _processMSIE(
+ machKey => $machKey64,
+ inventory => $inventory,
+ is64bit => 0
+ );
+
+
} else {
my $machKey = $Registry->Open('LMachine', {
Access => KEY_READ
@@ -74,8 +86,13 @@ sub doInventory {
softwares => $softwares,
is64bit => 0
)) {
- $inventory->addEntry(section => 'SOFTWARES', entry => $software);
+ _addSoftware(inventory => $inventory, entry => $software);
}
+ _processMSIE(
+ machKey => $machKey,
+ inventory => $inventory,
+ is64bit => 0
+ );
}
}
@@ -103,10 +120,6 @@ sub _getSoftwares {
# odd, found on Win2003
next unless keys %$data > 2;
- # See bug #927
- # http://stackoverflow.com/questions/2639513/duplicate-entries-in-uninstall-registry-key-when-compiling-list-of-installed-soft
- next if $data->{'/SystemComponent'};
-
my $guid = $rawGuid;
$guid =~ s/\/$//; # drop the tailing /
@@ -132,13 +145,47 @@ sub _getSoftwares {
# Workaround for #415
$software->{VERSION} =~ s/[\000-\037].*// if $software->{VERSION};
- # avoid duplicates
- next if $seen->{$software->{NAME}}->{$software->{VERSION} || '_undef_'}++;
-
push @softwares, $software;
}
return @softwares;
}
+sub _addSoftware {
+ my %params = @_;
+
+ my $entry = $params{entry};
+
+ # avoid duplicates
+ return if $seen->{$entry->{NAME}}->{$entry->{IS64BIT}}{$entry->{VERSION} || '_undef_'}++;
+
+ $params{inventory}->addEntry(section => 'SOFTWARES', entry => $entry);
+}
+
+sub _processMSIE {
+ my %params = @_;
+
+ my $inventory = $params{inventory};
+ my $is64bit = $params{is64bit} || 0;
+ my $machKey = $params{machKey};
+
+ my $name = "Internet Explorer";
+ if ($is64bit) {
+ $name .= " (64bit)";
+ }
+ my $version = $params{machKey}->{"SOFTWARE/Microsoft/Internet Explorer/Version"};
+
+ _addSoftware(
+ inventory => $params{inventory},
+ entry => {
+ FROM => "registry",
+ IS64BIT => $is64bit,
+ NAME => $name,
+ VERSION => $version,
+ PUBLISHER => "Microsoft Corporation"
+ });
+
+}
+
+
1;
diff --git a/t/inventory/macos/uptime.t b/t/inventory/macos/uptime.t
new file mode 100644
index 0000000..620634b
--- /dev/null
+++ b/t/inventory/macos/uptime.t
@@ -0,0 +1,20 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use FusionInventory::Agent::Task::Inventory::Input::MacOS::Uptime;
+
+my %tests = (
+ '1325070226' => '1325070226',
+ 'sec = 1325070226' => '1325070226'
+);
+
+plan tests => scalar keys %tests;
+
+foreach my $test (keys %tests) {
+ my $r = FusionInventory::Agent::Task::Inventory::Input::MacOS::Uptime::_getBootTime(string => $test);
+ ok($r eq $tests{$test});
+}
================================================================
Commit: 96247f6916c90a9f466925156875f3494d7a4647
https://github.com/fusinv/fusioninventory-agent/commit/96247f6916c90a9f466925156875f3494d7a4647
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-02 (Thu, 02 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task.pm
Log Message:
-----------
document isEnabled method, for sake of subclass pod coverage
diff --git a/lib/FusionInventory/Agent/Task.pm b/lib/FusionInventory/Agent/Task.pm
index 5e9023a..5d78c9f 100644
--- a/lib/FusionInventory/Agent/Task.pm
+++ b/lib/FusionInventory/Agent/Task.pm
@@ -110,9 +110,13 @@ the logger object to use (default: a new stderr logger)
=back
+=head2 isEnabled()
+
+This is a method to be implemented by each subclass.
+
=head2 run()
-This is the method to be implemented by each subclass.
+This is a method to be implemented by each subclass.
=head2 getOptionsFromServer($response, $name, $feature)
================================================================
Commit: 4b96d7d7642560525e7eac2eb62f159bba8f5a54
https://github.com/fusinv/fusioninventory-agent/commit/4b96d7d7642560525e7eac2eb62f159bba8f5a54
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-09 (Thu, 09 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Videos.pm
Log Message:
-----------
fix: use Inventory->addVideo, addEntry is not exported
Inventory->addEntry is avalaible in 2.2.0+.
diff --git a/lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Videos.pm b/lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Videos.pm
index c3d2be7..39e8dc9 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Videos.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Videos.pm
@@ -79,10 +79,8 @@ sub doInventory {
my %displays = _getDisplays();
foreach my $section (keys %displays ) {
foreach (@{$displays{$section}}) {
- $inventory->addEntry(
- section => $section,
- entry => $_,
- );
+ $inventory->addVideo(
+ entry => $_
}
}
}
================================================================
Commit: 4283abb7652e488e93447ea84c16cc55c6454a6a
https://github.com/fusinv/fusioninventory-agent/commit/4283abb7652e488e93447ea84c16cc55c6454a6a
Author: Remi Collet <fedora at famillecollet.com>
Date: 2012-02-10 (Fri, 10 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Network.pm
Log Message:
-----------
SSL: put back add the end of the server FQDN
diff --git a/lib/FusionInventory/Agent/Network.pm b/lib/FusionInventory/Agent/Network.pm
index 4d4dfaf..298f0ad 100644
--- a/lib/FusionInventory/Agent/Network.pm
+++ b/lib/FusionInventory/Agent/Network.pm
@@ -365,7 +365,7 @@ sub setSslRemoteHost {
$re =~ s/:\d+//;
# Accept SSL cert will hostname with wild-card
# http://forge.fusioninventory.org/issues/542
- $re =~ s/^([^\.]+)/($1|\\*)/;
+ $re =~ s/^([^\.]+)/($1|\\*).$2/;
# protect some characters, $re will be evaluated as a regex
$re =~ s/([\-\.])/\\$1/g;
$ua->default_header('If-SSL-Cert-Subject' => '/CN='.$re.'($|\/)');
================================================================
Commit: 42ee703c9d77d643dacf0a749ebf745f2a64411a
https://github.com/fusinv/fusioninventory-agent/commit/42ee703c9d77d643dacf0a749ebf745f2a64411a
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-10 (Fri, 10 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Network.pm
Log Message:
-----------
Revert "SSL: put back add the end of the server FQDN"
This reverts commit 4283abb7652e488e93447ea84c16cc55c6454a6a.
diff --git a/lib/FusionInventory/Agent/Network.pm b/lib/FusionInventory/Agent/Network.pm
index 298f0ad..4d4dfaf 100644
--- a/lib/FusionInventory/Agent/Network.pm
+++ b/lib/FusionInventory/Agent/Network.pm
@@ -365,7 +365,7 @@ sub setSslRemoteHost {
$re =~ s/:\d+//;
# Accept SSL cert will hostname with wild-card
# http://forge.fusioninventory.org/issues/542
- $re =~ s/^([^\.]+)/($1|\\*).$2/;
+ $re =~ s/^([^\.]+)/($1|\\*)/;
# protect some characters, $re will be evaluated as a regex
$re =~ s/([\-\.])/\\$1/g;
$ua->default_header('If-SSL-Cert-Subject' => '/CN='.$re.'($|\/)');
================================================================
Commit: 8f07b5fdbac8e31f1202add5eb40fe79b6bb5675
https://github.com/fusinv/fusioninventory-agent/commit/8f07b5fdbac8e31f1202add5eb40fe79b6bb5675
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-10 (Fri, 10 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
Log Message:
-----------
use parentIdPrefix to match USB printer
this value is present on all Windows flavor, whereas containerId seems
to be present only starting with Windows 7.
Also, isolate prefix and serial extraction into function for testing
purpose.
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
index 4e6ab66..43dc600 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
@@ -102,7 +102,7 @@ sub doInventory {
}
# Search serial when connected in USB
-sub _getUSBPrinterSerial {
+sub _getUSBPrinterSerialNumber {
my ($portName) = @_;
my $machKey = $Registry->Open('LMachine', {
@@ -110,45 +110,62 @@ sub _getUSBPrinterSerial {
}) or die "Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR";
# first, find the USB container ID for this printer
- my $usbId;
- my $usbprintKey = $machKey->{"SYSTEM/CurrentControlSet/Enum/USBPRINT"};
+ my $prefix = _getUSBPrefix(
+ $machKey->{"SYSTEM/CurrentControlSet/Enum/USBPRINT"},
+ $portName
+ );
+ return unless $prefix;
+
+ # second, get the serial number from the ID container entry
+ my $serial = _getUSBSerial(
+ $machKey->{"SYSTEM/CurrentControlSet/Enum/USB"},
+ $prefix
+ );
+
+ return $serial;
+}
+
+sub _getUSBPrefix {
+ my ($printKey, $portName) = @_;
# find the printer entry matching given portname
- PRINTER: foreach my $printerKey (values %$usbprintKey) {
+ foreach my $printerKey (values %$printKey) {
# look for a subkey with expected content
- foreach my $subKey (values %$printerKey) {
+ foreach my $subKeyName (keys %$printerKey) {
+ my $subKey = $printerKey->{$subKeyName};
next unless
$subKey->{'Device Parameters/'} &&
$subKey->{'Device Parameters/'}->{'/PortName'} &&
$subKey->{'Device Parameters/'}->{'/PortName'} eq $portName;
# got it
- $usbId = $subKey->{'/ContainerID'};
- last PRINTER;
+ my $prefix = $subKeyName;
+ $prefix =~ s{&$portName/$}{};
+ return $prefix;
};
}
- return unless $usbId;
+ return;
+}
- # second, get the serial number from the ID container entry
- my $serial;
- my $usbKey = $machKey->{"SYSTEM/CurrentControlSet/Enum/USB"};
+sub _getUSBSerial {
+ my ($usbKey, $prefix) = @_;
# find the device entry matching given container Id
- DEVICE: foreach my $deviceKey (values %$usbKey) {
+ foreach my $deviceKey (values %$usbKey) {
# look for a subkey with expected content
foreach my $subKeyName (keys %$deviceKey) {
my $subKey = $deviceKey->{$subKeyName};
next unless
- $subKey->{'/ContainerId'} &&
- $subKey->{'/ContainerId'} eq $usbId;
+ $subKey->{'/ParentIdPrefix'} &&
+ $subKey->{'/ParentIdPrefix'} eq $prefix;
# got it
- $serial = $subKeyName;
+ my $serial = $subKeyName;
$serial =~ s{/$}{};
- last DEVICE;
+ return $serial;
}
}
- return $serial;
+ return;
}
1;
================================================================
Commit: 4091aa0a88588bfce53bff7187fc0d51c8df1f7f
https://github.com/fusinv/fusioninventory-agent/commit/4091aa0a88588bfce53bff7187fc0d51c8df1f7f
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-12 (Sun, 12 Feb 2012)
Changed paths:
M resources/win32/printer/xppro2/USB.reg
M resources/win32/printer/xppro2/USBPRINT.reg
Log Message:
-----------
use files from ticket #1328, instead of duplicating existing ones
diff --git a/resources/win32/printer/xppro2/USB.reg b/resources/win32/printer/xppro2/USB.reg
index c6f39c1..64ad002 100644
Binary files a/resources/win32/printer/xppro2/USB.reg and b/resources/win32/printer/xppro2/USB.reg differ
diff --git a/resources/win32/printer/xppro2/USBPRINT.reg b/resources/win32/printer/xppro2/USBPRINT.reg
index 14e5c89..274dbac 100644
Binary files a/resources/win32/printer/xppro2/USBPRINT.reg and b/resources/win32/printer/xppro2/USBPRINT.reg differ
================================================================
Commit: 6f453ad1138574e8da94ebbc0a39f2763678c42f
https://github.com/fusinv/fusioninventory-agent/commit/6f453ad1138574e8da94ebbc0a39f2763678c42f
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-12 (Sun, 12 Feb 2012)
Changed paths:
A t/inventory/windows/printers.t
Log Message:
-----------
initial import
diff --git a/t/inventory/windows/printers.t b/t/inventory/windows/printers.t
new file mode 100755
index 0000000..8d3a4ee
--- /dev/null
+++ b/t/inventory/windows/printers.t
@@ -0,0 +1,94 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use English qw(-no_match_vars);
+use Test::More;
+use UNIVERSAL::require;
+
+BEGIN {
+ # use mock modules for non-available ones
+ push @INC, 't/fake/windows' if $OSNAME ne 'MSWin32';
+}
+use FusionInventory::Agent::Task::Inventory::Input::Win32::Printers;
+
+my %tests = (
+ xppro1 => {
+ USB001 => [ '6&397bdcac&0', '49R8Ka' ],
+ USB002 => [ '6&2ad9257f&0', '5&19d1ce61&0&2' ],
+ USB003 => [ '6&1605722f&0', '5&2377f6ef&0&2' ],
+ },
+ xppro2 => {
+ USB001 => [ '6&1086615&0', 'J5J126789' ],
+ USB003 => [ '6&159b6df2&0', 'JV40VNJ' ],
+ USB004 => [ '7&20bd29b5&0', '6&28e27c3d&0&0000' ],
+ }
+);
+
+my $plan = 0;
+foreach my $test (keys %tests) {
+ $plan += 2 * scalar (keys $tests{$test});
+}
+plan tests => $plan;
+
+foreach my $test (keys %tests) {
+ my $printKey = load_registry("resources/win32/printer/$test/USBPRINT.reg");
+ my $usbKey = load_registry("resources/win32/printer/$test/USB.reg");
+ foreach my $port (keys $tests{$test}) {
+ my $prefix = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBPrefix($printKey, $port);
+ my $serial = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBSerial($usbKey, $prefix);
+
+ is($prefix, $tests{$test}->{$port}->[0], "prefix for printer $port");
+ is($serial, $tests{$test}->{$port}->[1], "serial for printer $port");
+ }
+}
+
+sub load_registry {
+ my ($file) = @_;
+
+ my $root_offset;
+ my $root_key = {};
+ my $current_key;
+
+ open (my $handle, '<:encoding(UTF-16LE)', $file) or die();
+ while (my $line = <$handle>) {
+
+ if ($line =~ /^ \[ ([^]]+) \]/x) {
+ my $path = $1;
+ my @path = split(/\\/, $path);
+
+ if ($root_offset) {
+ splice @path, 0, $root_offset;
+ $current_key = $root_key;
+ foreach my $element (@path) {
+ my $key_path = $element . '/';
+
+ if (!defined $current_key->{$key_path}) {
+ my $new_key = {};
+ $current_key->{$key_path} = $new_key;
+ }
+
+ $current_key = $current_key->{$key_path};
+ }
+ } else {
+ $root_offset = scalar @path;
+ }
+ next;
+ }
+
+ if ($line =~ /^ " ([^"]+) " = dword:(\d+)/x) {
+ $current_key->{'/' . $1} = "0x$2";
+ next;
+ }
+
+ if ($line =~ /^ " ([^"]+) " = " ([^"]+) "/x) {
+ $current_key->{'/' . $1} = $2;
+ next;
+ }
+
+ }
+ close $handle;
+
+ return $root_key;
+}
================================================================
Commit: efe114f5be499bc2d60b44ad7e18c9b66d255ad9
https://github.com/fusinv/fusioninventory-agent/commit/efe114f5be499bc2d60b44ad7e18c9b66d255ad9
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-12 (Sun, 12 Feb 2012)
Changed paths:
M fusioninventory-win32-service
Log Message:
-----------
use direct object syntax
diff --git a/fusioninventory-win32-service b/fusioninventory-win32-service
index e7c1078..0a5c624 100644
--- a/fusioninventory-win32-service
+++ b/fusioninventory-win32-service
@@ -100,7 +100,7 @@ sub getMessage {
sub startAgent {
return if $thread;
$thread = threads->create(sub {
- my $agent = new FusionInventory::Agent(
+ my $agent = FusionInventory::Agent->new(
confdir => $directory . '/../../etc/fusioninventory',
datadir => $directory . '/../../share',
vardir => $directory . '/../../var',
================================================================
Commit: f87388d9412c25f62551851e5bb3d18cb86e59c7
https://github.com/fusinv/fusioninventory-agent/commit/f87388d9412c25f62551851e5bb3d18cb86e59c7
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-12 (Sun, 12 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
Log Message:
-----------
fix method name
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
index 43dc600..48e8e6d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
@@ -101,8 +101,7 @@ sub doInventory {
}
}
-# Search serial when connected in USB
-sub _getUSBPrinterSerialNumber {
+sub _getUSBPrinterSerial {
my ($portName) = @_;
my $machKey = $Registry->Open('LMachine', {
================================================================
Commit: e27f04e6287b2ab6d48117b4d1c4f32b3e0282a7
https://github.com/fusinv/fusioninventory-agent/commit/e27f04e6287b2ab6d48117b4d1c4f32b3e0282a7
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-12 (Sun, 12 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
Log Message:
-----------
handle another date format
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index 16331bb..a36f322 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -102,9 +102,15 @@ sub _dateFormat {
## no critic (ExplicitReturnUndef)
return undef unless $date;
- return unless $date =~ /^(\d{4})(\d{2})(\d{2})/;
+ if ($date =~ /^(\d{4})(\d{1})(\d{2})$/) {
+ return "$3/0$2/$1";
+ }
+
+ if ($date =~ /^(\d{4})(\d{2})(\d{2})$/) {
+ return "$3/$2/$1";
+ }
- return "$3/$2/$1";
+ return undef;
}
sub _getSoftwares {
================================================================
Commit: 3dd0e8d97c46e16dbe5a85229b7b6d12ca7fd25e
https://github.com/fusinv/fusioninventory-agent/commit/3dd0e8d97c46e16dbe5a85229b7b6d12ca7fd25e
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-12 (Sun, 12 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Slots.pm
Log Message:
-----------
no such attribute in inventory
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Slots.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Slots.pm
index ae9960a..cde477e 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Slots.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Slots.pm
@@ -17,9 +17,7 @@ sub doInventory {
foreach my $object (getWmiObjects(
class => 'Win32_SystemSlot',
- properties => [ qw/
- Name Description SlotDesignation Status Shared
- / ]
+ properties => [ qw/Name Description SlotDesignation Status/ ]
)) {
$inventory->addEntry(
@@ -29,7 +27,6 @@ sub doInventory {
DESCRIPTION => $object->{Description},
DESIGNATION => $object->{SlotDesignation},
STATUS => $object->{Status},
- SHARED => $object->{Shared}
}
);
}
================================================================
Commit: f0629876f8d17d8aecb44f680061ac4d3fbbcb68
https://github.com/fusinv/fusioninventory-agent/commit/f0629876f8d17d8aecb44f680061ac4d3fbbcb68
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-12 (Sun, 12 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Slots.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Slots.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Slots.pm
index ae9960a..cde477e 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Slots.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Slots.pm
@@ -17,9 +17,7 @@ sub doInventory {
foreach my $object (getWmiObjects(
class => 'Win32_SystemSlot',
- properties => [ qw/
- Name Description SlotDesignation Status Shared
- / ]
+ properties => [ qw/Name Description SlotDesignation Status/ ]
)) {
$inventory->addEntry(
@@ -29,7 +27,6 @@ sub doInventory {
DESCRIPTION => $object->{Description},
DESIGNATION => $object->{SlotDesignation},
STATUS => $object->{Status},
- SHARED => $object->{Shared}
}
);
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index 16331bb..a36f322 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -102,9 +102,15 @@ sub _dateFormat {
## no critic (ExplicitReturnUndef)
return undef unless $date;
- return unless $date =~ /^(\d{4})(\d{2})(\d{2})/;
+ if ($date =~ /^(\d{4})(\d{1})(\d{2})$/) {
+ return "$3/0$2/$1";
+ }
+
+ if ($date =~ /^(\d{4})(\d{2})(\d{2})$/) {
+ return "$3/$2/$1";
+ }
- return "$3/$2/$1";
+ return undef;
}
sub _getSoftwares {
================================================================
Commit: b0674e33d9059117f6542c500b200a89079b6b47
https://github.com/fusinv/fusioninventory-agent/commit/b0674e33d9059117f6542c500b200a89079b6b47
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-14 (Tue, 14 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm
Log Message:
-----------
isolate devices extraction for testing purposes
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm
index 2d95ff3..80005b4 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm
@@ -16,6 +16,18 @@ sub doInventory {
my $inventory = $params{inventory};
+ foreach my $device (_getUSBDevices()) {
+ $inventory->addEntry(
+ section => 'USBDEVICES',
+ entry => $device
+ );
+ }
+}
+
+sub _getUSBDevices {
+
+ my @devices;
+
foreach my $object (getWmiObjects(
class => 'CIM_LogicalDevice',
properties => [ qw/DeviceID Name/ ]
@@ -37,11 +49,10 @@ sub doInventory {
# avoid duplicates
next if $seen->{$device->{SERIAL}}++;
- $inventory->addEntry(
- section => 'USBDEVICES',
- entry => $device
- );
+ push @devices, $device;
}
+
+ return @devices;
}
1;
================================================================
Commit: 0c88939d84af39125139ff7250c395ce90e818d0
https://github.com/fusinv/fusioninventory-agent/commit/0c88939d84af39125139ff7250c395ce90e818d0
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-14 (Tue, 14 Feb 2012)
Changed paths:
A resources/win32/wmi/7-CIM_LogicalDevice
A t/inventory/windows/usb.t
Log Message:
-----------
initial import
diff --git a/resources/win32/wmi/7-CIM_LogicalDevice b/resources/win32/wmi/7-CIM_LogicalDevice
new file mode 100644
index 0000000..b49efba
Binary files /dev/null and b/resources/win32/wmi/7-CIM_LogicalDevice differ
diff --git a/t/inventory/windows/usb.t b/t/inventory/windows/usb.t
new file mode 100755
index 0000000..99ff736
--- /dev/null
+++ b/t/inventory/windows/usb.t
@@ -0,0 +1,117 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use utf8;
+
+use English qw(-no_match_vars);
+use Test::More;
+use Test::MockModule;
+
+BEGIN {
+ # use mock modules for non-available ones
+ push @INC, 't/fake/windows' if $OSNAME ne 'MSWin32';
+}
+
+use FusionInventory::Agent::Task::Inventory::Input::Win32::USB;
+
+my %tests = (
+ 7 => [
+ {
+ NAME => 'Périphérique audio USB',
+ SERIAL => 'MI_02\\7',
+ VENDORID => '046D',
+ PRODUCTID => '08C9'
+ },
+ {
+ NAME => 'Périphérique d’entrée USB',
+ SERIAL => 'MI_01\\7',
+ VENDORID => '046D',
+ PRODUCTID => 'C30A'
+ },
+ {
+ NAME => 'Generic USB Hub',
+ SERIAL => '1C9B8E1E',
+ VENDORID => '8087',
+ PRODUCTID => '0024'
+ },
+ {
+ NAME => 'Generic USB Hub',
+ SERIAL => '355C47BA',
+ VENDORID => '8087',
+ PRODUCTID => '0024'
+ },
+ {
+ NAME => 'ASUS Bluetooth',
+ SERIAL => 'DF2EE03',
+ VENDORID => '0B05',
+ PRODUCTID => '179C'
+ },
+ {
+ NAME => 'Périphérique USB composite',
+ SERIAL => '\\6BE882AB',
+ VENDORID => '046D',
+ PRODUCTID => '08C9'
+ },
+ {
+ NAME => 'Périphérique vidéo USB',
+ SERIAL => 'MI_00\\7',
+ VENDORID => '046D',
+ PRODUCTID => '08C9'
+ }
+ ]
+);
+
+plan tests => scalar keys %tests;
+
+my $module = Test::MockModule->new(
+ 'FusionInventory::Agent::Task::Inventory::Input::Win32::USB'
+);
+
+foreach my $test (keys %tests) {
+ # redefine getWmiObjects function
+ $module->mock(
+ 'getWmiObjects',
+ sub {
+ my (%params) = @_;
+
+ my $file = "resources/win32/wmi/$test-$params{class}";
+ open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
+
+ # this is a windows file
+ binmode $handle, ':encoding(UTF-16LE)';
+ binmode $handle, ':crlf';
+
+ # build a list of desired properties indexes
+ my %properties = map { $_ => 1 } @{$params{properties}};
+
+ my @objects;
+ my $object;
+ while (my $line = <$handle>) {
+ if ($line =~ /^(\w+)=(.+)$/) {
+ my $key = $1;
+ my $value = $2;
+ next unless $properties{$key};
+ $value =~ s/&/&/g;
+ $object->{$key} = $value;
+ next;
+ }
+ if ($line =~ /^$/) {
+ push @objects, $object if $object;
+ undef $object;
+ next;
+ }
+ }
+ close $handle;
+
+ return @objects;
+ }
+ );
+
+ my @devices = FusionInventory::Agent::Task::Inventory::Input::Win32::USB::_getUSBDevices();
+ is_deeply(
+ \@devices,
+ $tests{$test},
+ "$test USB devices list"
+ );
+}
================================================================
Commit: 8b73a097fbd30ee7fa9a3fa8441332f33ff13a5f
https://github.com/fusinv/fusioninventory-agent/commit/8b73a097fbd30ee7fa9a3fa8441332f33ff13a5f
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-14 (Tue, 14 Feb 2012)
Changed paths:
R resources/win32/printer/xppro1/USB.reg
R resources/win32/printer/xppro1/USBPRINT.reg
R resources/win32/printer/xppro2/USB.reg
R resources/win32/printer/xppro2/USBPRINT.reg
A resources/win32/registry/7-USB.reg
A resources/win32/registry/7-USBPRINT.reg
A resources/win32/registry/xppro1-USB.reg
A resources/win32/registry/xppro1-USBPRINT.reg
A resources/win32/registry/xppro2-USB.reg
A resources/win32/registry/xppro2-USBPRINT.reg
M t/inventory/windows/printers.t
Log Message:
-----------
reorganise registry samples, and add 7 sample
diff --git a/resources/win32/printer/xppro1/USB.reg b/resources/win32/printer/xppro1/USB.reg
deleted file mode 100644
index c6f39c1..0000000
Binary files a/resources/win32/printer/xppro1/USB.reg and /dev/null differ
diff --git a/resources/win32/printer/xppro1/USBPRINT.reg b/resources/win32/printer/xppro1/USBPRINT.reg
deleted file mode 100644
index 14e5c89..0000000
Binary files a/resources/win32/printer/xppro1/USBPRINT.reg and /dev/null differ
diff --git a/resources/win32/printer/xppro2/USB.reg b/resources/win32/printer/xppro2/USB.reg
deleted file mode 100644
index 64ad002..0000000
Binary files a/resources/win32/printer/xppro2/USB.reg and /dev/null differ
diff --git a/resources/win32/printer/xppro2/USBPRINT.reg b/resources/win32/printer/xppro2/USBPRINT.reg
deleted file mode 100644
index 274dbac..0000000
Binary files a/resources/win32/printer/xppro2/USBPRINT.reg and /dev/null differ
diff --git a/resources/win32/registry/7-USB.reg b/resources/win32/registry/7-USB.reg
new file mode 100644
index 0000000..2639a4a
Binary files /dev/null and b/resources/win32/registry/7-USB.reg differ
diff --git a/resources/win32/registry/7-USBPRINT.reg b/resources/win32/registry/7-USBPRINT.reg
new file mode 100644
index 0000000..a92d04f
Binary files /dev/null and b/resources/win32/registry/7-USBPRINT.reg differ
diff --git a/resources/win32/registry/xppro1-USB.reg b/resources/win32/registry/xppro1-USB.reg
new file mode 100644
index 0000000..c6f39c1
Binary files /dev/null and b/resources/win32/registry/xppro1-USB.reg differ
diff --git a/resources/win32/registry/xppro1-USBPRINT.reg b/resources/win32/registry/xppro1-USBPRINT.reg
new file mode 100644
index 0000000..14e5c89
Binary files /dev/null and b/resources/win32/registry/xppro1-USBPRINT.reg differ
diff --git a/resources/win32/registry/xppro2-USB.reg b/resources/win32/registry/xppro2-USB.reg
new file mode 100644
index 0000000..64ad002
Binary files /dev/null and b/resources/win32/registry/xppro2-USB.reg differ
diff --git a/resources/win32/registry/xppro2-USBPRINT.reg b/resources/win32/registry/xppro2-USBPRINT.reg
new file mode 100644
index 0000000..274dbac
Binary files /dev/null and b/resources/win32/registry/xppro2-USBPRINT.reg differ
diff --git a/t/inventory/windows/printers.t b/t/inventory/windows/printers.t
index 8d3a4ee..2fe6ef6 100755
--- a/t/inventory/windows/printers.t
+++ b/t/inventory/windows/printers.t
@@ -23,6 +23,9 @@ my %tests = (
USB001 => [ '6&1086615&0', 'J5J126789' ],
USB003 => [ '6&159b6df2&0', 'JV40VNJ' ],
USB004 => [ '7&20bd29b5&0', '6&28e27c3d&0&0000' ],
+ },
+ 7 => {
+ USB001 => [ '7&17e8a3c3&0', 'MY26K1K34C2L' ],
}
);
@@ -33,8 +36,8 @@ foreach my $test (keys %tests) {
plan tests => $plan;
foreach my $test (keys %tests) {
- my $printKey = load_registry("resources/win32/printer/$test/USBPRINT.reg");
- my $usbKey = load_registry("resources/win32/printer/$test/USB.reg");
+ my $printKey = load_registry("resources/win32/registry/$test-USBPRINT.reg");
+ my $usbKey = load_registry("resources/win32/registry/$test-USB.reg");
foreach my $port (keys $tests{$test}) {
my $prefix = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBPrefix($printKey, $port);
my $serial = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBSerial($usbKey, $prefix);
================================================================
Commit: 228aadbf6e1ed06bae743d1fdf657118009a06c5
https://github.com/fusinv/fusioninventory-agent/commit/228aadbf6e1ed06bae743d1fdf657118009a06c5
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-14 (Tue, 14 Feb 2012)
Changed paths:
M t/inventory/windows/printers.t
Log Message:
-----------
useless module
diff --git a/t/inventory/windows/printers.t b/t/inventory/windows/printers.t
index 2fe6ef6..7aae255 100755
--- a/t/inventory/windows/printers.t
+++ b/t/inventory/windows/printers.t
@@ -5,7 +5,6 @@ use warnings;
use English qw(-no_match_vars);
use Test::More;
-use UNIVERSAL::require;
BEGIN {
# use mock modules for non-available ones
================================================================
Commit: c638178c6f4b4b5d664cdba6d437e80caa28a2a3
https://github.com/fusinv/fusioninventory-agent/commit/c638178c6f4b4b5d664cdba6d437e80caa28a2a3
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-14 (Tue, 14 Feb 2012)
Changed paths:
M t/inventory/windows/printers.t
M t/inventory/windows/usb.t
Log Message:
-----------
cosmetics
diff --git a/t/inventory/windows/printers.t b/t/inventory/windows/printers.t
index 7aae255..22cca88 100755
--- a/t/inventory/windows/printers.t
+++ b/t/inventory/windows/printers.t
@@ -10,6 +10,7 @@ BEGIN {
# use mock modules for non-available ones
push @INC, 't/fake/windows' if $OSNAME ne 'MSWin32';
}
+
use FusionInventory::Agent::Task::Inventory::Input::Win32::Printers;
my %tests = (
@@ -53,10 +54,15 @@ sub load_registry {
my $root_key = {};
my $current_key;
- open (my $handle, '<:encoding(UTF-16LE)', $file) or die();
+ open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
+
+ # this is a windows file
+ binmode $handle, ':encoding(UTF-16LE)';
+ binmode $handle, ':crlf';
+
while (my $line = <$handle>) {
- if ($line =~ /^ \[ ([^]]+) \]/x) {
+ if ($line =~ /^ \[ ([^]]+) \] $/x) {
my $path = $1;
my @path = split(/\\/, $path);
diff --git a/t/inventory/windows/usb.t b/t/inventory/windows/usb.t
index 99ff736..88c9ad3 100755
--- a/t/inventory/windows/usb.t
+++ b/t/inventory/windows/usb.t
@@ -88,7 +88,7 @@ foreach my $test (keys %tests) {
my @objects;
my $object;
while (my $line = <$handle>) {
- if ($line =~ /^(\w+)=(.+)$/) {
+ if ($line =~ /^ (\w+) = (.+) $/x) {
my $key = $1;
my $value = $2;
next unless $properties{$key};
================================================================
Commit: 89e58a2ad512a92fe044940ac402a6ac18ae4fd9
https://github.com/fusinv/fusioninventory-agent/commit/89e58a2ad512a92fe044940ac402a6ac18ae4fd9
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-15 (Wed, 15 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Storage.pm
Log Message:
-----------
use File::Path::mkpath instead of mk_path
File::Path::mk_path is not avalaible on RHEL5.
closes: #1466
Reported-by: Sébastien Prud'homme <sebastien.prudhomme at gmail.com>
diff --git a/lib/FusionInventory/Agent/Storage.pm b/lib/FusionInventory/Agent/Storage.pm
index c3616ea..f5f4623 100644
--- a/lib/FusionInventory/Agent/Storage.pm
+++ b/lib/FusionInventory/Agent/Storage.pm
@@ -6,7 +6,7 @@ use warnings;
use Config;
use English qw(-no_match_vars);
use File::Glob qw(:glob);
-use File::Path qw(make_path);
+use File::Path qw(mkpath);
use Storable;
use FusionInventory::Agent::Logger;
@@ -17,7 +17,7 @@ sub new {
die "no directory parameter" unless $params{directory};
if (!-d $params{directory}) {
- make_path($params{directory}, {error => \my $err});
+ mkpath($params{directory}, {error => \my $err});
if (@$err) {
my (undef, $message) = %{$err->[0]};
die "Can't create $params{directory}: $message";
================================================================
Commit: 3052f82d41784b485b3199c4413098c268afeab7
https://github.com/fusinv/fusioninventory-agent/commit/3052f82d41784b485b3199c4413098c268afeab7
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-15 (Wed, 15 Feb 2012)
Changed paths:
M fusioninventory-win32-service
M lib/FusionInventory/Agent/Task.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Slots.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm
R resources/win32/printer/xppro1/USB.reg
R resources/win32/printer/xppro1/USBPRINT.reg
R resources/win32/printer/xppro2/USB.reg
R resources/win32/printer/xppro2/USBPRINT.reg
A resources/win32/registry/7-USB.reg
A resources/win32/registry/7-USBPRINT.reg
A resources/win32/registry/xppro1-USB.reg
A resources/win32/registry/xppro1-USBPRINT.reg
A resources/win32/registry/xppro2-USB.reg
A resources/win32/registry/xppro2-USBPRINT.reg
A resources/win32/wmi/7-CIM_LogicalDevice
A t/inventory/windows/printers.t
A t/inventory/windows/usb.t
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/fusioninventory-win32-service b/fusioninventory-win32-service
index e7c1078..0a5c624 100644
--- a/fusioninventory-win32-service
+++ b/fusioninventory-win32-service
@@ -100,7 +100,7 @@ sub getMessage {
sub startAgent {
return if $thread;
$thread = threads->create(sub {
- my $agent = new FusionInventory::Agent(
+ my $agent = FusionInventory::Agent->new(
confdir => $directory . '/../../etc/fusioninventory',
datadir => $directory . '/../../share',
vardir => $directory . '/../../var',
diff --git a/lib/FusionInventory/Agent/Task.pm b/lib/FusionInventory/Agent/Task.pm
index 5e9023a..5d78c9f 100644
--- a/lib/FusionInventory/Agent/Task.pm
+++ b/lib/FusionInventory/Agent/Task.pm
@@ -110,9 +110,13 @@ the logger object to use (default: a new stderr logger)
=back
+=head2 isEnabled()
+
+This is a method to be implemented by each subclass.
+
=head2 run()
-This is the method to be implemented by each subclass.
+This is a method to be implemented by each subclass.
=head2 getOptionsFromServer($response, $name, $feature)
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
index 4e6ab66..48e8e6d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
@@ -101,7 +101,6 @@ sub doInventory {
}
}
-# Search serial when connected in USB
sub _getUSBPrinterSerial {
my ($portName) = @_;
@@ -110,45 +109,62 @@ sub _getUSBPrinterSerial {
}) or die "Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR";
# first, find the USB container ID for this printer
- my $usbId;
- my $usbprintKey = $machKey->{"SYSTEM/CurrentControlSet/Enum/USBPRINT"};
+ my $prefix = _getUSBPrefix(
+ $machKey->{"SYSTEM/CurrentControlSet/Enum/USBPRINT"},
+ $portName
+ );
+ return unless $prefix;
+
+ # second, get the serial number from the ID container entry
+ my $serial = _getUSBSerial(
+ $machKey->{"SYSTEM/CurrentControlSet/Enum/USB"},
+ $prefix
+ );
+
+ return $serial;
+}
+
+sub _getUSBPrefix {
+ my ($printKey, $portName) = @_;
# find the printer entry matching given portname
- PRINTER: foreach my $printerKey (values %$usbprintKey) {
+ foreach my $printerKey (values %$printKey) {
# look for a subkey with expected content
- foreach my $subKey (values %$printerKey) {
+ foreach my $subKeyName (keys %$printerKey) {
+ my $subKey = $printerKey->{$subKeyName};
next unless
$subKey->{'Device Parameters/'} &&
$subKey->{'Device Parameters/'}->{'/PortName'} &&
$subKey->{'Device Parameters/'}->{'/PortName'} eq $portName;
# got it
- $usbId = $subKey->{'/ContainerID'};
- last PRINTER;
+ my $prefix = $subKeyName;
+ $prefix =~ s{&$portName/$}{};
+ return $prefix;
};
}
- return unless $usbId;
+ return;
+}
- # second, get the serial number from the ID container entry
- my $serial;
- my $usbKey = $machKey->{"SYSTEM/CurrentControlSet/Enum/USB"};
+sub _getUSBSerial {
+ my ($usbKey, $prefix) = @_;
# find the device entry matching given container Id
- DEVICE: foreach my $deviceKey (values %$usbKey) {
+ foreach my $deviceKey (values %$usbKey) {
# look for a subkey with expected content
foreach my $subKeyName (keys %$deviceKey) {
my $subKey = $deviceKey->{$subKeyName};
next unless
- $subKey->{'/ContainerId'} &&
- $subKey->{'/ContainerId'} eq $usbId;
+ $subKey->{'/ParentIdPrefix'} &&
+ $subKey->{'/ParentIdPrefix'} eq $prefix;
# got it
- $serial = $subKeyName;
+ my $serial = $subKeyName;
$serial =~ s{/$}{};
- last DEVICE;
+ return $serial;
}
}
- return $serial;
+ return;
}
1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Slots.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Slots.pm
index ae9960a..cde477e 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Slots.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Slots.pm
@@ -17,9 +17,7 @@ sub doInventory {
foreach my $object (getWmiObjects(
class => 'Win32_SystemSlot',
- properties => [ qw/
- Name Description SlotDesignation Status Shared
- / ]
+ properties => [ qw/Name Description SlotDesignation Status/ ]
)) {
$inventory->addEntry(
@@ -29,7 +27,6 @@ sub doInventory {
DESCRIPTION => $object->{Description},
DESIGNATION => $object->{SlotDesignation},
STATUS => $object->{Status},
- SHARED => $object->{Shared}
}
);
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index 16331bb..a36f322 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -102,9 +102,15 @@ sub _dateFormat {
## no critic (ExplicitReturnUndef)
return undef unless $date;
- return unless $date =~ /^(\d{4})(\d{2})(\d{2})/;
+ if ($date =~ /^(\d{4})(\d{1})(\d{2})$/) {
+ return "$3/0$2/$1";
+ }
+
+ if ($date =~ /^(\d{4})(\d{2})(\d{2})$/) {
+ return "$3/$2/$1";
+ }
- return "$3/$2/$1";
+ return undef;
}
sub _getSoftwares {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm
index 2d95ff3..80005b4 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm
@@ -16,6 +16,18 @@ sub doInventory {
my $inventory = $params{inventory};
+ foreach my $device (_getUSBDevices()) {
+ $inventory->addEntry(
+ section => 'USBDEVICES',
+ entry => $device
+ );
+ }
+}
+
+sub _getUSBDevices {
+
+ my @devices;
+
foreach my $object (getWmiObjects(
class => 'CIM_LogicalDevice',
properties => [ qw/DeviceID Name/ ]
@@ -37,11 +49,10 @@ sub doInventory {
# avoid duplicates
next if $seen->{$device->{SERIAL}}++;
- $inventory->addEntry(
- section => 'USBDEVICES',
- entry => $device
- );
+ push @devices, $device;
}
+
+ return @devices;
}
1;
diff --git a/resources/win32/printer/xppro1/USB.reg b/resources/win32/printer/xppro1/USB.reg
deleted file mode 100644
index c6f39c1..0000000
Binary files a/resources/win32/printer/xppro1/USB.reg and /dev/null differ
diff --git a/resources/win32/printer/xppro1/USBPRINT.reg b/resources/win32/printer/xppro1/USBPRINT.reg
deleted file mode 100644
index 14e5c89..0000000
Binary files a/resources/win32/printer/xppro1/USBPRINT.reg and /dev/null differ
diff --git a/resources/win32/printer/xppro2/USB.reg b/resources/win32/printer/xppro2/USB.reg
deleted file mode 100644
index c6f39c1..0000000
Binary files a/resources/win32/printer/xppro2/USB.reg and /dev/null differ
diff --git a/resources/win32/printer/xppro2/USBPRINT.reg b/resources/win32/printer/xppro2/USBPRINT.reg
deleted file mode 100644
index 14e5c89..0000000
Binary files a/resources/win32/printer/xppro2/USBPRINT.reg and /dev/null differ
diff --git a/resources/win32/registry/7-USB.reg b/resources/win32/registry/7-USB.reg
new file mode 100644
index 0000000..2639a4a
Binary files /dev/null and b/resources/win32/registry/7-USB.reg differ
diff --git a/resources/win32/registry/7-USBPRINT.reg b/resources/win32/registry/7-USBPRINT.reg
new file mode 100644
index 0000000..a92d04f
Binary files /dev/null and b/resources/win32/registry/7-USBPRINT.reg differ
diff --git a/resources/win32/registry/xppro1-USB.reg b/resources/win32/registry/xppro1-USB.reg
new file mode 100644
index 0000000..c6f39c1
Binary files /dev/null and b/resources/win32/registry/xppro1-USB.reg differ
diff --git a/resources/win32/registry/xppro1-USBPRINT.reg b/resources/win32/registry/xppro1-USBPRINT.reg
new file mode 100644
index 0000000..14e5c89
Binary files /dev/null and b/resources/win32/registry/xppro1-USBPRINT.reg differ
diff --git a/resources/win32/registry/xppro2-USB.reg b/resources/win32/registry/xppro2-USB.reg
new file mode 100644
index 0000000..64ad002
Binary files /dev/null and b/resources/win32/registry/xppro2-USB.reg differ
diff --git a/resources/win32/registry/xppro2-USBPRINT.reg b/resources/win32/registry/xppro2-USBPRINT.reg
new file mode 100644
index 0000000..274dbac
Binary files /dev/null and b/resources/win32/registry/xppro2-USBPRINT.reg differ
diff --git a/resources/win32/wmi/7-CIM_LogicalDevice b/resources/win32/wmi/7-CIM_LogicalDevice
new file mode 100644
index 0000000..b49efba
Binary files /dev/null and b/resources/win32/wmi/7-CIM_LogicalDevice differ
diff --git a/t/inventory/windows/printers.t b/t/inventory/windows/printers.t
new file mode 100755
index 0000000..22cca88
--- /dev/null
+++ b/t/inventory/windows/printers.t
@@ -0,0 +1,102 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use English qw(-no_match_vars);
+use Test::More;
+
+BEGIN {
+ # use mock modules for non-available ones
+ push @INC, 't/fake/windows' if $OSNAME ne 'MSWin32';
+}
+
+use FusionInventory::Agent::Task::Inventory::Input::Win32::Printers;
+
+my %tests = (
+ xppro1 => {
+ USB001 => [ '6&397bdcac&0', '49R8Ka' ],
+ USB002 => [ '6&2ad9257f&0', '5&19d1ce61&0&2' ],
+ USB003 => [ '6&1605722f&0', '5&2377f6ef&0&2' ],
+ },
+ xppro2 => {
+ USB001 => [ '6&1086615&0', 'J5J126789' ],
+ USB003 => [ '6&159b6df2&0', 'JV40VNJ' ],
+ USB004 => [ '7&20bd29b5&0', '6&28e27c3d&0&0000' ],
+ },
+ 7 => {
+ USB001 => [ '7&17e8a3c3&0', 'MY26K1K34C2L' ],
+ }
+);
+
+my $plan = 0;
+foreach my $test (keys %tests) {
+ $plan += 2 * scalar (keys $tests{$test});
+}
+plan tests => $plan;
+
+foreach my $test (keys %tests) {
+ my $printKey = load_registry("resources/win32/registry/$test-USBPRINT.reg");
+ my $usbKey = load_registry("resources/win32/registry/$test-USB.reg");
+ foreach my $port (keys $tests{$test}) {
+ my $prefix = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBPrefix($printKey, $port);
+ my $serial = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBSerial($usbKey, $prefix);
+
+ is($prefix, $tests{$test}->{$port}->[0], "prefix for printer $port");
+ is($serial, $tests{$test}->{$port}->[1], "serial for printer $port");
+ }
+}
+
+sub load_registry {
+ my ($file) = @_;
+
+ my $root_offset;
+ my $root_key = {};
+ my $current_key;
+
+ open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
+
+ # this is a windows file
+ binmode $handle, ':encoding(UTF-16LE)';
+ binmode $handle, ':crlf';
+
+ while (my $line = <$handle>) {
+
+ if ($line =~ /^ \[ ([^]]+) \] $/x) {
+ my $path = $1;
+ my @path = split(/\\/, $path);
+
+ if ($root_offset) {
+ splice @path, 0, $root_offset;
+ $current_key = $root_key;
+ foreach my $element (@path) {
+ my $key_path = $element . '/';
+
+ if (!defined $current_key->{$key_path}) {
+ my $new_key = {};
+ $current_key->{$key_path} = $new_key;
+ }
+
+ $current_key = $current_key->{$key_path};
+ }
+ } else {
+ $root_offset = scalar @path;
+ }
+ next;
+ }
+
+ if ($line =~ /^ " ([^"]+) " = dword:(\d+)/x) {
+ $current_key->{'/' . $1} = "0x$2";
+ next;
+ }
+
+ if ($line =~ /^ " ([^"]+) " = " ([^"]+) "/x) {
+ $current_key->{'/' . $1} = $2;
+ next;
+ }
+
+ }
+ close $handle;
+
+ return $root_key;
+}
diff --git a/t/inventory/windows/usb.t b/t/inventory/windows/usb.t
new file mode 100755
index 0000000..88c9ad3
--- /dev/null
+++ b/t/inventory/windows/usb.t
@@ -0,0 +1,117 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use utf8;
+
+use English qw(-no_match_vars);
+use Test::More;
+use Test::MockModule;
+
+BEGIN {
+ # use mock modules for non-available ones
+ push @INC, 't/fake/windows' if $OSNAME ne 'MSWin32';
+}
+
+use FusionInventory::Agent::Task::Inventory::Input::Win32::USB;
+
+my %tests = (
+ 7 => [
+ {
+ NAME => 'Périphérique audio USB',
+ SERIAL => 'MI_02\\7',
+ VENDORID => '046D',
+ PRODUCTID => '08C9'
+ },
+ {
+ NAME => 'Périphérique d’entrée USB',
+ SERIAL => 'MI_01\\7',
+ VENDORID => '046D',
+ PRODUCTID => 'C30A'
+ },
+ {
+ NAME => 'Generic USB Hub',
+ SERIAL => '1C9B8E1E',
+ VENDORID => '8087',
+ PRODUCTID => '0024'
+ },
+ {
+ NAME => 'Generic USB Hub',
+ SERIAL => '355C47BA',
+ VENDORID => '8087',
+ PRODUCTID => '0024'
+ },
+ {
+ NAME => 'ASUS Bluetooth',
+ SERIAL => 'DF2EE03',
+ VENDORID => '0B05',
+ PRODUCTID => '179C'
+ },
+ {
+ NAME => 'Périphérique USB composite',
+ SERIAL => '\\6BE882AB',
+ VENDORID => '046D',
+ PRODUCTID => '08C9'
+ },
+ {
+ NAME => 'Périphérique vidéo USB',
+ SERIAL => 'MI_00\\7',
+ VENDORID => '046D',
+ PRODUCTID => '08C9'
+ }
+ ]
+);
+
+plan tests => scalar keys %tests;
+
+my $module = Test::MockModule->new(
+ 'FusionInventory::Agent::Task::Inventory::Input::Win32::USB'
+);
+
+foreach my $test (keys %tests) {
+ # redefine getWmiObjects function
+ $module->mock(
+ 'getWmiObjects',
+ sub {
+ my (%params) = @_;
+
+ my $file = "resources/win32/wmi/$test-$params{class}";
+ open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
+
+ # this is a windows file
+ binmode $handle, ':encoding(UTF-16LE)';
+ binmode $handle, ':crlf';
+
+ # build a list of desired properties indexes
+ my %properties = map { $_ => 1 } @{$params{properties}};
+
+ my @objects;
+ my $object;
+ while (my $line = <$handle>) {
+ if ($line =~ /^ (\w+) = (.+) $/x) {
+ my $key = $1;
+ my $value = $2;
+ next unless $properties{$key};
+ $value =~ s/&/&/g;
+ $object->{$key} = $value;
+ next;
+ }
+ if ($line =~ /^$/) {
+ push @objects, $object if $object;
+ undef $object;
+ next;
+ }
+ }
+ close $handle;
+
+ return @objects;
+ }
+ );
+
+ my @devices = FusionInventory::Agent::Task::Inventory::Input::Win32::USB::_getUSBDevices();
+ is_deeply(
+ \@devices,
+ $tests{$test},
+ "$test USB devices list"
+ );
+}
================================================================
Commit: 81b9bd1657d6d3303e5c7ac68c54223abd5feb5f
https://github.com/fusinv/fusioninventory-agent/commit/81b9bd1657d6d3303e5c7ac68c54223abd5feb5f
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-16 (Thu, 16 Feb 2012)
Changed paths:
A resources/win32/registry/.gitattributes
A resources/win32/wmi/.gitattributes
R resources/win32/wmi/7-CIM_LogicalDevice
A resources/win32/wmi/7-CIM_LogicalDevice.wmi
M t/inventory/windows/usb.t
Log Message:
-----------
preserve original eol style
diff --git a/resources/win32/registry/.gitattributes b/resources/win32/registry/.gitattributes
new file mode 100644
index 0000000..9e1610d
--- /dev/null
+++ b/resources/win32/registry/.gitattributes
@@ -0,0 +1 @@
+*.reg -crlf
diff --git a/resources/win32/wmi/.gitattributes b/resources/win32/wmi/.gitattributes
new file mode 100644
index 0000000..abff04f
--- /dev/null
+++ b/resources/win32/wmi/.gitattributes
@@ -0,0 +1 @@
+*.wmi -crlf
diff --git a/resources/win32/wmi/7-CIM_LogicalDevice b/resources/win32/wmi/7-CIM_LogicalDevice
deleted file mode 100644
index b49efba..0000000
Binary files a/resources/win32/wmi/7-CIM_LogicalDevice and /dev/null differ
diff --git a/resources/win32/wmi/7-CIM_LogicalDevice.wmi b/resources/win32/wmi/7-CIM_LogicalDevice.wmi
new file mode 100644
index 0000000..b49efba
Binary files /dev/null and b/resources/win32/wmi/7-CIM_LogicalDevice.wmi differ
diff --git a/t/inventory/windows/usb.t b/t/inventory/windows/usb.t
index 88c9ad3..7bfadcb 100755
--- a/t/inventory/windows/usb.t
+++ b/t/inventory/windows/usb.t
@@ -75,7 +75,7 @@ foreach my $test (keys %tests) {
sub {
my (%params) = @_;
- my $file = "resources/win32/wmi/$test-$params{class}";
+ my $file = "resources/win32/wmi/$test-$params{class}.wmi";
open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
# this is a windows file
================================================================
Commit: da73dd9cb07937ae7ee8b8b19ce356c538148b94
https://github.com/fusinv/fusioninventory-agent/commit/da73dd9cb07937ae7ee8b8b19ce356c538148b94
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-16 (Thu, 16 Feb 2012)
Changed paths:
M t/inventory/windows/printers.t
Log Message:
-----------
fix syntax
this was masked by auto-dereferencing on perl 5.14
diff --git a/t/inventory/windows/printers.t b/t/inventory/windows/printers.t
index 22cca88..6cf5586 100755
--- a/t/inventory/windows/printers.t
+++ b/t/inventory/windows/printers.t
@@ -31,14 +31,14 @@ my %tests = (
my $plan = 0;
foreach my $test (keys %tests) {
- $plan += 2 * scalar (keys $tests{$test});
+ $plan += 2 * scalar (keys %{$tests{$test}});
}
plan tests => $plan;
foreach my $test (keys %tests) {
my $printKey = load_registry("resources/win32/registry/$test-USBPRINT.reg");
my $usbKey = load_registry("resources/win32/registry/$test-USB.reg");
- foreach my $port (keys $tests{$test}) {
+ foreach my $port (keys %{$tests{$test}}) {
my $prefix = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBPrefix($printKey, $port);
my $serial = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBSerial($usbKey, $prefix);
================================================================
Commit: 1164c33556d51424d5445ef057a47440553f82f1
https://github.com/fusinv/fusioninventory-agent/commit/1164c33556d51424d5445ef057a47440553f82f1
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-16 (Thu, 16 Feb 2012)
Changed paths:
A resources/win32/.gitattributes
R resources/win32/registry/.gitattributes
R resources/win32/wmi/.gitattributes
Log Message:
-----------
use a single .gitattributes file
There was an error trying to read the diff from github.com (time's up!)
================================================================
Commit: 689525a3b4078d864e91948299b6055a1eda433e
https://github.com/fusinv/fusioninventory-agent/commit/689525a3b4078d864e91948299b6055a1eda433e
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-16 (Thu, 16 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
compute access mode once
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 4be0f7c..856ead8 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -123,12 +123,12 @@ sub _getScreensFromWindows {
TiedRef => \$Registry
);
- foreach my $screen (@screens) {
+ my $access = FusionInventory::Agent::Tools::Win32::is64bit() ?
+ Win32::TieRegistry::KEY_READ() |
+ FusionInventory::Agent::Tools::Win32::KEY_WOW64_64() :
+ Win32::TieRegistry::KEY_READ();
- my $access = FusionInventory::Agent::Tools::Win32::is64bit() ?
- Win32::TieRegistry::KEY_READ() |
- FusionInventory::Agent::Tools::Win32::KEY_WOW64_64() :
- Win32::TieRegistry::KEY_READ();
+ foreach my $screen (@screens) {
my $machKey = $Registry->Open('LMachine', {
Access => $access
================================================================
Commit: 862cb590e1e3b028143f54ced8b4d93e75c07a82
https://github.com/fusinv/fusioninventory-agent/commit/862cb590e1e3b028143f54ced8b4d93e75c07a82
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-16 (Thu, 16 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
fix second screen detection
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 856ead8..f69806b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -88,10 +88,9 @@ sub _getScreensFromWindows {
)) {
next unless $object->{InstanceName};
- my $PNPDeviceID = $object->{InstanceName};
- $PNPDeviceID =~ s/_\d+//;
+ $object->{InstanceName} =~ s/_\d+//;
push @screens, {
- id => $object->{PNPDeviceID}
+ id => $object->{InstanceName}
};
}
================================================================
Commit: 6d0315bc55fe515d11bc9d41139d8177459081d1
https://github.com/fusinv/fusioninventory-agent/commit/6d0315bc55fe515d11bc9d41139d8177459081d1
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-16 (Thu, 16 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm
Log Message:
-----------
don't retain internal USB serials (#1328)
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm
index 80005b4..36eff6c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm
@@ -32,7 +32,7 @@ sub _getUSBDevices {
class => 'CIM_LogicalDevice',
properties => [ qw/DeviceID Name/ ]
)) {
- next unless $object->{DeviceID} =~ /^USB\\VID_(\w+)&PID_(\w+)(.*)/;
+ next unless $object->{DeviceID} =~ /^USB\\VID_(\w+)&PID_(\w+)\\(.*)/;
my $device = {
NAME => $object->{Name},
@@ -41,14 +41,14 @@ sub _getUSBDevices {
SERIAL => $3
};
- $device->{SERIAL} =~ s/.*?&//;
- $device->{SERIAL} =~ s/&.*$//;
-
next if $device->{VENDORID} =~ /^0+$/;
# avoid duplicates
next if $seen->{$device->{SERIAL}}++;
+ # pseudo serial generated by windows
+ delete $device->{SERIAL} if $device->{SERIAL} =~ /&/;
+
push @devices, $device;
}
================================================================
Commit: 0196a26aa691b9c4045754084860140c3cf7305d
https://github.com/fusinv/fusioninventory-agent/commit/0196a26aa691b9c4045754084860140c3cf7305d
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-16 (Thu, 16 Feb 2012)
Changed paths:
M resources/win32/wmi/7-CIM_LogicalDevice.wmi
Log Message:
-----------
update with proper eol encoding
diff --git a/resources/win32/wmi/7-CIM_LogicalDevice.wmi b/resources/win32/wmi/7-CIM_LogicalDevice.wmi
index b49efba..4910eb8 100644
Binary files a/resources/win32/wmi/7-CIM_LogicalDevice.wmi and b/resources/win32/wmi/7-CIM_LogicalDevice.wmi differ
================================================================
Commit: 6a3f669eda8bf875b5132965b8a5e69739578af4
https://github.com/fusinv/fusioninventory-agent/commit/6a3f669eda8bf875b5132965b8a5e69739578af4
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-18 (Sat, 18 Feb 2012)
Changed paths:
M t/inventory/windows/usb.t
Log Message:
-----------
fix expected results according to new code
diff --git a/t/inventory/windows/usb.t b/t/inventory/windows/usb.t
index 7bfadcb..d1cea27 100755
--- a/t/inventory/windows/usb.t
+++ b/t/inventory/windows/usb.t
@@ -18,47 +18,36 @@ use FusionInventory::Agent::Task::Inventory::Input::Win32::USB;
my %tests = (
7 => [
{
- NAME => 'Périphérique audio USB',
- SERIAL => 'MI_02\\7',
- VENDORID => '046D',
- PRODUCTID => '08C9'
- },
- {
- NAME => 'Périphérique d’entrée USB',
- SERIAL => 'MI_01\\7',
- VENDORID => '046D',
- PRODUCTID => 'C30A'
- },
- {
NAME => 'Generic USB Hub',
- SERIAL => '1C9B8E1E',
VENDORID => '8087',
PRODUCTID => '0024'
},
{
NAME => 'Generic USB Hub',
- SERIAL => '355C47BA',
VENDORID => '8087',
PRODUCTID => '0024'
},
{
NAME => 'ASUS Bluetooth',
- SERIAL => 'DF2EE03',
VENDORID => '0B05',
PRODUCTID => '179C'
},
{
NAME => 'Périphérique USB composite',
- SERIAL => '\\6BE882AB',
+ SERIAL => '6BE882AB',
VENDORID => '046D',
PRODUCTID => '08C9'
},
{
- NAME => 'Périphérique vidéo USB',
- SERIAL => 'MI_00\\7',
+ NAME => 'Périphérique d’entrée USB',
VENDORID => '046D',
- PRODUCTID => '08C9'
- }
+ PRODUCTID => 'C03E'
+ },
+ {
+ NAME => 'Périphérique USB composite',
+ VENDORID => '046D',
+ PRODUCTID => 'C30A'
+ },
]
);
@@ -79,8 +68,9 @@ foreach my $test (keys %tests) {
open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
# this is a windows file
+ #binmode $handle, ':crlf';
binmode $handle, ':encoding(UTF-16LE)';
- binmode $handle, ':crlf';
+ local $INPUT_RECORD_SEPARATOR="\r\n";
# build a list of desired properties indexes
my %properties = map { $_ => 1 } @{$params{properties}};
@@ -88,6 +78,7 @@ foreach my $test (keys %tests) {
my @objects;
my $object;
while (my $line = <$handle>) {
+ chomp $line;
if ($line =~ /^ (\w+) = (.+) $/x) {
my $key = $1;
my $value = $2;
================================================================
Commit: 8d37bf92300d6abeff0f602abbcdaec8ebdeea78
https://github.com/fusinv/fusioninventory-agent/commit/8d37bf92300d6abeff0f602abbcdaec8ebdeea78
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-18 (Sat, 18 Feb 2012)
Changed paths:
M resources/win32/wmi/7-CIM_LogicalDevice.wmi
Log Message:
-----------
new import to fix eol
diff --git a/resources/win32/wmi/7-CIM_LogicalDevice.wmi b/resources/win32/wmi/7-CIM_LogicalDevice.wmi
index 4910eb8..b49efba 100644
Binary files a/resources/win32/wmi/7-CIM_LogicalDevice.wmi and b/resources/win32/wmi/7-CIM_LogicalDevice.wmi differ
================================================================
Commit: 0cebeaf883291375327d74b5e508784896c63c96
https://github.com/fusinv/fusioninventory-agent/commit/0cebeaf883291375327d74b5e508784896c63c96
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-18 (Sat, 18 Feb 2012)
Changed paths:
M resources/win32/.gitattributes
Log Message:
-----------
drop any eol normalization
diff --git a/resources/win32/.gitattributes b/resources/win32/.gitattributes
index 9e07bce..53f5171 100644
--- a/resources/win32/.gitattributes
+++ b/resources/win32/.gitattributes
@@ -1,2 +1,3 @@
-*.reg eol=crlf
-*.wmi eol=crlf
+# prevent any eol normalization
+*.reg -text
+*.wmi -text
================================================================
Commit: d5697977d6fc1a0a016a5df0e45a8c698f9fc516
https://github.com/fusinv/fusioninventory-agent/commit/d5697977d6fc1a0a016a5df0e45a8c698f9fc516
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-18 (Sat, 18 Feb 2012)
Changed paths:
R resources/win32/wmi/7-CIM_LogicalDevice.wmi
Log Message:
-----------
removal before reimport
diff --git a/resources/win32/wmi/7-CIM_LogicalDevice.wmi b/resources/win32/wmi/7-CIM_LogicalDevice.wmi
deleted file mode 100644
index b49efba..0000000
Binary files a/resources/win32/wmi/7-CIM_LogicalDevice.wmi and /dev/null differ
================================================================
Commit: 288c8f06f7ccbd36bef56160dc303c8c5ef1205a
https://github.com/fusinv/fusioninventory-agent/commit/288c8f06f7ccbd36bef56160dc303c8c5ef1205a
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-18 (Sat, 18 Feb 2012)
Changed paths:
A resources/win32/wmi/7-CIM_LogicalDevice.wmi
Log Message:
-----------
new import to fix eol
diff --git a/resources/win32/wmi/7-CIM_LogicalDevice.wmi b/resources/win32/wmi/7-CIM_LogicalDevice.wmi
new file mode 100644
index 0000000..b49efba
Binary files /dev/null and b/resources/win32/wmi/7-CIM_LogicalDevice.wmi differ
================================================================
Commit: a56684c7dee6bec4bf7d94c9e28ee4224ea39855
https://github.com/fusinv/fusioninventory-agent/commit/a56684c7dee6bec4bf7d94c9e28ee4224ea39855
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-18 (Sat, 18 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Storage.pm
Log Message:
-----------
Merge remote-tracking branch 'forge/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Storage.pm b/lib/FusionInventory/Agent/Storage.pm
index c3616ea..f5f4623 100644
--- a/lib/FusionInventory/Agent/Storage.pm
+++ b/lib/FusionInventory/Agent/Storage.pm
@@ -6,7 +6,7 @@ use warnings;
use Config;
use English qw(-no_match_vars);
use File::Glob qw(:glob);
-use File::Path qw(make_path);
+use File::Path qw(mkpath);
use Storable;
use FusionInventory::Agent::Logger;
@@ -17,7 +17,7 @@ sub new {
die "no directory parameter" unless $params{directory};
if (!-d $params{directory}) {
- make_path($params{directory}, {error => \my $err});
+ mkpath($params{directory}, {error => \my $err});
if (@$err) {
my (undef, $message) = %{$err->[0]};
die "Can't create $params{directory}: $message";
================================================================
Commit: 51129120774149953336f5068a416e59255a3cfa
https://github.com/fusinv/fusioninventory-agent/commit/51129120774149953336f5068a416e59255a3cfa
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-18 (Sat, 18 Feb 2012)
Changed paths:
M t/inventory/windows/printers.t
Log Message:
-----------
chomp lines
diff --git a/t/inventory/windows/printers.t b/t/inventory/windows/printers.t
index 6cf5586..156549f 100755
--- a/t/inventory/windows/printers.t
+++ b/t/inventory/windows/printers.t
@@ -58,9 +58,10 @@ sub load_registry {
# this is a windows file
binmode $handle, ':encoding(UTF-16LE)';
- binmode $handle, ':crlf';
+ local $INPUT_RECORD_SEPARATOR="\r\n";
while (my $line = <$handle>) {
+ chomp $line;
if ($line =~ /^ \[ ([^]]+) \] $/x) {
my $path = $1;
================================================================
Commit: 56e9d8283e10d4f2185bd644cffb379c10ca1904
https://github.com/fusinv/fusioninventory-agent/commit/56e9d8283e10d4f2185bd644cffb379c10ca1904
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-18 (Sat, 18 Feb 2012)
Changed paths:
M t/inventory/windows/usb.t
Log Message:
-----------
cosmetics
diff --git a/t/inventory/windows/usb.t b/t/inventory/windows/usb.t
index d1cea27..6cc447f 100755
--- a/t/inventory/windows/usb.t
+++ b/t/inventory/windows/usb.t
@@ -68,7 +68,6 @@ foreach my $test (keys %tests) {
open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
# this is a windows file
- #binmode $handle, ':crlf';
binmode $handle, ':encoding(UTF-16LE)';
local $INPUT_RECORD_SEPARATOR="\r\n";
@@ -79,6 +78,7 @@ foreach my $test (keys %tests) {
my $object;
while (my $line = <$handle>) {
chomp $line;
+
if ($line =~ /^ (\w+) = (.+) $/x) {
my $key = $1;
my $value = $2;
@@ -87,6 +87,7 @@ foreach my $test (keys %tests) {
$object->{$key} = $value;
next;
}
+
if ($line =~ /^$/) {
push @objects, $object if $object;
undef $object;
================================================================
Commit: 5f76d10c21b90c95fe435cf56af46712e61682ad
https://github.com/fusinv/fusioninventory-agent/commit/5f76d10c21b90c95fe435cf56af46712e61682ad
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-18 (Sat, 18 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Storage.pm
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Storage.pm b/lib/FusionInventory/Agent/Storage.pm
index c3616ea..f5f4623 100644
--- a/lib/FusionInventory/Agent/Storage.pm
+++ b/lib/FusionInventory/Agent/Storage.pm
@@ -6,7 +6,7 @@ use warnings;
use Config;
use English qw(-no_match_vars);
use File::Glob qw(:glob);
-use File::Path qw(make_path);
+use File::Path qw(mkpath);
use Storable;
use FusionInventory::Agent::Logger;
@@ -17,7 +17,7 @@ sub new {
die "no directory parameter" unless $params{directory};
if (!-d $params{directory}) {
- make_path($params{directory}, {error => \my $err});
+ mkpath($params{directory}, {error => \my $err});
if (@$err) {
my (undef, $message) = %{$err->[0]};
die "Can't create $params{directory}: $message";
================================================================
Commit: c6c5d157afe7dec14385c5ef611f581d72f54954
https://github.com/fusinv/fusioninventory-agent/commit/c6c5d157afe7dec14385c5ef611f581d72f54954
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-20 (Mon, 20 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
Log Message:
-----------
use the correct machKey for win32
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index a36f322..4b35d07 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -68,7 +68,7 @@ sub doInventory {
_addSoftware(inventory => $inventory, entry => $software);
}
_processMSIE(
- machKey => $machKey64,
+ machKey => $machKey32,
inventory => $inventory,
is64bit => 0
);
================================================================
Commit: fe47afbb4c249fdc6db839f4610d1c08622a2aa5
https://github.com/fusinv/fusioninventory-agent/commit/fe47afbb4c249fdc6db839f4610d1c08622a2aa5
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-20 (Mon, 20 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
Log Message:
-----------
indent
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index 4b35d07..9b14327 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -175,7 +175,7 @@ sub _processMSIE {
my $is64bit = $params{is64bit} || 0;
my $machKey = $params{machKey};
- my $name = "Internet Explorer";
+ my $name = "Internet Explorer";
if ($is64bit) {
$name .= " (64bit)";
}
================================================================
Commit: 18dfaf72bf40fbe39512dc925ecffbc1345be337
https://github.com/fusinv/fusioninventory-agent/commit/18dfaf72bf40fbe39512dc925ecffbc1345be337
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-20 (Mon, 20 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Packages.pm
Log Message:
-----------
fix no-software parameter on MacOSX
closes: #1476
Reported-by: Ronan Mejecaze <rmejecaze at iweb.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Packages.pm b/lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Packages.pm
index 2908304..e9114de 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Packages.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Packages.pm
@@ -8,7 +8,7 @@ sub isInventoryEnabled {
return unless can_load("Mac::SysProfile");
# Do not run an package inventory if there is the --nosoft parameter
- return if ($params->{config}->{nosoft});
+ return if ($params->{config}->{'no-software'});
1;
}
================================================================
Commit: ae27440273e97e08d4445e90ee5474407f92ba91
https://github.com/fusinv/fusioninventory-agent/commit/ae27440273e97e08d4445e90ee5474407f92ba91
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-20 (Mon, 20 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
Log Message:
-----------
Merge branch '2.1.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
index 722d7a8..d2b4604 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
@@ -73,5 +73,4 @@ sub _getDisplays {
}
-
1;
================================================================
Commit: 66f2f0ff9fd86609af09bdaed5c0260ab702b720
https://github.com/fusinv/fusioninventory-agent/commit/66f2f0ff9fd86609af09bdaed5c0260ab702b720
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-20 (Mon, 20 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm
A resources/win32/.gitattributes
R resources/win32/wmi/7-CIM_LogicalDevice
A resources/win32/wmi/7-CIM_LogicalDevice.wmi
M t/inventory/windows/printers.t
M t/inventory/windows/usb.t
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 4be0f7c..f69806b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -88,10 +88,9 @@ sub _getScreensFromWindows {
)) {
next unless $object->{InstanceName};
- my $PNPDeviceID = $object->{InstanceName};
- $PNPDeviceID =~ s/_\d+//;
+ $object->{InstanceName} =~ s/_\d+//;
push @screens, {
- id => $object->{PNPDeviceID}
+ id => $object->{InstanceName}
};
}
@@ -123,12 +122,12 @@ sub _getScreensFromWindows {
TiedRef => \$Registry
);
- foreach my $screen (@screens) {
+ my $access = FusionInventory::Agent::Tools::Win32::is64bit() ?
+ Win32::TieRegistry::KEY_READ() |
+ FusionInventory::Agent::Tools::Win32::KEY_WOW64_64() :
+ Win32::TieRegistry::KEY_READ();
- my $access = FusionInventory::Agent::Tools::Win32::is64bit() ?
- Win32::TieRegistry::KEY_READ() |
- FusionInventory::Agent::Tools::Win32::KEY_WOW64_64() :
- Win32::TieRegistry::KEY_READ();
+ foreach my $screen (@screens) {
my $machKey = $Registry->Open('LMachine', {
Access => $access
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm
index 80005b4..36eff6c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/USB.pm
@@ -32,7 +32,7 @@ sub _getUSBDevices {
class => 'CIM_LogicalDevice',
properties => [ qw/DeviceID Name/ ]
)) {
- next unless $object->{DeviceID} =~ /^USB\\VID_(\w+)&PID_(\w+)(.*)/;
+ next unless $object->{DeviceID} =~ /^USB\\VID_(\w+)&PID_(\w+)\\(.*)/;
my $device = {
NAME => $object->{Name},
@@ -41,14 +41,14 @@ sub _getUSBDevices {
SERIAL => $3
};
- $device->{SERIAL} =~ s/.*?&//;
- $device->{SERIAL} =~ s/&.*$//;
-
next if $device->{VENDORID} =~ /^0+$/;
# avoid duplicates
next if $seen->{$device->{SERIAL}}++;
+ # pseudo serial generated by windows
+ delete $device->{SERIAL} if $device->{SERIAL} =~ /&/;
+
push @devices, $device;
}
diff --git a/resources/win32/.gitattributes b/resources/win32/.gitattributes
new file mode 100644
index 0000000..53f5171
--- /dev/null
+++ b/resources/win32/.gitattributes
@@ -0,0 +1,3 @@
+# prevent any eol normalization
+*.reg -text
+*.wmi -text
diff --git a/resources/win32/wmi/7-CIM_LogicalDevice b/resources/win32/wmi/7-CIM_LogicalDevice
deleted file mode 100644
index b49efba..0000000
Binary files a/resources/win32/wmi/7-CIM_LogicalDevice and /dev/null differ
diff --git a/resources/win32/wmi/7-CIM_LogicalDevice.wmi b/resources/win32/wmi/7-CIM_LogicalDevice.wmi
new file mode 100644
index 0000000..b49efba
Binary files /dev/null and b/resources/win32/wmi/7-CIM_LogicalDevice.wmi differ
diff --git a/t/inventory/windows/printers.t b/t/inventory/windows/printers.t
index 22cca88..156549f 100755
--- a/t/inventory/windows/printers.t
+++ b/t/inventory/windows/printers.t
@@ -31,14 +31,14 @@ my %tests = (
my $plan = 0;
foreach my $test (keys %tests) {
- $plan += 2 * scalar (keys $tests{$test});
+ $plan += 2 * scalar (keys %{$tests{$test}});
}
plan tests => $plan;
foreach my $test (keys %tests) {
my $printKey = load_registry("resources/win32/registry/$test-USBPRINT.reg");
my $usbKey = load_registry("resources/win32/registry/$test-USB.reg");
- foreach my $port (keys $tests{$test}) {
+ foreach my $port (keys %{$tests{$test}}) {
my $prefix = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBPrefix($printKey, $port);
my $serial = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBSerial($usbKey, $prefix);
@@ -58,9 +58,10 @@ sub load_registry {
# this is a windows file
binmode $handle, ':encoding(UTF-16LE)';
- binmode $handle, ':crlf';
+ local $INPUT_RECORD_SEPARATOR="\r\n";
while (my $line = <$handle>) {
+ chomp $line;
if ($line =~ /^ \[ ([^]]+) \] $/x) {
my $path = $1;
diff --git a/t/inventory/windows/usb.t b/t/inventory/windows/usb.t
index 88c9ad3..6cc447f 100755
--- a/t/inventory/windows/usb.t
+++ b/t/inventory/windows/usb.t
@@ -18,47 +18,36 @@ use FusionInventory::Agent::Task::Inventory::Input::Win32::USB;
my %tests = (
7 => [
{
- NAME => 'Périphérique audio USB',
- SERIAL => 'MI_02\\7',
- VENDORID => '046D',
- PRODUCTID => '08C9'
- },
- {
- NAME => 'Périphérique d’entrée USB',
- SERIAL => 'MI_01\\7',
- VENDORID => '046D',
- PRODUCTID => 'C30A'
- },
- {
NAME => 'Generic USB Hub',
- SERIAL => '1C9B8E1E',
VENDORID => '8087',
PRODUCTID => '0024'
},
{
NAME => 'Generic USB Hub',
- SERIAL => '355C47BA',
VENDORID => '8087',
PRODUCTID => '0024'
},
{
NAME => 'ASUS Bluetooth',
- SERIAL => 'DF2EE03',
VENDORID => '0B05',
PRODUCTID => '179C'
},
{
NAME => 'Périphérique USB composite',
- SERIAL => '\\6BE882AB',
+ SERIAL => '6BE882AB',
VENDORID => '046D',
PRODUCTID => '08C9'
},
{
- NAME => 'Périphérique vidéo USB',
- SERIAL => 'MI_00\\7',
+ NAME => 'Périphérique d’entrée USB',
+ VENDORID => '046D',
+ PRODUCTID => 'C03E'
+ },
+ {
+ NAME => 'Périphérique USB composite',
VENDORID => '046D',
- PRODUCTID => '08C9'
- }
+ PRODUCTID => 'C30A'
+ },
]
);
@@ -75,12 +64,12 @@ foreach my $test (keys %tests) {
sub {
my (%params) = @_;
- my $file = "resources/win32/wmi/$test-$params{class}";
+ my $file = "resources/win32/wmi/$test-$params{class}.wmi";
open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
# this is a windows file
binmode $handle, ':encoding(UTF-16LE)';
- binmode $handle, ':crlf';
+ local $INPUT_RECORD_SEPARATOR="\r\n";
# build a list of desired properties indexes
my %properties = map { $_ => 1 } @{$params{properties}};
@@ -88,6 +77,8 @@ foreach my $test (keys %tests) {
my @objects;
my $object;
while (my $line = <$handle>) {
+ chomp $line;
+
if ($line =~ /^ (\w+) = (.+) $/x) {
my $key = $1;
my $value = $2;
@@ -96,6 +87,7 @@ foreach my $test (keys %tests) {
$object->{$key} = $value;
next;
}
+
if ($line =~ /^$/) {
push @objects, $object if $object;
undef $object;
================================================================
Commit: 10ef8d9e0126c26ca3a173d6b3d533671a9a9a87
https://github.com/fusinv/fusioninventory-agent/commit/10ef8d9e0126c26ca3a173d6b3d533671a9a9a87
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-20 (Mon, 20 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
Log Message:
-----------
indent
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index 9b14327..58a1046 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -162,8 +162,8 @@ sub _addSoftware {
my $entry = $params{entry};
- # avoid duplicates
- return if $seen->{$entry->{NAME}}->{$entry->{IS64BIT}}{$entry->{VERSION} || '_undef_'}++;
+ # avoid duplicates
+ return if $seen->{$entry->{NAME}}->{$entry->{IS64BIT}}{$entry->{VERSION} || '_undef_'}++;
$params{inventory}->addEntry(section => 'SOFTWARES', entry => $entry);
}
================================================================
Commit: bb098d9d9ee118805b884d99545c9e1913f690e9
https://github.com/fusinv/fusioninventory-agent/commit/bb098d9d9ee118805b884d99545c9e1913f690e9
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-20 (Mon, 20 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Videos.pm
Log Message:
-----------
fix a syntax error
Reported-by: Walid Nouh <walid.nouh at gmail.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Videos.pm b/lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Videos.pm
index 39e8dc9..9189c4b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Videos.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/OS/MacOS/Videos.pm
@@ -79,8 +79,7 @@ sub doInventory {
my %displays = _getDisplays();
foreach my $section (keys %displays ) {
foreach (@{$displays{$section}}) {
- $inventory->addVideo(
- entry => $_
+ $inventory->addVideo($_);
}
}
}
================================================================
Commit: f773b87e3d5f7ab87bd607fab6f17a22e56221ae
https://github.com/fusinv/fusioninventory-agent/commit/f773b87e3d5f7ab87bd607fab6f17a22e56221ae
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-20 (Mon, 20 Feb 2012)
Log Message:
-----------
Merge branch '2.1.x' into 2.2.x
================================================================
Commit: 334935af3019d47304c1556ca4e0675a2c7e7ecb
https://github.com/fusinv/fusioninventory-agent/commit/334935af3019d47304c1556ca4e0675a2c7e7ecb
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-20 (Mon, 20 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory.pm
Log Message:
-----------
fix: $runMeIfTheseChecksFailed
runMeIfTheseChecksFailed content was ignored. Because of that,
memory and CPU inventor were done two time in a row (dmidecode
then WMI).
closes: #1399
Reported-by: Reported-by: David Durieux <d.durieux at siprossii.com>
Reported-by: James M Pulver <jmp242 at cornell.edu>,
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index 3a6a909..948e730 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -198,9 +198,9 @@ sub _initModulesList {
}
}
- unless ($failed) {
+ if ($failed) {
$self->{modules}->{$module}->{enabled} = 0;
- $logger->debug("module $module disabled: no depended module failed");
+ $logger->debug("module $module disabled because of $failed");
}
}
}
================================================================
Commit: af043ad4269df12eb25948c6bb5b117df5cc274d
https://github.com/fusinv/fusioninventory-agent/commit/af043ad4269df12eb25948c6bb5b117df5cc274d
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-22 (Wed, 22 Feb 2012)
Changed paths:
A t/05var.t
Log Message:
-----------
new test: use Test::Vars
diff --git a/t/05var.t b/t/05var.t
new file mode 100644
index 0000000..15bd4bf
--- /dev/null
+++ b/t/05var.t
@@ -0,0 +1,27 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use Test::More;
+use English qw(-no_match_vars);
+
+if (!$ENV{TEST_AUTHOR}) {
+ my $msg = 'Author test. Set $ENV{TEST_AUTHOR} to a true value to run.';
+ plan(skip_all => $msg);
+}
+
+# use mock modules for non-available ones
+if ($OSNAME eq 'MSWin32') {
+ push @INC, 't/fake/unix';
+} else {
+ push @INC, 't/fake/windows';
+}
+
+eval { require Test::Vars; };
+
+if ($EVAL_ERROR) {
+ plan(skip_all => 'Test::Vars required to validate the code');
+}
+
+Test::Vars::all_vars_ok();
+
================================================================
Commit: 683d797f62830637404722fe87ba5a93e742a3c7
https://github.com/fusinv/fusioninventory-agent/commit/683d797f62830637404722fe87ba5a93e742a3c7
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-22 (Wed, 22 Feb 2012)
Changed paths:
M Changes
Log Message:
-----------
fix: 2.1.12 was really 2.1.13
diff --git a/Changes b/Changes
index 5a53b41..0ef5280 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,6 @@
Revision history for FusionInventory::Agent
-2.1.12 Wed, 14 Dec 2011 13:06:44 +0100
+2.1.13 Wed, 14 Dec 2011 13:06:44 +0100
TEST-SUITE
✔ 2.1.10 Test suite fails
================================================================
Commit: 1ec749339d3531860c88348f83fe87b330315fe6
https://github.com/fusinv/fusioninventory-agent/commit/1ec749339d3531860c88348f83fe87b330315fe6
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-22 (Wed, 22 Feb 2012)
Changed paths:
M Changes
M lib/FusionInventory/Agent.pm
Log Message:
-----------
2.1.14 release
diff --git a/Changes b/Changes
index 0ef5280..f2abc35 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,39 @@
Revision history for FusionInventory::Agent
+2.1.14 Wed, 22 Feb 2012 14:56:51 -0000
+
+LINUX
+ ✔ Detected OS is "RedHat" for CentOS servers if lsb_release not available
+ commit:d3a252
+ http://forge.fusioninventory.org/issues/1193
+ thanks: Jonathan Clarke
+
+MACOSX
+ ✔ no-software option doesn't work as advertised
+ commit:18dfaf
+ http://forge.fusioninventory.org/issues/1476
+ thanks: Ronan Mejecaze
+ ✔ syntax error in Video module
+ thanks: Walid Nouh
+
+WINDOWS
+ ✔ No 2007 Microsoft Office system into XML
+ commit:39f3c7
+ http://forge.fusioninventory.org/issues/1065
+ thanks: Walid Nouh, Xavier Caillaud, jerome slayer
+ ✔ On Windows Vista Office 2007 is not correctly gathered
+ commit:39f3c7
+ http://forge.fusioninventory.org/issues/1425
+ thanks: Walid Nouh, Xavier Caillaud
+ ✔ VM System incorrect
+ commit:259996
+ http://forge.fusioninventory.org/issues/1436
+ thanks: Mario Gzuk
+ ✔ Inventory Internet Explorer when it's not present in Add/remove programs
+ commit:39f3c7
+ http://forge.fusioninventory.org/issues/1441
+ thanks: Walid Nouh, Xavier Caillaud, jerome slayer
+
2.1.13 Wed, 14 Dec 2011 13:06:44 +0100
TEST-SUITE
diff --git a/lib/FusionInventory/Agent.pm b/lib/FusionInventory/Agent.pm
index af2b9ee..f698503 100644
--- a/lib/FusionInventory/Agent.pm
+++ b/lib/FusionInventory/Agent.pm
@@ -11,7 +11,7 @@ use File::Path;
use XML::Simple;
use Sys::Hostname;
-our $VERSION = '2.1.13';
+our $VERSION = '2.1.14';
$ENV{LC_ALL} = 'C'; # Turn off localised output for commands
$ENV{LANG} = 'C'; # Turn off localised output for commands
================================================================
Commit: 07a4bff027b0a4aed6e5e040cefd818ae39d3143
https://github.com/fusinv/fusioninventory-agent/commit/07a4bff027b0a4aed6e5e040cefd818ae39d3143
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-23 (Thu, 23 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
Log Message:
-----------
more robuste win32 64bit software inventory
Ignore MSIE 64bit inventory if it has no version.
_getSoftwares, don't try to process bad content (not hash ref).
Reported-by: James M Pulver <jmp242 at cornell.edu>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index 58a1046..4c6c9a7 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -15,7 +15,7 @@ use Win32::TieRegistry (
use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Win32;
-my $seen;
+my $seen = {};
sub isEnabled {
my (%params) = @_;
@@ -37,47 +37,51 @@ sub doInventory {
my $machKey64 = $Registry->Open('LMachine', {
Access => KEY_READ | KEY_WOW64_64 ## no critic (ProhibitBitwise)
- }) or die "Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR";
+ }) or $logger->error("Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR");
my $softwares64 =
$machKey64->{"SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall"};
foreach my $software (_getSoftwares(
softwares => $softwares64,
- is64bit => 1
+ is64bit => 1,
+ logger => $logger
)) {
- _addSoftware(inventory => $inventory, entry => $software);
+ _addSoftware(inventory => $inventory, entry => $software, logger => $logger);
}
_processMSIE(
machKey => $machKey64,
inventory => $inventory,
- is64bit => 1
+ is64bit => 1,
+ logger => $logger,
);
my $machKey32 = $Registry->Open('LMachine', {
Access => KEY_READ | KEY_WOW64_32 ## no critic (ProhibitBitwise)
- }) or die "Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR";
+ }) or $logger->error("Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR");
my $softwares32 =
$machKey32->{"SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall"};
foreach my $software (_getSoftwares(
softwares => $softwares32,
- is64bit => 0
+ is64bit => 0,
+ logger => $logger
)) {
- _addSoftware(inventory => $inventory, entry => $software);
+ _addSoftware(inventory => $inventory, entry => $software, logger => $logger);
}
_processMSIE(
machKey => $machKey32,
inventory => $inventory,
- is64bit => 0
+ is64bit => 0,
+ logger => $logger
);
} else {
my $machKey = $Registry->Open('LMachine', {
Access => KEY_READ
- }) or die "Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR";
+ }) or $logger->error("Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR");
my $softwares =
$machKey->{"SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall"};
@@ -86,18 +90,19 @@ sub doInventory {
softwares => $softwares,
is64bit => 0
)) {
- _addSoftware(inventory => $inventory, entry => $software);
+ _addSoftware(inventory => $inventory, entry => $software, logger => $logger);
}
_processMSIE(
machKey => $machKey,
inventory => $inventory,
- is64bit => 0
+ is64bit => 0,
+ logger => $logger
);
}
}
sub _dateFormat {
- my ($date) = @_;
+ my ($date) = @_;
## no critic (ExplicitReturnUndef)
return undef unless $date;
@@ -118,16 +123,22 @@ sub _getSoftwares {
my $softwares = $params{softwares};
my $is64bit = $params{is64bit};
+ my $logger = $params{logger};
my @softwares;
+ return unless $softwares;
+
foreach my $rawGuid (keys %$softwares) {
my $data = $softwares->{$rawGuid};
+
+ next unless $data;
+
# odd, found on Win2003
next unless keys %$data > 2;
my $guid = $rawGuid;
- $guid =~ s/\/$//; # drop the tailing /
+ $guid =~ s/\/$//; # drop the tailing /
my $software = {
FROM => "registry",
@@ -162,6 +173,7 @@ sub _addSoftware {
my $entry = $params{entry};
+ $params{logger}->debug("_addSoftware() begin") if $params{logger};
# avoid duplicates
return if $seen->{$entry->{NAME}}->{$entry->{IS64BIT}}{$entry->{VERSION} || '_undef_'}++;
@@ -173,16 +185,17 @@ sub _processMSIE {
my $inventory = $params{inventory};
my $is64bit = $params{is64bit} || 0;
- my $machKey = $params{machKey};
my $name = "Internet Explorer";
if ($is64bit) {
$name .= " (64bit)";
}
my $version = $params{machKey}->{"SOFTWARE/Microsoft/Internet Explorer/Version"};
+ return unless $version;
_addSoftware(
inventory => $params{inventory},
+ logger => $params{logger},
entry => {
FROM => "registry",
IS64BIT => $is64bit,
@@ -193,5 +206,4 @@ sub _processMSIE {
}
-
1;
================================================================
Commit: 6dae477b10956c14b62a70f2f636a19a7acf2366
https://github.com/fusinv/fusioninventory-agent/commit/6dae477b10956c14b62a70f2f636a19a7acf2366
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-23 (Thu, 23 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
Log Message:
-----------
drop unused variables and methods
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
index a2d864d..ab36038 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
@@ -299,16 +299,6 @@ sub setTag {
}
-sub checkContent {
- my ($self, $args) = @_;
-
- my $logger = $self->{logger};
-
- my $missing = 0;
- my $content = $self->{content};
-
-}
-
sub computeChecksum {
my ($self) = @_;
@@ -374,7 +364,7 @@ sub computeChecksum {
}
sub saveLastState {
- my ($self, $args) = @_;
+ my ($self) = @_;
my $logger = $self->{logger};
@@ -479,10 +469,6 @@ Set BIOS informations.
What is that for? :)
-=head2 checkContent()
-
-Check inventory content.
-
=head2 computeChecksum()
Compute the inventory checksum. This information is used by the server to
================================================================
Commit: 8a6912318266000dbbd9b603ebbcfbfe0aaf87e8
https://github.com/fusinv/fusioninventory-agent/commit/8a6912318266000dbbd9b603ebbcfbfe0aaf87e8
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-23 (Thu, 23 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
Log Message:
-----------
reorder functions
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
index 672de8b..6e6b4f8 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
@@ -2,9 +2,7 @@ package FusionInventory::Agent::Task::Inventory::Input::AIX::LVM;
use FusionInventory::Agent::Tools;
-# LVM for AIX
use strict;
-
use warnings;
use English qw(-no_match_vars);
@@ -13,6 +11,28 @@ sub isEnabled {
canRun("lspv");
}
+sub doInventory {
+ my (%params) = @_;
+
+ my $inventory = $params{inventory};
+
+ my $pvs = _parsePvs();
+ foreach (@$pvs) {
+ $inventory->addEntry(section => 'PHYSICAL_VOLUMES', entry => $_);
+ }
+
+ my $lvs = _parseLvs();
+ foreach (@$lvs) {
+ $inventory->addEntry(section => 'LOGICAL_VOLUMES', entry => $_);
+ }
+
+ my $vgs = _parseVgs();
+ foreach (@$vgs) {
+ $inventory->addEntry(section => 'VOLUME_GROUPS', entry => $_);
+ }
+
+}
+
sub _parseLvs {
my @vs_elem;
@@ -181,26 +201,4 @@ sub _parseVgs {
return $entries;
}
-sub doInventory {
- my (%params) = @_;
-
- my $inventory = $params{inventory};
-
- my $pvs = _parsePvs();
- foreach (@$pvs) {
- $inventory->addEntry(section => 'PHYSICAL_VOLUMES', entry => $_);
- }
-
- my $lvs = _parseLvs();
- foreach (@$lvs) {
- $inventory->addEntry(section => 'LOGICAL_VOLUMES', entry => $_);
- }
-
- my $vgs = _parseVgs();
- foreach (@$vgs) {
- $inventory->addEntry(section => 'VOLUME_GROUPS', entry => $_);
- }
-
-}
-
1;
================================================================
Commit: ac16a814c38c824b2d683d5fc1649ca4a57bbeb1
https://github.com/fusinv/fusioninventory-agent/commit/ac16a814c38c824b2d683d5fc1649ca4a57bbeb1
Author: Guillaume Rousse <Guillaume.Rousse at inria.fr>
Date: 2012-02-24 (Fri, 24 Feb 2012)
Changed paths:
A resources/macos/system_profiler/10.6-intel-SPFireWireDataType
A resources/macos/system_profiler/10.6-intel-SPParallelATADataType
A resources/macos/system_profiler/10.6-intel-SPSerialATADataType
A resources/macos/system_profiler/10.6-intel-SPUSBDataType
Log Message:
-----------
initial import
diff --git a/resources/macos/system_profiler/10.6-intel-SPFireWireDataType b/resources/macos/system_profiler/10.6-intel-SPFireWireDataType
new file mode 100644
index 0000000..4a6629d
--- /dev/null
+++ b/resources/macos/system_profiler/10.6-intel-SPFireWireDataType
@@ -0,0 +1,6 @@
+FireWire:
+
+ FireWire Bus:
+
+ Maximum Speed: Up to 400 Mb/sec
+
diff --git a/resources/macos/system_profiler/10.6-intel-SPParallelATADataType b/resources/macos/system_profiler/10.6-intel-SPParallelATADataType
new file mode 100644
index 0000000..0999d1c
--- /dev/null
+++ b/resources/macos/system_profiler/10.6-intel-SPParallelATADataType
@@ -0,0 +1,38 @@
+ATA:
+
+ ATA Bus:
+
+ HL-DT-ST DVDRW GSA-S10N:
+
+ Capacity: 7,77 GB (7 771 521 024 bytes)
+ Model: HL-DT-ST DVDRW GSA-S10N
+ Revision: BP08
+ Serial Number: K0076RM5813
+ Removable Media: Yes
+ Detachable Drive: No
+ BSD Name: disk1
+ Protocol: ATAPI
+ Unit Number: 0
+ Socket Type: Internal
+ Low Power Polling: Yes
+ Power Off: Yes
+ Partition Map Type: APM (Apple Partition Map)
+ S.M.A.R.T. status: Not Supported
+ Volumes:
+ Capacity: 31 KB (30 720 bytes)
+ Media Type: DVD-ROM
+ Writable: No
+ BSD Name: disk1s1
+ Capacity: 1,03 GB (1 034 455 040 bytes)
+ Media Type: DVD-ROM
+ Writable: No
+ BSD Name: disk1s2
+ Mac OS X Install DVD:
+ Capacity: 6,74 GB (6 737 006 592 bytes)
+ Available: 84,9 MB (84 946 944 bytes)
+ Media Type: DVD-ROM
+ Writable: No
+ File System: HFS+
+ BSD Name: disk1s3
+ Mount Point: /Volumes/Mac OS X Install DVD
+
diff --git a/resources/macos/system_profiler/10.6-intel-SPSerialATADataType b/resources/macos/system_profiler/10.6-intel-SPSerialATADataType
new file mode 100644
index 0000000..f8b58bf
--- /dev/null
+++ b/resources/macos/system_profiler/10.6-intel-SPSerialATADataType
@@ -0,0 +1,36 @@
+Serial-ATA:
+
+ Intel ICH7-M AHCI:
+
+ Vendor: Intel
+ Product: ICH7-M AHCI
+ Link Speed: 1.5 Gigabit
+ Negotiated Link Speed: 1.5 Gigabit
+ Description: AHCI Version 1.10 Supported
+
+ FUJITSU MHY2120BH:
+
+ Capacity: 120,03 GB (120 034 123 776 bytes)
+ Model: FUJITSU MHY2120BH
+ Revision: 0081000D
+ Serial Number: K439T822NS6V
+ Native Command Queuing: Yes
+ Queue Depth: 32
+ Removable Media: No
+ Detachable Drive: No
+ BSD Name: disk0
+ Medium Type: Rotational
+ Partition Map Type: GPT (GUID Partition Table)
+ S.M.A.R.T. status: Verified
+ Volumes:
+ Capacity: 209,7 MB (209 715 200 bytes)
+ Writable: Yes
+ BSD Name: disk0s1
+ Macintosh HD:
+ Capacity: 119,69 GB (119 690 149 888 bytes)
+ Available: 94,9 GB (94 897 831 936 bytes)
+ Writable: Yes
+ File System: Journaled HFS+
+ BSD Name: disk0s2
+ Mount Point: /
+
diff --git a/resources/macos/system_profiler/10.6-intel-SPUSBDataType b/resources/macos/system_profiler/10.6-intel-SPUSBDataType
new file mode 100644
index 0000000..41e21a7
--- /dev/null
+++ b/resources/macos/system_profiler/10.6-intel-SPUSBDataType
@@ -0,0 +1,91 @@
+USB:
+
+ USB High-Speed Bus:
+
+ Host Controller Location: Built-in USB
+ Host Controller Driver: AppleUSBEHCI
+ PCI Device ID: 0x27cc
+ PCI Revision ID: 0x0002
+ PCI Vendor ID: 0x8086
+ Bus Number: 0xfd
+
+ Built-in iSight:
+
+ Product ID: 0x8501
+ Vendor ID: 0x05ac (Apple Inc.)
+ Version: 1.89
+ Speed: Up to 480 Mb/sec
+ Manufacturer: Micron
+ Location ID: 0xfd400000 / 2
+ Current Available (mA): 500
+ Current Required (mA): 100
+
+ USB Bus:
+
+ Host Controller Location: Built-in USB
+ Host Controller Driver: AppleUSBUHCI
+ PCI Device ID: 0x27cb
+ PCI Revision ID: 0x0002
+ PCI Vendor ID: 0x8086
+ Bus Number: 0x7d
+
+ Bluetooth USB Host Controller:
+
+ Product ID: 0x8205
+ Vendor ID: 0x05ac (Apple Inc.)
+ Version: 19.65
+ Speed: Up to 12 Mb/sec
+ Manufacturer: Apple Inc.
+ Location ID: 0x7d100000 / 2
+ Current Available (mA): 500
+ Current Required (mA): 0
+
+ USB Bus:
+
+ Host Controller Location: Built-in USB
+ Host Controller Driver: AppleUSBUHCI
+ PCI Device ID: 0x27c9
+ PCI Revision ID: 0x0002
+ PCI Vendor ID: 0x8086
+ Bus Number: 0x3d
+
+ USB Bus:
+
+ Host Controller Location: Built-in USB
+ Host Controller Driver: AppleUSBUHCI
+ PCI Device ID: 0x27c8
+ PCI Revision ID: 0x0002
+ PCI Vendor ID: 0x8086
+ Bus Number: 0x1d
+
+ Apple Internal Keyboard / Trackpad:
+
+ Product ID: 0x021b
+ Vendor ID: 0x05ac (Apple Inc.)
+ Version: 0.18
+ Speed: Up to 12 Mb/sec
+ Manufacturer: Apple Computer
+ Location ID: 0x1d200000 / 2
+ Current Available (mA): 500
+ Current Required (mA): 40
+
+ USB Bus:
+
+ Host Controller Location: Built-in USB
+ Host Controller Driver: AppleUSBUHCI
+ PCI Device ID: 0x27ca
+ PCI Revision ID: 0x0002
+ PCI Vendor ID: 0x8086
+ Bus Number: 0x5d
+
+ IR Receiver:
+
+ Product ID: 0x8240
+ Vendor ID: 0x05ac (Apple Inc.)
+ Version: 1.10
+ Speed: Up to 12 Mb/sec
+ Manufacturer: Apple Computer, Inc.
+ Location ID: 0x5d200000 / 2
+ Current Available (mA): 500
+ Current Required (mA): 100
+
================================================================
Commit: 70a26c1caf112a3cf40b6930501bad6a450843ce
https://github.com/fusinv/fusioninventory-agent/commit/70a26c1caf112a3cf40b6930501bad6a450843ce
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
Log Message:
-----------
use explicit iterators
There was an error trying to read the diff from github.com (execution expired)
================================================================
Commit: df1ff1f26411869265a7ed1ef2ce5c5e44981394
https://github.com/fusinv/fusioninventory-agent/commit/df1ff1f26411869265a7ed1ef2ce5c5e44981394
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
Log Message:
-----------
better function names
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
index 4812051..e715576 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
@@ -16,21 +16,21 @@ sub doInventory {
my $inventory = $params{inventory};
- foreach my $volume (_parsePvs()) {
+ foreach my $volume (_getPhysicalVolumes()) {
$inventory->addEntry(section => 'PHYSICAL_VOLUMES', entry => $volume);
}
- foreach my $volume (_parseLvs()) {
+ foreach my $volume (_getLogicalVolumes()) {
$inventory->addEntry(section => 'LOGICAL_VOLUMES', entry => $volume);
}
- foreach my $group (_parseVgs()) {
+ foreach my $group (_getVolumeGroups()) {
$inventory->addEntry(section => 'VOLUME_GROUPS', entry => $group);
}
}
-sub _parseLvs {
+sub _getLogicalVolumes {
my @vs_elem;
my $vg;
@@ -87,7 +87,7 @@ sub _parseLvs {
return $entries;
}
-sub _parsePvs {
+sub _getPhysicalVolumes {
my @vs_elem;
my $vg;
@@ -141,7 +141,7 @@ sub _parsePvs {
return $entries;
}
-sub _parseVgs {
+sub _getVolumeGroups {
my $entries = [];
my @vs_elem;
================================================================
Commit: 568217a778e9ba4448f965cb30ddb5262c78d677
https://github.com/fusinv/fusioninventory-agent/commit/568217a778e9ba4448f965cb30ddb5262c78d677
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
Log Message:
-----------
sanity rewrite:
- use getFileHandle() instead of backticks
- process command ouput line by line rather than in list context
- split parsing in two functions for each entry category
- use explicit iterators
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
index e715576..780c1a7 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
@@ -15,187 +15,207 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
+ my $logger = $params{logger};
- foreach my $volume (_getPhysicalVolumes()) {
+ foreach my $volume (_getPhysicalVolumes($logger)) {
$inventory->addEntry(section => 'PHYSICAL_VOLUMES', entry => $volume);
}
- foreach my $volume (_getLogicalVolumes()) {
+ foreach my $volume (_getLogicalVolumes($logger)) {
$inventory->addEntry(section => 'LOGICAL_VOLUMES', entry => $volume);
}
- foreach my $group (_getVolumeGroups()) {
+ foreach my $group (_getVolumeGroups($logger)) {
$inventory->addEntry(section => 'VOLUME_GROUPS', entry => $group);
}
}
sub _getLogicalVolumes {
+ my ($logger) = @_;
- my @vs_elem;
- my $vg;
- my $ppsize;
- my $status;
- my $nblv;
- my $typelv;
- my $lvname;
- my $entries = [];
-
- foreach (`lsvg`) {
- chomp;
- foreach (`lsvg -l $_`) {
- chomp;
- if (/(\S+):.*/) {
- $vg = $1;
- }
- if ( ( !/^LV NAME.*/ )
- && /(\S+) *(\S+) *(\d+) *(\d+) *(\d+) *(\S+) *(\S+)/ )
- {
- $vs_elem[0] = $vg . "/" . $1;
- $typelv = $2;
- $vs_elem[6] = 0;
- $vs_elem[5] = $3;
- $status = "Type " . $2 . " ,PV: " . $5;
- $lvname = $1;
- foreach (`lslv $1`) {
- if (/.*PP SIZE:\s+(\d+) .*/) {
- $ppsize = $1;
- }
- if (/LV IDENTIFIER: (\S+)/) {
- $vs_elem[7] = $1;
- }
- }
-# print( $lvname. " "
-# . $vg . " "
-# . $status . " "
-# . $vs_elem[5] . " "
-# . $vs_elem[7] . " "
-# . $vs_elem[5]
-# . "\n" );
- push @$entries,
- {
- LV_NAME => $lvname,
- VG_UUID => $vg,
- ATTR => $status,
- SIZE => int( $vs_elem[5] * $ppsize || 0 ),
- LV_UUID => $vs_elem[7],
- SEG_COUNT => $vs_elem[5],
- };
- }
+ my $handle = getFileHandle(
+ command => "lsvg",
+ logger => $logger
+ );
+ return unless $handle;
+
+ my @volumes;
+
+ foreach my $line (<$handle>) {
+ chomp $line;
+ push @volumes, _getLogicalVolume($logger, $line);
+ }
+ close $handle;
+
+ return @volumes;
+}
+
+sub _getLogicalVolume {
+ my ($logger, $name) = @_;
+
+ my $handle = getFileHandle(
+ command => "lsvg -l $name",
+ logger => $logger
+ );
+ return unless $handle;
+
+ my $volume;
+
+ foreach my $line (<$handle>) {
+ chomp $line;
+
+ if ($line =~ /(\S+):.*/) {
+ $volume->{VG_UUID} = $1;
+ }
+ if ($line !~ !/^LV NAME.*/ && $line =~ /(\S+) *(\S+) *(\d+) *(\d+) *(\d+) *(\S+) *(\S+)/) {
+ $volume->{LV_NAME} = $1;
+ $volume->{SEG_COUNT} = $3;
+ $volume->{ATTR} = "Type $2,PV: $5";
}
}
- return $entries;
+ close $handle;
+
+ my $size;
+ foreach (`lslv $volume->{LV_NAME}`) {
+ if (/.*PP SIZE:\s+(\d+) .*/) {
+ $size = $1;
+ }
+ if (/LV IDENTIFIER: (\S+)/) {
+ $volume->{LV_UUID} = $1;
+ }
+ }
+
+ $volume->{SIZE} = int($volume->{SEG_COUNT} * $size);
+
+ return $volume;
}
sub _getPhysicalVolumes {
+ my ($logger) = @_;
+
+ my $handle = getFileHandle(
+ command => "lspv | cut -f1 -d' '",
+ logger => $logger
+ );
+ return unless $handle;
- my @vs_elem;
- my $vg;
- my $ppsize;
- my $status;
- my $nblv;
- my $typelv;
-
- my $entries = [];
- my $pvname = "";
-
- foreach (`lspv | cut -f1 -d' '`) {
- chomp;
- $pvname = $_;
- foreach (`lspv $_`) {
- chomp;
- if (/PHYSICAL VOLUME: (\S+)/) {
- $vs_elem[0] = $1;
- }
- if (/FREE PPs: (\d+) .*/) {
- $vs_elem[5] = $1;
- }
- if (/TOTAL PPs: (\d+) .*/) {
- $vs_elem[4] = $1;
- }
- if (/VOLUME GROUP: (\S+)/) {
- $vg = $1;
- }
- if (/PP SIZE: (\d+) .*/) {
- $ppsize = $1;
- }
- if (/PV IDENTIFIER: (\S+)/) {
- $vs_elem[6] = $1;
- }
- }
- push @$entries,
- {
- DEVICE => "/dev/" . $pvname,
- PV_NAME => $pvname,
- FORMAT => "AIX PV " . $vs_elem[0],
- ATTR => "VG " . $vg,
- SIZE => $vs_elem[4] * $ppsize,
- FREE => $vs_elem[5] * $ppsize,
- PV_UUID => $vs_elem[6],
- PV_PE_COUNT => $vs_elem[4],
- PE_SIZE => $ppsize,
- }
+ my @volumes;
+ foreach my $line (<$handle>) {
+ chomp $line;
+ push @volumes, _getPhysicalVolume($logger, $line);
}
+ close $handle;
- return $entries;
+ return @volumes;
+}
+
+sub _getPhysicalVolume {
+ my ($logger, $name) = @_;
+
+ my $handle = getFileHandle(
+ command => "lspv $name",
+ logger => $logger
+ );
+ return unless $handle;
+
+ my $volume = {
+ DEVICE => "/dev/$name",
+ PV_NAME => $name,
+ };
+
+ my ($free, $total);
+ foreach my $line (<$handle>) {
+ chomp $line;
+
+ if ($line =~ /PHYSICAL VOLUME: (\S+)/) {
+ $volume->{FORMAT} = "AIX PV $1";
+ }
+ if ($line =~ /FREE PPs: (\d+) .*/) {
+ $free = $1;
+ }
+ if ($line =~ /TOTAL PPs: (\d+) .*/) {
+ $total = $1;
+ }
+ if ($line =~ /VOLUME GROUP: (\S+)/) {
+ $volume->{ATTR} = "VG $1";
+ }
+ if ($line =~ /PP SIZE: (\d+) .*/) {
+ $volume->{PE_SIZE} = $1;
+ }
+ if ($line =~ /PV IDENTIFIER: (\S+)/) {
+ $volume->{PV_UUID} = $1;
+ }
+ }
+ close $handle;
+
+ $volume->{SIZE} = $total * $volume->{PE_SIZE};
+ $volume->{FREE} = $free * $volume->{PE_SIZE};
+ $volume->{PV_PE_COUNT} = $total;
+
+ return $volume;
}
sub _getVolumeGroups {
+ my ($logger) = @_;
+
+ my $handle = getFileHandle(
+ command => 'lsvg',
+ logger => $logger
+ );
+ return unless $handle;
+
+ my @groups;
+
+ foreach my $line (<$handle>) {
+ chomp $line;
+ push @groups, _getVolumeGroup($logger, $line);
+ }
+ close $handle;
- my $entries = [];
- my @vs_elem;
- my $vg;
- my $ppsize;
- my $status;
- my $nblv;
- my $typelv;
- my $nbpv;
-
- foreach (`lsvg`) {
- chomp;
- $vg = $_;
- foreach (`lsvg $_`) {
- chomp;
- if (/VOLUME GROUP: (\S+) .* /) {
- $vs_elem[0] = $1;
- }
- if (/TOTAL PPs: (\d+) .*/) {
- $vs_elem[5] = $1;
- }
- if (/FREE PPs: (\d+) .*/) {
- $vs_elem[6] = $1;
- }
- if (/VG IDENTIFIER: (\S+)/) {
- $vs_elem[7] = $1;
- }
- if (/PP SIZE: (\d+) .*/) {
- $ppsize = $1;
- }
- if (/LVs: (\d+) .*/) {
- $nblv = $1;
- }
- if (/ACTIVE PVs:\s+(\d+) .*/) {
- $nbpv = $1;
- }
-
- }
-
- push @$entries,
- {
- VG_NAME => $vg,
- PV_COUNT => $nbpv,
- LV_COUNT => $nblv,
- ATTR => "",
- SIZE => $vs_elem[5],
- FREE => $vs_elem[6],
- VG_UUID => $vs_elem[7],
- VG_EXTENT_SIZE => $ppsize,
- };
+ return @groups;
+}
+
+sub _getVolumeGroup {
+ my ($logger, $name) = @_;
+
+ my $handle = getFileHandle(
+ command => "lsvg $name",
+ logger => $logger
+ );
+ return unless $handle;
+
+ my $group = {
+ VG_NAME => $name
+ };
+
+ foreach my $line (<$handle>) {
+ chomp $line;
+
+ if ($line =~ /TOTAL PPs: (\d+) .*/) {
+ $group->{SIZE} = $1;
+ }
+ if ($line =~ /FREE PPs: (\d+) .*/) {
+ $group->{FREE} = $1;
+ }
+ if ($line =~ /VG IDENTIFIER: (\S+)/) {
+ $group->{VG_UUID} = $1;
+ }
+ if ($line =~ /PP SIZE: (\d+) .*/) {
+ $group->{VG_EXTENT_SIZE} = $1;
+ }
+ if ($line =~ /LVs: (\d+) .*/) {
+ $group->{LV_COUNT} = $1;
+ }
+ if ($line =~/ACTIVE PVs:\s+(\d+) .*/) {
+ $group->{PV_COUNT} = $1;
+ }
}
+ close $handle;
- return $entries;
+ return $group;
}
1;
================================================================
Commit: 0b05a82c823e9f78558d88645ff4753455e69560
https://github.com/fusinv/fusioninventory-agent/commit/0b05a82c823e9f78558d88645ff4753455e69560
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
Log Message:
-----------
use consistent variable names
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
index 390fb4e..997617d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
@@ -44,15 +44,16 @@ sub _getLogicalVolumes {
return unless $handle;
my @volumes;
- foreach (<$handle>) {
- my @line = split(/\s+/, $_);
+ while (my $line = <$handle>) {
+ my @infos = split(/\s+/, $line);
+
push @volumes, {
- LV_NAME => $line[1],
- VG_UUID => $line[2],
- ATTR => $line[3],
- SIZE => int($line[4]||0),
- LV_UUID => $line[5],
- SEG_COUNT => $line[6],
+ LV_NAME => $infos[1],
+ VG_UUID => $infos[2],
+ ATTR => $infos[3],
+ SIZE => int($infos[4]||0),
+ LV_UUID => $infos[5],
+ SEG_COUNT => $infos[6],
}
}
================================================================
Commit: e8052db2eed0af855afcce3638ff909582da0030
https://github.com/fusinv/fusioninventory-agent/commit/e8052db2eed0af855afcce3638ff909582da0030
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
Log Message:
-----------
sanitize regexps
- drop useless matching of anything
- consistent spacing definition
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
index 780c1a7..51b4f78 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
@@ -65,10 +65,10 @@ sub _getLogicalVolume {
foreach my $line (<$handle>) {
chomp $line;
- if ($line =~ /(\S+):.*/) {
+ if ($line =~ /(\S+):/) {
$volume->{VG_UUID} = $1;
}
- if ($line !~ !/^LV NAME.*/ && $line =~ /(\S+) *(\S+) *(\d+) *(\d+) *(\d+) *(\S+) *(\S+)/) {
+ if ($line !~ !/^LV NAME/ && $line =~ /(\S+) *(\S+) *(\d+) *(\d+) *(\d+) *(\S+) *(\S+)/) {
$volume->{LV_NAME} = $1;
$volume->{SEG_COUNT} = $3;
$volume->{ATTR} = "Type $2,PV: $5";
@@ -81,7 +81,7 @@ sub _getLogicalVolume {
if (/.*PP SIZE:\s+(\d+) .*/) {
$size = $1;
}
- if (/LV IDENTIFIER: (\S+)/) {
+ if (/LV IDENTIFIER:\s+(\S+)/) {
$volume->{LV_UUID} = $1;
}
}
@@ -129,22 +129,22 @@ sub _getPhysicalVolume {
foreach my $line (<$handle>) {
chomp $line;
- if ($line =~ /PHYSICAL VOLUME: (\S+)/) {
+ if ($line =~ /PHYSICAL VOLUME:\s+(\S+)/) {
$volume->{FORMAT} = "AIX PV $1";
}
- if ($line =~ /FREE PPs: (\d+) .*/) {
+ if ($line =~ /FREE PPs:\s+(\d+)/) {
$free = $1;
}
- if ($line =~ /TOTAL PPs: (\d+) .*/) {
+ if ($line =~ /TOTAL PPs:\s+(\d+)/) {
$total = $1;
}
- if ($line =~ /VOLUME GROUP: (\S+)/) {
+ if ($line =~ /VOLUME GROUP:\s+(\S+)/) {
$volume->{ATTR} = "VG $1";
}
- if ($line =~ /PP SIZE: (\d+) .*/) {
+ if ($line =~ /PP SIZE:\s+(\d+)/) {
$volume->{PE_SIZE} = $1;
}
- if ($line =~ /PV IDENTIFIER: (\S+)/) {
+ if ($line =~ /PV IDENTIFIER:\s+(\S+)/) {
$volume->{PV_UUID} = $1;
}
}
@@ -193,22 +193,22 @@ sub _getVolumeGroup {
foreach my $line (<$handle>) {
chomp $line;
- if ($line =~ /TOTAL PPs: (\d+) .*/) {
+ if ($line =~ /TOTAL PPs:\s+(\d+)/) {
$group->{SIZE} = $1;
}
- if ($line =~ /FREE PPs: (\d+) .*/) {
+ if ($line =~ /FREE PPs:\s+(\d+)/) {
$group->{FREE} = $1;
}
- if ($line =~ /VG IDENTIFIER: (\S+)/) {
+ if ($line =~ /VG IDENTIFIER:\s+(\S+)/) {
$group->{VG_UUID} = $1;
}
- if ($line =~ /PP SIZE: (\d+) .*/) {
+ if ($line =~ /PP SIZE:\s+(\d+)/) {
$group->{VG_EXTENT_SIZE} = $1;
}
- if ($line =~ /LVs: (\d+) .*/) {
+ if ($line =~ /LVs:\s+(\d+)/) {
$group->{LV_COUNT} = $1;
}
- if ($line =~/ACTIVE PVs:\s+(\d+) .*/) {
+ if ($line =~/ACTIVE PVs:\s+(\d+)/) {
$group->{PV_COUNT} = $1;
}
================================================================
Commit: c0975af90b492a8864486a2d25da4f1ef8492ea5
https://github.com/fusinv/fusioninventory-agent/commit/c0975af90b492a8864486a2d25da4f1ef8492ea5
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Server.pm
M lib/FusionInventory/Agent/Target/Server.pm
M lib/FusionInventory/Agent/Task/Inventory.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Memory.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Bios.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Storages/HP.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/HPUX.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Memory.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/ARM.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/SPARC.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/i386.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Hostname.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Memory.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/SolarisZones.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Controllers.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Drives.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Inputs.pm
M lib/FusionInventory/Agent/XML/Query.pm
Log Message:
-----------
drop unused variables
diff --git a/lib/FusionInventory/Agent/HTTP/Server.pm b/lib/FusionInventory/Agent/HTTP/Server.pm
index 9ce4400..001033e 100644
--- a/lib/FusionInventory/Agent/HTTP/Server.pm
+++ b/lib/FusionInventory/Agent/HTTP/Server.pm
@@ -256,7 +256,6 @@ sub _is_authenticated {
sub _listen {
my ($self) = @_;
- my $scheduler = $self->{scheduler};
my $logger = $self->{logger};
my $daemon = HTTP::Daemon->new(
diff --git a/lib/FusionInventory/Agent/Target/Server.pm b/lib/FusionInventory/Agent/Target/Server.pm
index 64af009..0ffa6a4 100644
--- a/lib/FusionInventory/Agent/Target/Server.pm
+++ b/lib/FusionInventory/Agent/Target/Server.pm
@@ -28,8 +28,6 @@ sub new {
vardir => $params{basevardir} . '/' . $subdir
);
- my $logger = $self->{logger};
-
return $self;
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index 948e730..eee2a67 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -123,7 +123,6 @@ sub _initModulesList {
my $logger = $self->{logger};
my $config = $self->{config};
- my $storage = $self->{storage};
my @modules = __PACKAGE__->getModules('Input');
die "no inventory module found" if !@modules;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
index 54fd354..b9d5d21 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
@@ -15,7 +15,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
# sysctl infos
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
index 17f00f4..e79dbd0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
@@ -15,7 +15,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
# sysctl infos
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
index 12bf81c..9cb1786 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
@@ -15,7 +15,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
# sysctl infos
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Memory.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Memory.pm
index 72f36d1..d79b3cf 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Memory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Memory.pm
@@ -15,7 +15,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
# Swap
my $swapSize;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Bios.pm
index 830db3e..01ee764 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Bios.pm
@@ -29,7 +29,6 @@ sub _getBiosHardware {
my $system_info = $infos->{1}->[0];
my $base_info = $infos->{2}->[0];
my $chassis_info = $infos->{3}->[0];
- my $cpu_info = $infos->{4}->[0];
my $bios = {
BMANUFACTURER => $bios_info->{'Vendor'},
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Storages/HP.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Storages/HP.pm
index 7587cd4..ce1818f 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Storages/HP.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Storages/HP.pm
@@ -16,7 +16,6 @@ use FusionInventory::Agent::Tools;
# HP Array Configuration Utility CLI 7.85-18.0
sub _getHpacuacliFromWinRegistry {
- my ($logger) = @_;
my $Registry;
Win32::TieRegistry->require();
@@ -56,7 +55,7 @@ sub doInventory {
my $inventory = $params{inventory};
my $logger = $params{logger};
- my ($pd, $serialnumber, $model, $capacity, $firmware, $description, $media, $manufacturer);
+ my ($serialnumber, $model, $capacity, $firmware, $description, $media, $manufacturer);
my $hpacuacliPath = canRun('hpacucli') ?
"hpacucli":
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX.pm
index bdf3f3c..5978c80 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX.pm
@@ -17,7 +17,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
# Operating system informations
my $OSVersion = getFirstLine(command => 'uname -v');
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Memory.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Memory.pm
index c80e75c..ff2f94c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Memory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Memory.pm
@@ -106,7 +106,6 @@ sub _parseCstm {
my %capacities;
my $capacity = 0;
- my $caption;
my $description;
my $numslot = 1;
my $subnumslot;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux.pm
index fd19bff..32a772b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux.pm
@@ -43,7 +43,6 @@ sub _getRHNSystemId {
return unless -f $file;
my $tpp = XML::TreePP->new();
my $h = $tpp->parsefile($file);
- my $v;
eval {
foreach (@{$h->{params}{param}{value}{struct}{member}}) {
next unless $_->{name} eq 'system_id';
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/ARM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/ARM.pm
index ff2f1dc..46a1ee3 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/ARM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/ARM.pm
@@ -30,11 +30,9 @@ sub doInventory {
}
sub _getCPUsFromProc {
- my ($logger, $file) = @_;
-
my @cpus;
- foreach my $cpu (getCPUsFromProc(@_)) {
+ foreach my $cpu (getCPUsFromProc(@_)) {
push @cpus, {
ARCH => 'ARM',
TYPE => $cpu->{processor}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/SPARC.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/SPARC.pm
index 71f7b52..e0eef88 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/SPARC.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/SPARC.pm
@@ -32,8 +32,6 @@ sub doInventory {
}
sub _getCPUsFromProc {
- my ($logger, $file) = @_;
-
my $cpu = (getCPUsFromProc(@_))[0];
return unless $cpu && $cpu->{'ncpus probed'};
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/i386.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/i386.pm
index a6affc8..f9f84b9 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/i386.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/i386.pm
@@ -70,7 +70,7 @@ sub doInventory {
sub _getCPUsFromProc {
my @cpus = getCPUsFromProc(@_);
- my ($procs, $cpuNbr, $cores, $threads);
+ my ($procs, $cpuNbr);
my @cpuList;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS.pm
index b30ff81..36d28a7 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS.pm
@@ -15,7 +15,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
my ($OSName, $OSVersion);
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Hostname.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Hostname.pm
index 94ee02e..3900953 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Hostname.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Hostname.pm
@@ -15,7 +15,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
my $prof = Mac::SysProfile->new();
my $info = $prof->gettype('SPSoftwareDataType');
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
index d2b4604..af65086 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
@@ -36,7 +36,6 @@ sub _getDisplays {
foreach my $videoName (keys %{$infos->{'Graphics/Displays'}}) {
my $videoCardInfo = $infos->{'Graphics/Displays'}{$videoName};
- my $displays = {};
foreach my $displayName (keys %{$videoCardInfo->{Displays}}) {
next if $displayName eq 'Display Connector';
next if $displayName eq 'Display';
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
index 680cb0d..08de6b0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
@@ -133,7 +133,7 @@ sub _parsePrtconf {
);
return unless $handle;
- my ($infos, $name, $OBPstring);
+ my $infos;
while (my $line = <$handle>) {
next unless $line =~ /^ \s* ([^:]+) : \s* ' (.+) '$/x;
next if $infos->{$1};
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Memory.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Memory.pm
index 2110677..82fd6ae 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Memory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Memory.pm
@@ -132,7 +132,6 @@ sub _getMemories2 {
my $flag_mt = 0;
my $capacity;
- my $description;
my $caption;
my $speed;
my $type;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
index 91a3aa0..efeee64 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
@@ -71,7 +71,6 @@ sub _getSlots5 {
my $name;
my $description;
my $designation;
- my $status;
while (<$handle>) {
last if /^\=+/ && $flag_pci && $flag;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/SolarisZones.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/SolarisZones.pm
index cafaa8c..2909a3e 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/SolarisZones.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/SolarisZones.pm
@@ -22,8 +22,8 @@ sub doInventory {
getAllLines(command => '/usr/sbin/zoneadm list -p', logger => $logger);
foreach my $zone (@zones) {
- my ($zoneid, $zonename, $zonestatus, $pathroot , $uuid) = split(/:/, $zone);
- #
+ my ($zoneid, $zonename, $zonestatus, undef, $uuid) = split(/:/, $zone);
+
# Memory considerations depends on rcapd or project definitions
# Little hack, I go directly in /etc/zones reading mcap physcap for each zone.
my $zonefile = "/etc/zones/$zonename.xml";
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
index 424be3b..60c5ba1 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
@@ -53,7 +53,7 @@ sub _getVirtualMachines {
my @machines;
while (my $line = <$handle>) {
chomp $line;
- my ($name, $vmid, $memory, $vcpu, $status, $time) = split(' ', $line);
+ my ($name, $vmid, $memory, $vcpu, $status) = split(' ', $line);
next if $name eq 'Domain-0';
next if $vmid == 0;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm
index ebcdbeb..558e157 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm
@@ -15,7 +15,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
# Doesn't works on Win2003 Server
# On Win7, we need to use SecurityCenter2
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
index a086573..8f1d49c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
@@ -28,15 +28,11 @@ sub doInventory {
my $inventory = $params{inventory};
my $logger = $params{logger};
- my $serial;
- my $id;
- my $speed;
-
my @dmidecodeCpu = getCpusFromDmidecode();
my $vmsystem;
-
my $cpuId = 0;
+
foreach my $object (getWmiObjects(
class => 'Win32_Processor',
properties => [ qw/NumberOfCores ProcessorId MaxClockSpeed/ ]
@@ -60,7 +56,6 @@ sub doInventory {
my $speed = $dmidecodeCpu[$cpuId]->{SPEED} || $object->{MaxClockSpeed};
my $serial = $dmidecodeCpu[$cpuId]->{SERIAL};
-
# Some information are missing on Win2000
if (!$name) {
$name = $ENV{PROCESSOR_IDENTIFIER};
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Controllers.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Controllers.pm
index 30fe815..c7da8e6 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Controllers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Controllers.pm
@@ -13,7 +13,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
my %seen;
foreach my $class (qw/
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Drives.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Drives.pm
index baab2a4..433232a 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Drives.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Drives.pm
@@ -23,7 +23,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
my $systemDrive;
foreach my $object (getWmiObjects(
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Inputs.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Inputs.pm
index 6d025f8..01c0c1d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Inputs.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Inputs.pm
@@ -29,7 +29,6 @@ sub isEnabled {
sub doInventory {
my (%params) = @_;
- my $logger = $params{logger};
my $inventory = $params{inventory};
foreach my $object (getWmiObjects(
diff --git a/lib/FusionInventory/Agent/XML/Query.pm b/lib/FusionInventory/Agent/XML/Query.pm
index 1c1e42d..0768f2e 100644
--- a/lib/FusionInventory/Agent/XML/Query.pm
+++ b/lib/FusionInventory/Agent/XML/Query.pm
@@ -21,7 +21,7 @@ sub new {
}
sub getContent {
- my ($self, $args) = @_;
+ my ($self) = @_;
my $tpp = XML::TreePP->new(indent => 2);
return $tpp->write({ REQUEST => $self->{h} });
================================================================
Commit: cb25bc667eb3648ae1ec6ad42d8265226c64c66a
https://github.com/fusinv/fusioninventory-agent/commit/cb25bc667eb3648ae1ec6ad42d8265226c64c66a
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M t/05var.t
Log Message:
-----------
ignore variable , often used as loop counter
diff --git a/t/05var.t b/t/05var.t
index 15bd4bf..6671b6e 100644
--- a/t/05var.t
+++ b/t/05var.t
@@ -23,5 +23,5 @@ if ($EVAL_ERROR) {
plan(skip_all => 'Test::Vars required to validate the code');
}
-Test::Vars::all_vars_ok();
+Test::Vars::all_vars_ok(ignore_vars => { '$i' => 1 });
================================================================
Commit: 796cef8bcfcd7bea2a8be50347ab9547bc4b57ce
https://github.com/fusinv/fusioninventory-agent/commit/796cef8bcfcd7bea2a8be50347ab9547bc4b57ce
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
Log Message:
-----------
minor cleanup
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index 58a1046..ef34674 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -27,7 +27,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
if (is64bit()) {
@@ -49,9 +48,9 @@ sub doInventory {
_addSoftware(inventory => $inventory, entry => $software);
}
_processMSIE(
- machKey => $machKey64,
+ machKey => $machKey64,
inventory => $inventory,
- is64bit => 1
+ is64bit => 1
);
my $machKey32 = $Registry->Open('LMachine', {
@@ -68,9 +67,9 @@ sub doInventory {
_addSoftware(inventory => $inventory, entry => $software);
}
_processMSIE(
- machKey => $machKey32,
+ machKey => $machKey32,
inventory => $inventory,
- is64bit => 0
+ is64bit => 0
);
@@ -89,9 +88,9 @@ sub doInventory {
_addSoftware(inventory => $inventory, entry => $software);
}
_processMSIE(
- machKey => $machKey,
+ machKey => $machKey,
inventory => $inventory,
- is64bit => 0
+ is64bit => 0
);
}
}
@@ -117,7 +116,6 @@ sub _getSoftwares {
my (%params) = @_;
my $softwares = $params{softwares};
- my $is64bit = $params{is64bit};
my @softwares;
@@ -144,7 +142,7 @@ sub _getSoftwares {
VERSION_MINOR => hex2dec($data->{'/MinorVersion'}),
VERSION_MAJOR => hex2dec($data->{'/MajorVersion'}),
NO_REMOVE => hex2dec($data->{'/NoRemove'}),
- IS64BIT => $is64bit,
+ IS64BIT => $params{is64bit},
GUID => $guid,
};
@@ -169,29 +167,24 @@ sub _addSoftware {
}
sub _processMSIE {
- my %params = @_;
-
- my $inventory = $params{inventory};
- my $is64bit = $params{is64bit} || 0;
- my $machKey = $params{machKey};
+ my (%params) = @_;
- my $name = "Internet Explorer";
- if ($is64bit) {
- $name .= " (64bit)";
- }
- my $version = $params{machKey}->{"SOFTWARE/Microsoft/Internet Explorer/Version"};
+ my $name = $params{is64bit} ?
+ "Internet Explorer (64bit)" : "Internet Explorer";
+ my $version =
+ $params{machKey}->{"SOFTWARE/Microsoft/Internet Explorer/Version"};
_addSoftware(
inventory => $params{inventory},
- entry => {
- FROM => "registry",
- IS64BIT => $is64bit,
- NAME => $name,
- VERSION => $version,
- PUBLISHER => "Microsoft Corporation"
- });
+ entry => {
+ FROM => "registry",
+ IS64BIT => $params{is64bit},
+ NAME => $name,
+ VERSION => $version,
+ PUBLISHER => "Microsoft Corporation"
+ }
+ );
}
-
1;
================================================================
Commit: 70f5fea101b57c1ed59c66eb02fb23e5b14518de
https://github.com/fusinv/fusioninventory-agent/commit/70f5fea101b57c1ed59c66eb02fb23e5b14518de
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS.pm
Log Message:
-----------
better comments
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS.pm
index 36d28a7..d95aa38 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS.pm
@@ -18,8 +18,8 @@ sub doInventory {
my ($OSName, $OSVersion);
- # if we can load the system profiler, gather the information from that
if (canLoad("Mac::SysProfile")) {
+ # use system profiler if available
my $prof = Mac::SysProfile->new();
my $info = $prof->gettype('SPSoftwareDataType');
return unless ref $info eq 'HASH';
@@ -36,8 +36,7 @@ sub doInventory {
}
} else {
- # we can't load the system profiler, use the basic BSD stype information
- # Operating system informations
+ # fallback on basic BSD type information otherwise
$OSName = getFirstLine(command => 'uname -s');
$OSVersion = getFirstLine(command => 'uname -r');
}
================================================================
Commit: ab344314d5e290e8b4b3aa89ae45c313a33ab2c1
https://github.com/fusinv/fusioninventory-agent/commit/ab344314d5e290e8b4b3aa89ae45c313a33ab2c1
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
Log Message:
-----------
cosmetics
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
index af65086..b0e74ad 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
@@ -34,12 +34,12 @@ sub _getDisplays {
my $videos = [];
foreach my $videoName (keys %{$infos->{'Graphics/Displays'}}) {
- my $videoCardInfo = $infos->{'Graphics/Displays'}{$videoName};
+ my $videoCardInfo = $infos->{'Graphics/Displays'}->{$videoName};
foreach my $displayName (keys %{$videoCardInfo->{Displays}}) {
next if $displayName eq 'Display Connector';
next if $displayName eq 'Display';
- my $displayInfo = $videoCardInfo->{Displays}{$displayName};
+ my $displayInfo = $videoCardInfo->{Displays}->{$displayName};
my $resolution = $displayInfo->{Resolution};
if ($resolution) {
================================================================
Commit: 7cab4be7dbb417a8054f0f05cd32e17d98dcc640
https://github.com/fusinv/fusioninventory-agent/commit/7cab4be7dbb417a8054f0f05cd32e17d98dcc640
Author: Guillaume Rousse <Guillaume.Rousse at inria.fr>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
A resources/macos/system_profiler/10.6-intel-SPFireWireDataType
A resources/macos/system_profiler/10.6-intel-SPParallelATADataType
A resources/macos/system_profiler/10.6-intel-SPSerialATADataType
A resources/macos/system_profiler/10.6-intel-SPUSBDataType
Log Message:
-----------
initial import
diff --git a/resources/macos/system_profiler/10.6-intel-SPFireWireDataType b/resources/macos/system_profiler/10.6-intel-SPFireWireDataType
new file mode 100644
index 0000000..4a6629d
--- /dev/null
+++ b/resources/macos/system_profiler/10.6-intel-SPFireWireDataType
@@ -0,0 +1,6 @@
+FireWire:
+
+ FireWire Bus:
+
+ Maximum Speed: Up to 400 Mb/sec
+
diff --git a/resources/macos/system_profiler/10.6-intel-SPParallelATADataType b/resources/macos/system_profiler/10.6-intel-SPParallelATADataType
new file mode 100644
index 0000000..0999d1c
--- /dev/null
+++ b/resources/macos/system_profiler/10.6-intel-SPParallelATADataType
@@ -0,0 +1,38 @@
+ATA:
+
+ ATA Bus:
+
+ HL-DT-ST DVDRW GSA-S10N:
+
+ Capacity: 7,77 GB (7 771 521 024 bytes)
+ Model: HL-DT-ST DVDRW GSA-S10N
+ Revision: BP08
+ Serial Number: K0076RM5813
+ Removable Media: Yes
+ Detachable Drive: No
+ BSD Name: disk1
+ Protocol: ATAPI
+ Unit Number: 0
+ Socket Type: Internal
+ Low Power Polling: Yes
+ Power Off: Yes
+ Partition Map Type: APM (Apple Partition Map)
+ S.M.A.R.T. status: Not Supported
+ Volumes:
+ Capacity: 31 KB (30 720 bytes)
+ Media Type: DVD-ROM
+ Writable: No
+ BSD Name: disk1s1
+ Capacity: 1,03 GB (1 034 455 040 bytes)
+ Media Type: DVD-ROM
+ Writable: No
+ BSD Name: disk1s2
+ Mac OS X Install DVD:
+ Capacity: 6,74 GB (6 737 006 592 bytes)
+ Available: 84,9 MB (84 946 944 bytes)
+ Media Type: DVD-ROM
+ Writable: No
+ File System: HFS+
+ BSD Name: disk1s3
+ Mount Point: /Volumes/Mac OS X Install DVD
+
diff --git a/resources/macos/system_profiler/10.6-intel-SPSerialATADataType b/resources/macos/system_profiler/10.6-intel-SPSerialATADataType
new file mode 100644
index 0000000..f8b58bf
--- /dev/null
+++ b/resources/macos/system_profiler/10.6-intel-SPSerialATADataType
@@ -0,0 +1,36 @@
+Serial-ATA:
+
+ Intel ICH7-M AHCI:
+
+ Vendor: Intel
+ Product: ICH7-M AHCI
+ Link Speed: 1.5 Gigabit
+ Negotiated Link Speed: 1.5 Gigabit
+ Description: AHCI Version 1.10 Supported
+
+ FUJITSU MHY2120BH:
+
+ Capacity: 120,03 GB (120 034 123 776 bytes)
+ Model: FUJITSU MHY2120BH
+ Revision: 0081000D
+ Serial Number: K439T822NS6V
+ Native Command Queuing: Yes
+ Queue Depth: 32
+ Removable Media: No
+ Detachable Drive: No
+ BSD Name: disk0
+ Medium Type: Rotational
+ Partition Map Type: GPT (GUID Partition Table)
+ S.M.A.R.T. status: Verified
+ Volumes:
+ Capacity: 209,7 MB (209 715 200 bytes)
+ Writable: Yes
+ BSD Name: disk0s1
+ Macintosh HD:
+ Capacity: 119,69 GB (119 690 149 888 bytes)
+ Available: 94,9 GB (94 897 831 936 bytes)
+ Writable: Yes
+ File System: Journaled HFS+
+ BSD Name: disk0s2
+ Mount Point: /
+
diff --git a/resources/macos/system_profiler/10.6-intel-SPUSBDataType b/resources/macos/system_profiler/10.6-intel-SPUSBDataType
new file mode 100644
index 0000000..41e21a7
--- /dev/null
+++ b/resources/macos/system_profiler/10.6-intel-SPUSBDataType
@@ -0,0 +1,91 @@
+USB:
+
+ USB High-Speed Bus:
+
+ Host Controller Location: Built-in USB
+ Host Controller Driver: AppleUSBEHCI
+ PCI Device ID: 0x27cc
+ PCI Revision ID: 0x0002
+ PCI Vendor ID: 0x8086
+ Bus Number: 0xfd
+
+ Built-in iSight:
+
+ Product ID: 0x8501
+ Vendor ID: 0x05ac (Apple Inc.)
+ Version: 1.89
+ Speed: Up to 480 Mb/sec
+ Manufacturer: Micron
+ Location ID: 0xfd400000 / 2
+ Current Available (mA): 500
+ Current Required (mA): 100
+
+ USB Bus:
+
+ Host Controller Location: Built-in USB
+ Host Controller Driver: AppleUSBUHCI
+ PCI Device ID: 0x27cb
+ PCI Revision ID: 0x0002
+ PCI Vendor ID: 0x8086
+ Bus Number: 0x7d
+
+ Bluetooth USB Host Controller:
+
+ Product ID: 0x8205
+ Vendor ID: 0x05ac (Apple Inc.)
+ Version: 19.65
+ Speed: Up to 12 Mb/sec
+ Manufacturer: Apple Inc.
+ Location ID: 0x7d100000 / 2
+ Current Available (mA): 500
+ Current Required (mA): 0
+
+ USB Bus:
+
+ Host Controller Location: Built-in USB
+ Host Controller Driver: AppleUSBUHCI
+ PCI Device ID: 0x27c9
+ PCI Revision ID: 0x0002
+ PCI Vendor ID: 0x8086
+ Bus Number: 0x3d
+
+ USB Bus:
+
+ Host Controller Location: Built-in USB
+ Host Controller Driver: AppleUSBUHCI
+ PCI Device ID: 0x27c8
+ PCI Revision ID: 0x0002
+ PCI Vendor ID: 0x8086
+ Bus Number: 0x1d
+
+ Apple Internal Keyboard / Trackpad:
+
+ Product ID: 0x021b
+ Vendor ID: 0x05ac (Apple Inc.)
+ Version: 0.18
+ Speed: Up to 12 Mb/sec
+ Manufacturer: Apple Computer
+ Location ID: 0x1d200000 / 2
+ Current Available (mA): 500
+ Current Required (mA): 40
+
+ USB Bus:
+
+ Host Controller Location: Built-in USB
+ Host Controller Driver: AppleUSBUHCI
+ PCI Device ID: 0x27ca
+ PCI Revision ID: 0x0002
+ PCI Vendor ID: 0x8086
+ Bus Number: 0x5d
+
+ IR Receiver:
+
+ Product ID: 0x8240
+ Vendor ID: 0x05ac (Apple Inc.)
+ Version: 1.10
+ Speed: Up to 12 Mb/sec
+ Manufacturer: Apple Computer, Inc.
+ Location ID: 0x5d200000 / 2
+ Current Available (mA): 500
+ Current Required (mA): 100
+
================================================================
Commit: 2fba292fa60e9c8dff98e5d5d80d7810521d533e
https://github.com/fusinv/fusioninventory-agent/commit/2fba292fa60e9c8dff98e5d5d80d7810521d533e
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
R t/inventory/macos/video.t
A t/inventory/macos/videos.t
Log Message:
-----------
rename for consistency with tested code
diff --git a/t/inventory/macos/video.t b/t/inventory/macos/video.t
deleted file mode 100755
index 3f5d3f7..0000000
--- a/t/inventory/macos/video.t
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-use Test::More;
-
-use FusionInventory::Agent::Task::Inventory::Input::MacOS::Videos;
-
-my %tests = (
- '10.4-powerpc' => {
- MONITORS => [
- {
- DESCRIPTION => 'ASUS VH222',
- CAPTION => 'ASUS VH222'
- }
- ],
- VIDEOS => [
- {
- NAME => 'NVIDIA GeForce 6600',
- RESOLUTION => '1360x768',
- CHIPSET => 'GeForce 6600',
- MEMORY => '256',
- PCISLOT => 'SLOT-1'
- }
- ]
- },
- '10.5-powerpc' =>
- {
- MONITORS => [
- {
- DESCRIPTION => 'ASUS VH222',
- CAPTION => 'ASUS VH222'
- }
- ],
- VIDEOS => [
- {
- NAME => 'NVIDIA GeForce 6600',
- RESOLUTION => '1680x1050',
- CHIPSET => 'GeForce 6600',
- MEMORY => '256',
- PCISLOT => 'SLOT-1'
- }
- ]
- },
- '10.6-intel' => {
- MONITORS => [
- {
- DESCRIPTION => 'iMac',
- CAPTION => 'iMac'
- }
- ],
- VIDEOS => [
- {
- NAME => 'ATI Radeon HD 2600 Pro',
- RESOLUTION => '1920x1200',
- CHIPSET => 'ATI,RadeonHD2600',
- MEMORY => '256',
- PCISLOT => undef
- }
- ]
- },
- '10.6.6-intel' => {
- MONITORS => [
- {
- DESCRIPTION => 'Color LCD',
- CAPTION => 'Color LCD'
- }
- ],
- VIDEOS => [
- {
- NAME => 'Intel GMA 950',
- RESOLUTION => '1280x800',
- CHIPSET => 'GMA 950',
- MEMORY => '64',
- PCISLOT => undef
- }
- ]
- }
-);
-
-plan tests => scalar keys %tests;
-
-foreach my $test (keys %tests) {
- my $file = "resources/macos/system_profiler/$test";
- my %displays = FusionInventory::Agent::Task::Inventory::Input::MacOS::Videos::_getDisplays(file => $file);
- is_deeply(\%displays, $tests{$test}, $test);
-}
diff --git a/t/inventory/macos/videos.t b/t/inventory/macos/videos.t
new file mode 100755
index 0000000..3f5d3f7
--- /dev/null
+++ b/t/inventory/macos/videos.t
@@ -0,0 +1,88 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use FusionInventory::Agent::Task::Inventory::Input::MacOS::Videos;
+
+my %tests = (
+ '10.4-powerpc' => {
+ MONITORS => [
+ {
+ DESCRIPTION => 'ASUS VH222',
+ CAPTION => 'ASUS VH222'
+ }
+ ],
+ VIDEOS => [
+ {
+ NAME => 'NVIDIA GeForce 6600',
+ RESOLUTION => '1360x768',
+ CHIPSET => 'GeForce 6600',
+ MEMORY => '256',
+ PCISLOT => 'SLOT-1'
+ }
+ ]
+ },
+ '10.5-powerpc' =>
+ {
+ MONITORS => [
+ {
+ DESCRIPTION => 'ASUS VH222',
+ CAPTION => 'ASUS VH222'
+ }
+ ],
+ VIDEOS => [
+ {
+ NAME => 'NVIDIA GeForce 6600',
+ RESOLUTION => '1680x1050',
+ CHIPSET => 'GeForce 6600',
+ MEMORY => '256',
+ PCISLOT => 'SLOT-1'
+ }
+ ]
+ },
+ '10.6-intel' => {
+ MONITORS => [
+ {
+ DESCRIPTION => 'iMac',
+ CAPTION => 'iMac'
+ }
+ ],
+ VIDEOS => [
+ {
+ NAME => 'ATI Radeon HD 2600 Pro',
+ RESOLUTION => '1920x1200',
+ CHIPSET => 'ATI,RadeonHD2600',
+ MEMORY => '256',
+ PCISLOT => undef
+ }
+ ]
+ },
+ '10.6.6-intel' => {
+ MONITORS => [
+ {
+ DESCRIPTION => 'Color LCD',
+ CAPTION => 'Color LCD'
+ }
+ ],
+ VIDEOS => [
+ {
+ NAME => 'Intel GMA 950',
+ RESOLUTION => '1280x800',
+ CHIPSET => 'GMA 950',
+ MEMORY => '64',
+ PCISLOT => undef
+ }
+ ]
+ }
+);
+
+plan tests => scalar keys %tests;
+
+foreach my $test (keys %tests) {
+ my $file = "resources/macos/system_profiler/$test";
+ my %displays = FusionInventory::Agent::Task::Inventory::Input::MacOS::Videos::_getDisplays(file => $file);
+ is_deeply(\%displays, $tests{$test}, $test);
+}
================================================================
Commit: 132d67bc9782851d66e0895b6b9bb207df63672d
https://github.com/fusinv/fusioninventory-agent/commit/132d67bc9782851d66e0895b6b9bb207df63672d
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/MacOS.pm
Log Message:
-----------
fix parsing
- check if value is defined, not just true
- check current indentation against current node before adding value
diff --git a/lib/FusionInventory/Agent/Tools/MacOS.pm b/lib/FusionInventory/Agent/Tools/MacOS.pm
index 321f906..5c41d76 100644
--- a/lib/FusionInventory/Agent/Tools/MacOS.pm
+++ b/lib/FusionInventory/Agent/Tools/MacOS.pm
@@ -32,14 +32,32 @@ sub getSystemProfilerInfos {
my $level = defined $1 ? length($1) : 0;
my $key = $2;
my $value = $3;
+
+ my $parent = $parents[-1];
+ my $parent_level = $parent->[1];
+ my $parent_node = $parent->[0];
+
+ if (defined $value) {
+ # check indentation level against parent node
+ if ($level <= $parent_level) {
+
+ if (keys %$parent_node == 0) {
+ # discard just created node, and fix its parent
+ my $parent_key = $parent->[2];
+ $parents[-2]->[0]->{$parent_key} = undef;
+ }
- if ($value) {
- # just add the value to the current parent
- $parents[-1]->[0]->{$key} = $value;
+ # unstack nodes until a suitable parent is found
+ while ($level <= $parents[-1]->[1]) {
+ pop @parents;
+ }
+ $parent_node = $parents[-1]->[0];
+ }
+
+ # add the value to the current node
+ $parent_node->{$key} = $value;
} else {
# compare level with parent
- my $parent_level = $parents[-1]->[1];
-
if ($level > $parent_level) {
# down the tree: no change
} elsif ($level < $parent_level) {
@@ -55,7 +73,7 @@ sub getSystemProfilerInfos {
# create a new node, and push it to the stack
my $parent_node = $parents[-1]->[0];
$parent_node->{$key} = {};
- push (@parents, [ $parent_node->{$key}, $level ]);
+ push (@parents, [ $parent_node->{$key}, $level, $key ]);
}
}
close $handle;
================================================================
Commit: e6275a5b881aa08f3168e17c75baa5b8382cd035
https://github.com/fusinv/fusioninventory-agent/commit/e6275a5b881aa08f3168e17c75baa5b8382cd035
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M t/tools/macos.t
Log Message:
-----------
fix expected results
diff --git a/t/tools/macos.t b/t/tools/macos.t
index 01df645..34aefd5 100755
--- a/t/tools/macos.t
+++ b/t/tools/macos.t
@@ -18,9 +18,8 @@ my %system_profiler_tests = (
'BSD Device Name' => 'en1',
'Ethernet' => {
'MAC Address' => '00:14:51:61:ef:09',
- 'Media Options' => {
- 'Media Subtype' => 'autoselect'
- }
+ 'Media Options' => undef,
+ 'Media Subtype' => 'autoselect'
},
'Hardware' => 'Ethernet',
'Type' => 'Ethernet',
@@ -29,10 +28,9 @@ my %system_profiler_tests = (
},
'Proxies' => {
'Proxy Configuration Method' => 'Manual',
- 'ExcludeSimpleHostnames' => {
- 'Auto Discovery Enabled' => 'No',
- 'FTP Passive Mode' => 'Yes'
- }
+ 'ExcludeSimpleHostnames' => 0,
+ 'Auto Discovery Enabled' => 'No',
+ 'FTP Passive Mode' => 'Yes'
}
},
'Modem interne' => {
@@ -48,10 +46,9 @@ my %system_profiler_tests = (
'Hardware' => 'Modem',
'Proxies' => {
'Proxy Configuration Method' => 'Manual',
- 'ExcludeSimpleHostnames' => {
- 'Auto Discovery Enabled' => 'No',
- 'FTP Passive Mode' => 'Yes'
- }
+ 'ExcludeSimpleHostnames' => 0,
+ 'Auto Discovery Enabled' => 'No',
+ 'FTP Passive Mode' => 'Yes'
}
},
'Ethernet intégré' => {
@@ -74,12 +71,11 @@ my %system_profiler_tests = (
'IPv4 Addresses' => '10.0.1.110',
'DHCP Server Responses' => {
'Domain Name' => 'lan',
- 'Lease Duration (seconds)' => {
- 'Routers' => '10.0.1.1',
- 'Subnet Mask' => '255.255.255.0',
- 'Server Identifier' => '10.0.1.1',
- 'DHCP Message Type' => '0x05'
- },
+ 'Lease Duration (seconds)' => 0,
+ 'Routers' => '10.0.1.1',
+ 'Subnet Mask' => '255.255.255.0',
+ 'Server Identifier' => '10.0.1.1',
+ 'DHCP Message Type' => '0x05',
'Domain Name Servers' => '10.0.1.1'
},
'IPv4' => {
@@ -112,10 +108,9 @@ my %system_profiler_tests = (
'Hardware' => 'Modem',
'Proxies' => {
'Proxy Configuration Method' => 'Manual',
- 'ExcludeSimpleHostnames' => {
- 'Auto Discovery Enabled' => 'No',
- 'FTP Passive Mode' => 'Yes'
- }
+ 'ExcludeSimpleHostnames' => 0,
+ 'Auto Discovery Enabled' => 'No',
+ 'FTP Passive Mode' => 'Yes'
}
},
'FireWire intégré' => {
@@ -136,10 +131,9 @@ my %system_profiler_tests = (
},
'Proxies' => {
'Proxy Configuration Method' => 'Manual',
- 'ExcludeSimpleHostnames' => {
- 'Auto Discovery Enabled' => 'No',
- 'FTP Passive Mode' => 'Yes'
- }
+ 'ExcludeSimpleHostnames' => 0,
+ 'Auto Discovery Enabled' => 'No',
+ 'FTP Passive Mode' => 'Yes'
}
}
},
@@ -159,11 +153,10 @@ my %system_profiler_tests = (
'Configuration Method' => 'DHCP'
},
'Proxies' => {
- 'Auto Discovery Enabled' => {},
+ 'Auto Discovery Enabled' => 0,
'Proxy Configuration Method' => '2',
- 'ExcludeSimpleHostnames' => {
- 'FTP Passive Mode' => '1'
- }
+ 'ExcludeSimpleHostnames' => 0,
+ 'FTP Passive Mode' => '1'
},
'Hardware (MAC) Address' => '00:14:51:61:ef:09'
},
@@ -176,36 +169,32 @@ my %system_profiler_tests = (
'Configuration Method' => 'PPP'
},
'Proxies' => {
- 'Auto Discovery Enabled' => {},
+ 'Auto Discovery Enabled' => 0,
'Proxy Configuration Method' => '2',
- 'ExcludeSimpleHostnames' => {
- 'FTP Passive Mode' => '1'
- }
+ 'ExcludeSimpleHostnames' => 0,
+ 'FTP Passive Mode' => '1'
},
'PPP' => {
- 'ACSP Enabled' => {},
- 'Idle Reminder' => {
- 'IPCP Compression VJ' => '1',
- 'LCP Echo Interval' => '10',
- 'LCP Echo Enabled' => '1',
- 'Log File' => '/var/log/ppp.log',
- 'Idle Reminder Time' => '1800',
- 'LCP Echo Failure' => '4'
- },
- 'Verbose Logging' => {},
- 'Dial On Demand' => {
- 'Disconnect On Logout' => '1',
- 'Disconnect On Idle Timer' => '600',
- 'Disconnect On Idle' => '1',
- 'Disconnect On Fast User Switch' => '1',
- 'Disconnect On Sleep' => '1'
- },
- 'Display Terminal Window' => {
- 'Redial Enabled' => '1',
- 'Redial Count' => '1',
- 'Redial Interval' => '5'
- },
- 'Use Terminal Script' => {}
+ 'ACSP Enabled' => 0,
+ 'Idle Reminder' => 0,
+ 'IPCP Compression VJ' => '1',
+ 'LCP Echo Interval' => '10',
+ 'LCP Echo Enabled' => '1',
+ 'Log File' => '/var/log/ppp.log',
+ 'Idle Reminder Time' => '1800',
+ 'LCP Echo Failure' => '4',
+ 'Verbose Logging' => 0,
+ 'Dial On Demand' => 0,
+ 'Disconnect On Logout' => '1',
+ 'Disconnect On Idle Timer' => '600',
+ 'Disconnect On Idle' => '1',
+ 'Disconnect On Fast User Switch' => '1',
+ 'Disconnect On Sleep' => '1',
+ 'Display Terminal Window' => 0,
+ 'Redial Enabled' => '1',
+ 'Redial Count' => '1',
+ 'Redial Interval' => '5',
+ 'Use Terminal Script' => 0,
}
},
'Ethernet intégré' => {
@@ -221,14 +210,13 @@ my %system_profiler_tests = (
'Configuration Method' => 'DHCP'
},
'Proxies' => {
- 'SOCKS Proxy Enabled' => {},
- 'HTTPS Proxy Enabled' => {},
- 'FTP Proxy Enabled' => {
- 'FTP Passive Mode' => '1'
- },
- 'Gopher Proxy Enabled' => {},
- 'HTTP Proxy Enabled' => {},
- 'RTSP Proxy Enabled' => {}
+ 'SOCKS Proxy Enabled' => 0,
+ 'HTTPS Proxy Enabled' => 0,
+ 'FTP Proxy Enabled' => 0,
+ 'FTP Passive Mode' => '1',
+ 'Gopher Proxy Enabled' => 0,
+ 'HTTP Proxy Enabled' => 0,
+ 'RTSP Proxy Enabled' => 0,
},
'Hardware (MAC) Address' => '00:14:51:61:ef:08'
},
@@ -241,37 +229,32 @@ my %system_profiler_tests = (
'Configuration Method' => 'PPP'
},
'Proxies' => {
- 'Auto Discovery Enabled' => {},
+ 'Auto Discovery Enabled' => 0,
'Proxy Configuration Method' => '2',
- 'ExcludeSimpleHostnames' => {
- 'FTP Passive Mode' => '1'
- }
+ 'ExcludeSimpleHostnames' => 0,
+ 'FTP Passive Mode' => '1'
},
'PPP' => {
- 'ACSP Enabled' => {},
- 'Idle Reminder' => {
- 'IPCP Compression VJ' => '1',
- 'Idle Reminder Time' => '1800'
- },
- 'Verbose Logging' => {},
- 'LCP Echo Enabled' => {
+ 'ACSP Enabled' => 0,
+ 'Idle Reminder' => 0,
+ 'IPCP Compression VJ' => '1',
+ 'Idle Reminder Time' => '1800',
+ 'Verbose Logging' => 0,
+ 'LCP Echo Enabled' => 0,
'LCP Echo Interval' => '10',
'Log File' => '/var/log/ppp.log',
- 'LCP Echo Failure' => '4'
- },
- 'Dial On Demand' => {
+ 'LCP Echo Failure' => '4',
+ 'Dial On Demand' => 0,
'Disconnect On Logout' => '1',
'Disconnect On Idle Timer' => '600',
'Disconnect On Idle' => '1',
'Disconnect On Fast User Switch' => '1',
- 'Disconnect On Sleep' => '1'
- },
- 'Display Terminal Window' => {
- 'Redial Enabled' => '1',
- 'Redial Count' => '1',
- 'Redial Interval' => '5'
- },
- 'Use Terminal Script' => {}
+ 'Disconnect On Sleep' => '1',
+ 'Display Terminal Window' => 0,
+ 'Redial Enabled' => '1',
+ 'Redial Count' => '1',
+ 'Redial Interval' => '5',
+ 'Use Terminal Script' => 0,
}
},
'FireWire intégré' => {
@@ -287,11 +270,10 @@ my %system_profiler_tests = (
'Configuration Method' => 'DHCP'
},
'Proxies' => {
- 'Auto Discovery Enabled' => {},
+ 'Auto Discovery Enabled' => 0,
'Proxy Configuration Method' => '2',
- 'ExcludeSimpleHostnames' => {
- 'FTP Passive Mode' => '1'
- }
+ 'ExcludeSimpleHostnames' => 0,
+ 'FTP Passive Mode' => '1'
},
'Hardware (MAC) Address' => '00:14:51:ff:fe:1a:c8:e2'
}
@@ -344,12 +326,11 @@ my %system_profiler_tests = (
'Removable Media' => 'No',
'BSD Name' => 'disk0',
'Protocol' => 'ata',
- 'Unit Number' => {
- 'OS9 Drivers' => 'No',
- 'Socket Type' => 'Serial-ATA',
- 'S.M.A.R.T. status' => 'Verified',
- 'Bay Name' => '"A (upper)"'
- }
+ 'Unit Number' => 0,
+ 'OS9 Drivers' => 'No',
+ 'Socket Type' => 'Serial-ATA',
+ 'S.M.A.R.T. status' => 'Verified',
+ 'Bay Name' => '"A (upper)"'
}
}
},
@@ -402,9 +383,8 @@ my %system_profiler_tests = (
'Detachable Drive' => 'No',
'Serial Number' => 'B6FD7234EC63',
'Protocol' => 'ATAPI',
- 'Unit Number' => {
- 'Socket Type' => 'Internal'
- },
+ 'Unit Number' => 0,
+ 'Socket Type' => 'Internal',
'Model' => 'HL-DT-ST DVD-RW GWA-4165B'
}
}
@@ -563,17 +543,16 @@ my %system_profiler_tests = (
'Power' => {
'System Power Settings' => {
'AC Power' => {
- 'System Sleep Timer (Minutes)' => {
- 'Reduce Processor Speed' => 'No',
- 'Dynamic Power Step' => 'Yes',
- 'Display Sleep Timer (Minutes)' => '10',
- 'Disk Sleep Timer (Minutes)' => '10',
- 'Automatic Restart On Power Loss' => 'No',
- 'Sleep On Power Button' => 'Yes',
- 'Wake On AC Change' => 'No',
- 'Wake On Modem Ring' => 'Yes',
- 'Wake On LAN' => 'Yes'
- }
+ 'System Sleep Timer (Minutes)' => 0,
+ 'Reduce Processor Speed' => 'No',
+ 'Dynamic Power Step' => 'Yes',
+ 'Display Sleep Timer (Minutes)' => '10',
+ 'Disk Sleep Timer (Minutes)' => '10',
+ 'Automatic Restart On Power Loss' => 'No',
+ 'Sleep On Power Button' => 'Yes',
+ 'Wake On AC Change' => 'No',
+ 'Wake On Modem Ring' => 'Yes',
+ 'Wake On LAN' => 'Yes'
}
}
}
@@ -790,11 +769,10 @@ my %system_profiler_tests = (
'Detachable Drive' => 'No',
'Serial Number' => 'B6FD7234EC63',
'Protocol' => 'ATAPI',
- 'Unit Number' => {
- 'Low Power Polling' => 'No',
- 'Socket Type' => 'Internal',
- 'Power Off' => 'No'
- },
+ 'Unit Number' => 0,
+ 'Low Power Polling' => 'No',
+ 'Socket Type' => 'Internal',
+ 'Power Off' => 'No',
'Model' => 'HL-DT-ST DVD-RW GWA-4165B'
}
}
@@ -856,18 +834,17 @@ my %system_profiler_tests = (
},
'System Power Settings' => {
'AC Power' => {
- 'System Sleep Timer (Minutes)' => {
- 'Reduce Processor Speed' => 'No',
- 'Dynamic Power Step' => 'Yes',
- 'Display Sleep Timer (Minutes)' => '3',
- 'Disk Sleep Timer (Minutes)' => '10',
- 'Automatic Restart On Power Loss' => 'No',
- 'Sleep On Power Button' => 'Yes',
- 'Wake On AC Change' => 'No',
- 'Wake On Clamshell Open' => 'Yes',
- 'Wake On Modem Ring' => 'Yes',
- 'Wake On LAN' => 'Yes'
- }
+ 'System Sleep Timer (Minutes)' => 0,
+ 'Reduce Processor Speed' => 'No',
+ 'Dynamic Power Step' => 'Yes',
+ 'Display Sleep Timer (Minutes)' => '3',
+ 'Disk Sleep Timer (Minutes)' => '10',
+ 'Automatic Restart On Power Loss' => 'No',
+ 'Sleep On Power Button' => 'Yes',
+ 'Wake On AC Change' => 'No',
+ 'Wake On Clamshell Open' => 'Yes',
+ 'Wake On Modem Ring' => 'Yes',
+ 'Wake On LAN' => 'Yes'
}
}
},
@@ -942,12 +919,11 @@ my %system_profiler_tests = (
},
'DHCP Server Responses' => {
'Domain Name' => 'lan',
- 'Lease Duration (seconds)' => {
- 'Routers' => '10.0.1.1',
- 'Subnet Mask' => '255.255.255.0',
- 'Server Identifier' => '10.0.1.1',
- 'DHCP Message Type' => '0x05'
- },
+ 'Lease Duration (seconds)' => 0,
+ 'Routers' => '10.0.1.1',
+ 'Subnet Mask' => '255.255.255.0',
+ 'Server Identifier' => '10.0.1.1',
+ 'DHCP Message Type' => '0x05',
'Domain Name Servers' => '10.0.1.1'
},
'Type' => 'Ethernet',
@@ -988,9 +964,8 @@ my %system_profiler_tests = (
'BSD Device Name' => 'en1',
'Ethernet' => {
'MAC Address' => '00:14:51:61:ef:09',
- 'Media Options' => {
- 'Media Subtype' => 'Auto Select'
- }
+ 'Media Options' => undef,
+ 'Media Subtype' => 'Auto Select'
},
'Hardware' => 'AirPort',
'Type' => 'AirPort',
@@ -1049,13 +1024,12 @@ my %system_profiler_tests = (
'Removable Media' => 'No',
'BSD Name' => 'disk0',
'Protocol' => 'ata',
- 'Unit Number' => {
- 'Mac OS 9 Drivers' => 'No',
- 'Socket Type' => 'Serial-ATA',
- 'S.M.A.R.T. status' => 'Verified',
- 'Partition Map Type' => 'APM (Apple Partition Map)',
- 'Bay Name' => '"B (lower)"'
- }
+ 'Unit Number' => 0,
+ 'Mac OS 9 Drivers' => 'No',
+ 'Socket Type' => 'Serial-ATA',
+ 'S.M.A.R.T. status' => 'Verified',
+ 'Partition Map Type' => 'APM (Apple Partition Map)',
+ 'Bay Name' => '"B (lower)"'
}
}
},
@@ -1361,14 +1335,14 @@ my %system_profiler_tests = (
'IEEE80211' => {
'Join Mode' => 'Automatic',
'Disconnect on Logout' => 'No',
- 'PowerEnabled' => {},
+ 'PowerEnabled' => 0,
'PreferredNetworks' => {
'Unique Network ID' => '905AE8BA-BD26-48F3-9486-AE5BC72FE642',
- 'RememberRecentNetworks' => '1',
'SecurityType' => 'WPA2 Personal',
'Unique Password ID' => '907EDC44-8C27-44A0-B5F5-2D04E1A5942A',
'SSID_STR' => 'freewa'
},
+ 'RememberRecentNetworks' => '1',
'JoinModeFallback' => 'Prompt'
}
}
@@ -1386,7 +1360,7 @@ my %system_profiler_tests = (
'Current Available (mA)' => '500',
'Speed' => 'Up to 12 Mb/sec',
'Product ID' => '0x8206',
- 'Current Required (mA)' => {},
+ 'Current Required (mA)' => 0,
'Manufacturer' => 'Apple Inc.',
'Vendor ID' => '0x05ac (Apple Inc.)'
},
@@ -1469,11 +1443,10 @@ my %system_profiler_tests = (
'Detachable Drive' => 'No',
'Serial Number' => ' fG424F9E',
'Protocol' => 'ATAPI',
- 'Unit Number' => {
- 'Low Power Polling' => 'Yes',
- 'Socket Type' => 'Internal',
- 'Power Off' => 'No'
- },
+ 'Unit Number' => 0,
+ 'Low Power Polling' => 'Yes',
+ 'Socket Type' => 'Internal',
+ 'Power Off' => 'No',
'Model' => 'MATSHITADVD-R UJ-875'
}
}
@@ -1530,12 +1503,10 @@ my %system_profiler_tests = (
'Apple Bluetooth Software Version' => '2.3.3f8',
'Outgoing Serial Ports' => {
'Serial Port 1' => {
- 'Address' => {
- 'Name' => 'Bluetooth-Modem'
- },
- 'RFCOMM Channel' => {
- 'Requires Authentication' => 'No'
- }
+ 'Address' => undef,
+ 'Name' => 'Bluetooth-Modem',
+ 'RFCOMM Channel' => 0,
+ 'Requires Authentication' => 'No'
}
},
'Services' => {
@@ -1624,9 +1595,8 @@ my %system_profiler_tests = (
'BSD Device Name' => 'en3',
'Ethernet' => {
'MAC Address' => '00:1c:42:00:00:09',
- 'Media Options' => {
- 'Media Subtype' => 'Auto Select'
- }
+ 'Media Options' => undef,
+ 'Media Subtype' => 'Auto Select'
},
'Hardware' => 'Ethernet',
'Type' => 'Ethernet',
@@ -1638,13 +1608,12 @@ my %system_profiler_tests = (
'Addresses' => '192.168.1.16'
},
'Proxies' => {
- 'Exclude Simple Hostnames' => {
- 'Auto Discovery Enabled' => 'No',
- 'FTP Passive Mode' => 'Yes',
- 'Service Order' => '9'
- },
+ 'Exclude Simple Hostnames' => 0,
+ 'Auto Discovery Enabled' => 'No',
+ 'FTP Passive Mode' => 'Yes',
'Proxy Configuration Method' => 'Manual'
- }
+ },
+ 'Service Order' => '9',
},
'Parallels Shared Networking Adapter' => {
'Has IP Assigned' => 'Yes',
@@ -1654,9 +1623,8 @@ my %system_profiler_tests = (
'BSD Device Name' => 'en2',
'Ethernet' => {
'MAC Address' => '00:1c:42:00:00:08',
- 'Media Options' => {
- 'Media Subtype' => 'Auto Select'
- }
+ 'Media Options' => undef,
+ 'Media Subtype' => 'Auto Select'
},
'Hardware' => 'Ethernet',
'Type' => 'Ethernet',
@@ -1668,13 +1636,12 @@ my %system_profiler_tests = (
'Addresses' => '192.168.0.11'
},
'Proxies' => {
- 'Exclude Simple Hostnames' => {
- 'Auto Discovery Enabled' => 'No',
- 'FTP Passive Mode' => 'Yes',
- 'Service Order' => '8'
- },
+ 'Exclude Simple Hostnames' => 0,
+ 'Auto Discovery Enabled' => 'No',
+ 'FTP Passive Mode' => 'Yes',
'Proxy Configuration Method' => 'Manual'
- }
+ },
+ 'Service Order' => '8',
},
'FireWire' => {
'Has IP Assigned' => 'No',
@@ -1694,9 +1661,9 @@ my %system_profiler_tests = (
'Hardware' => 'FireWire',
'Proxies' => {
'FTP Passive Mode' => 'Yes',
- 'Service Order' => '2',
'Exceptions List' => '*.local, 169.254/16'
- }
+ },
+ 'Service Order' => '2',
},
'Ethernet' => {
'Has IP Assigned' => 'Yes',
@@ -1718,12 +1685,11 @@ my %system_profiler_tests = (
'IPv4 Addresses' => '10.0.1.101',
'DHCP Server Responses' => {
'Domain Name' => 'lan',
- 'Lease Duration (seconds)' => {
- 'Routers' => '10.0.1.1',
- 'Subnet Mask' => '255.255.255.0',
- 'Server Identifier' => '10.0.1.1',
- 'DHCP Message Type' => '0x05'
- },
+ 'Lease Duration (seconds)' => 0,
+ 'Routers' => '10.0.1.1',
+ 'Subnet Mask' => '255.255.255.0',
+ 'Server Identifier' => '10.0.1.1',
+ 'DHCP Message Type' => '0x05',
'Domain Name Servers' => '10.0.1.1'
},
'IPv4' => {
@@ -1736,9 +1702,9 @@ my %system_profiler_tests = (
},
'Proxies' => {
'FTP Passive Mode' => 'Yes',
- 'Service Order' => '1',
'Exceptions List' => '*.local, 169.254/16'
- }
+ },
+ 'Service Order' => '1',
},
'Bluetooth' => {
'Has IP Assigned' => 'No',
@@ -1754,7 +1720,7 @@ my %system_profiler_tests = (
'Proxies' => {
'FTP Passive Mode' => 'Yes'
},
- 'Service Order' => {}
+ 'Service Order' => 0,
},
'AirPort' => {
'Has IP Assigned' => 'No',
@@ -1765,9 +1731,8 @@ my %system_profiler_tests = (
'BSD Device Name' => 'en1',
'Ethernet' => {
'MAC Address' => '00:1e:c2:a7:26:6f',
- 'Media Options' => {
- 'Media Subtype' => 'Auto Select'
- }
+ 'Media Options' => undef,
+ 'Media Subtype' => 'Auto Select'
},
'IPv4' => {
'Configuration Method' => 'DHCP'
@@ -1778,9 +1743,9 @@ my %system_profiler_tests = (
'HTTP Proxy Port' => '80',
'FTP Passive Mode' => 'Yes',
'HTTP Proxy Enabled' => 'No',
- 'Service Order' => '3',
'Exceptions List' => '*.local, 169.254/16'
- }
+ },
+ 'Service Order' => '3',
}
},
'Ethernet Cards' => {
@@ -1886,16 +1851,16 @@ my %system_profiler_tests = (
},
'Applications' => {
'org.sip-communicator' => 'Allow all connections',
- 'Firewall Logging' => 'No',
'com.skype.skype' => 'Allow all connections',
'com.Growl.GrowlHelperApp' => 'Allow all connections',
'com.hp.scan.app' => 'Allow all connections',
'com.parallels.desktop.dispatcher' => 'Allow all connections',
- 'Stealth Mode' => 'No',
'net.sourceforge.xmeeting.XMeeting' => 'Allow all connections',
'com.getdropbox.dropbox' => 'Allow all connections'
},
- 'Mode' => 'Limit incoming connections to specific services and applications'
+ 'Mode' => 'Limit incoming connections to specific services and applications',
+ 'Firewall Logging' => 'No',
+ 'Stealth Mode' => 'No',
}
},
'Software' => {
@@ -2124,17 +2089,17 @@ my %system_profiler_tests = (
},
'Hardware (MAC) Address' => '00:1c:b3:c0:56:85',
'IEEE80211' => {
- 'Join Mode' => 'Automatic',
'Disconnect on Logout' => 'Yes',
+ 'Join Mode' => 'Automatic',
+ 'JoinModeFallback' => 'Prompt',
'PowerEnabled' => '1',
- 'RememberRecentNetworks' => {},
- 'RequireAdmin' => {},
'PreferredNetworks' => {
'Unique Network ID' => 'A628B3F5-DB6B-48A6-A3A4-17D33697041B',
'SecurityType' => 'Open',
'SSID_STR' => 'univ-paris1.fr'
},
- 'JoinModeFallback' => 'Prompt'
+ 'RememberRecentNetworks' => 0,
+ 'RequireAdmin' => 0,
}
}
},
@@ -2224,8 +2189,8 @@ my %system_profiler_tests = (
'Join Mode' => 'Automatic',
'Disconnect on Logout' => 'Yes',
'PowerEnabled' => '1',
- 'RememberRecentNetworks' => {},
- 'RequireAdmin' => {},
+ 'RememberRecentNetworks' => 0,
+ 'RequireAdmin' => 0,
'PreferredNetworks' => {
'Unique Network ID' => '963478B4-1AC3-4B35-A4BB-3510FEA2FEF2',
'SecurityType' => 'WPA2 Enterprise',
@@ -2321,8 +2286,8 @@ my %system_profiler_tests = (
'IEEE80211' => {
'Join Mode' => 'Automatic',
'Disconnect on Logout' => 'Yes',
- 'PowerEnabled' => {},
- 'RememberRecentNetworks' => {},
+ 'PowerEnabled' => 0,
+ 'RememberRecentNetworks' => 0,
'PreferredNetworks' => {
'Unique Network ID' => '46A33A68-7109-48AD-9255-900F0134903E',
'SecurityType' => 'WPA Personal',
@@ -2379,15 +2344,13 @@ my %system_profiler_tests = (
'ATA Bus' => {
'MATSHITACD-RW CW-8221' => {
'Revision' => 'GA0J',
- 'Serial Number' => {
- 'Detachable Drive' => 'No',
- 'Protocol' => 'ATAPI'
- },
- 'Unit Number' => {
- 'Low Power Polling' => 'Yes',
- 'Socket Type' => 'Internal',
- 'Power Off' => 'Yes'
- },
+ 'Serial Number' => undef,
+ 'Detachable Drive' => 'No',
+ 'Protocol' => 'ATAPI',
+ 'Unit Number' => 0,
+ 'Low Power Polling' => 'Yes',
+ 'Socket Type' => 'Internal',
+ 'Power Off' => 'Yes',
'Model' => 'MATSHITACD-RW CW-8221'
}
}
@@ -2431,12 +2394,10 @@ my %system_profiler_tests = (
'Apple Bluetooth Software Version' => '2.3.8f7',
'Outgoing Serial Ports' => {
'Serial Port 1' => {
- 'Address' => {
- 'Name' => 'Bluetooth-Modem'
- },
- 'RFCOMM Channel' => {
- 'Requires Authentication' => 'No'
- }
+ 'Address' => undef,
+ 'Name' => 'Bluetooth-Modem',
+ 'RFCOMM Channel' => 0,
+ 'Requires Authentication' => 'No'
}
},
'Services' => {
@@ -2479,19 +2440,18 @@ my %system_profiler_tests = (
},
'Battery Information' => {
'Charge Information' => {
- 'Full charge capacity (mAh)' => {},
- 'Charge remaining (mAh)' => {
- 'Fully charged' => 'No',
- 'Charging' => 'No'
- }
+ 'Full charge capacity (mAh)' => 0,
+ 'Charge remaining (mAh)' => 0,
+ 'Fully charged' => 'No',
+ 'Charging' => 'No'
},
'Health Information' => {
- 'Voltage (mV)' => '3908',
- 'Battery Installed' => 'Yes',
'Cycle count' => '5',
'Condition' => 'Replace Now',
- 'Amperage (mA)' => '74'
},
+ 'Voltage (mV)' => '3908',
+ 'Battery Installed' => 'Yes',
+ 'Amperage (mA)' => '74',
'Model Information' => {
'PCB Lot Code' => '0000',
'Firmware Version' => '102a',
@@ -2504,16 +2464,15 @@ my %system_profiler_tests = (
},
'System Power Settings' => {
'AC Power' => {
- 'System Sleep Timer (Minutes)' => {
- 'Display Sleep Timer (Minutes)' => '10',
- 'Disk Sleep Timer (Minutes)' => '10',
- 'Automatic Restart On Power Loss' => 'No',
- 'Wake On AC Change' => 'No',
- 'Current Power Source' => 'Yes',
- 'Wake On Clamshell Open' => 'Yes',
- 'Display Sleep Uses Dim' => 'Yes',
- 'Wake On LAN' => 'Yes'
- }
+ 'System Sleep Timer (Minutes)' => 0,
+ 'Display Sleep Timer (Minutes)' => '10',
+ 'Disk Sleep Timer (Minutes)' => '10',
+ 'Automatic Restart On Power Loss' => 'No',
+ 'Wake On AC Change' => 'No',
+ 'Current Power Source' => 'Yes',
+ 'Wake On Clamshell Open' => 'Yes',
+ 'Display Sleep Uses Dim' => 'Yes',
+ 'Wake On LAN' => 'Yes'
},
'Battery Power' => {
'Reduce Brightness' => 'Yes',
@@ -2580,9 +2539,9 @@ my %system_profiler_tests = (
'Hardware' => 'FireWire',
'Proxies' => {
'FTP Passive Mode' => 'Yes',
- 'Service Order' => '2',
'Exceptions List' => '*.local, 169.254/16'
- }
+ },
+ 'Service Order' => '2',
},
'Ethernet' => {
'Has IP Assigned' => 'Yes',
@@ -2609,12 +2568,11 @@ my %system_profiler_tests = (
'IPv4 Addresses' => '172.20.10.171',
'DHCP Server Responses' => {
'Domain Name' => 'univ-paris1.fr',
- 'Lease Duration (seconds)' => {
- 'Routers' => '172.20.10.72',
- 'Subnet Mask' => '255.255.254.0',
- 'Server Identifier' => '172.20.0.2',
- 'DHCP Message Type' => '0x05'
- },
+ 'Lease Duration (seconds)' => 0,
+ 'Routers' => '172.20.10.72',
+ 'Subnet Mask' => '255.255.254.0',
+ 'Server Identifier' => '172.20.0.2',
+ 'DHCP Message Type' => '0x05',
'Domain Name Servers' => '193.55.96.84,193.55.99.70,194.214.33.181'
},
'IPv4' => {
@@ -2634,12 +2592,12 @@ my %system_profiler_tests = (
'Portability' => '37',
'Type' => '50',
'Metric' => '503771',
- 'IPv6 Address' => '2001:0660:3305:0100:021b:63ff:fe36:1ec3',
'Marginal Power' => '71',
- 'Service Order' => '1',
'Total Power' => '72'
}
- }
+ },
+ 'IPv6 Address' => '2001:0660:3305:0100:021b:63ff:fe36:1ec3',
+ 'Service Order' => '1',
},
'Bluetooth' => {
'Has IP Assigned' => 'No',
@@ -2655,7 +2613,7 @@ my %system_profiler_tests = (
'Proxies' => {
'FTP Passive Mode' => 'Yes'
},
- 'Service Order' => {}
+ 'Service Order' => 0,
},
'AirPort' => {
'Has IP Assigned' => 'No',
@@ -2663,9 +2621,8 @@ my %system_profiler_tests = (
'BSD Device Name' => 'en1',
'Ethernet' => {
'MAC Address' => '00:1c:b3:c0:56:85',
- 'Media Options' => {
- 'Media Subtype' => 'Auto Select'
- }
+ 'Media Options' => undef,
+ 'Media Subtype' => 'Auto Select'
},
'IPv4' => {
'Configuration Method' => 'DHCP'
@@ -2673,9 +2630,9 @@ my %system_profiler_tests = (
'Hardware' => 'AirPort',
'Proxies' => {
'FTP Passive Mode' => 'Yes',
- 'Service Order' => '3',
'Exceptions List' => '*.local, 169.254/16'
- }
+ },
+ 'Service Order' => '3',
}
},
'Ethernet Cards' => {
@@ -2853,11 +2810,10 @@ my %system_profiler_tests = (
'Firmware Version' => 'Atheros 5416: 2.1.14.5',
'Locale' => 'ETSI',
'Card Type' => 'AirPort Extreme (0x168C, 0x87)',
- 'Country Code' => {
- 'Supported PHY Modes' => '802.11 a/b/g/n',
- 'Status' => 'Off',
- 'Supported Channels' => '1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140'
- }
+ 'Country Code' => undef,
+ 'Supported PHY Modes' => '802.11 a/b/g/n',
+ 'Status' => 'Off',
+ 'Supported Channels' => '1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140'
}
}
},
@@ -3047,6 +3003,7 @@ foreach my $test (keys %system_profiler_tests) {
my $file = "resources/macos/system_profiler/$test";
my $infos = getSystemProfilerInfos(file => $file);
is_deeply($infos, $system_profiler_tests{$test}, "$test system profiler parsing");
+ use Data::Dumper;
}
foreach my $test (keys %ioreg_tests) {
================================================================
Commit: 9d99310386d83fc7d0c6ca43d12d071ff496be4d
https://github.com/fusinv/fusioninventory-agent/commit/9d99310386d83fc7d0c6ca43d12d071ff496be4d
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Storages.pm
Log Message:
-----------
rewrite, using system_profiler parser from Tools::MacOs
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Storages.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Storages.pm
index 55fae1a..8d148af 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Storages.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Storages.pm
@@ -4,6 +4,7 @@ use strict;
use warnings;
use FusionInventory::Agent::Tools;
+use FusionInventory::Agent::Tools::MacOS;
sub isEnabled {
return 1;
@@ -15,116 +16,99 @@ sub doInventory {
my $inventory = $params{inventory};
my $logger = $params{logger};
- my $devices = {};
-
- # Get SATA Drives
- my $sata = _getDiskInfo();
-
- foreach my $device ( @$sata ) {
- my $description;
- if (!$device->{'Protocol'}) {
- $description = 'Disk drive';
- } elsif ( ($device->{'Protocol'} eq 'ATAPI')
- ||
- ($device->{'Drive Type'}) ) {
- $description = 'CD-ROM Drive';
- }
-
- my $size = $device->{'Capacity'};
- if ($size) {
- #e.g: Capacity: 320,07 GB (320 072 933 376 bytes)
- $size =~ s/\s*\(.*//;
- $size =~ s/ GB//;
- $size =~ s/,/./;
- $size = int($size * 1024);
- }
-
- my $manufacturer = getCanonicalManufacturer($device->{'Name'});
-
- my $model = $device->{'Model'};
- if ($model) {
- $model =~ s/\s*$manufacturer\s*//i;
- }
-
+ foreach my $storage (_getStorages(logger => $logger)) {
$inventory->addEntry(
section => 'STORAGES',
- entry => {
- NAME => $device->{'Name'},
- SERIAL => $device->{'Serial Number'},
- DISKSIZE => $size,
- FIRMWARE => $device->{'Revision'},
- MANUFACTURER => $manufacturer,
- DESCRIPTION => $description,
- MODEL => $model,
- TYPE => $device->{'Type'}
- }
+ entry => $storage
);
}
-
-
}
-sub _getDiskInfo {
- my ($section) = @_;
-
- my $wasEmpty;
- my $revIndent = '';
- my @infos;
- my $info;
- my $name;
- my $type;
- foreach (`/usr/sbin/system_profiler SPSerialATADataType`,
- `/usr/sbin/system_profiler SPParallelATADataType`,
- `/usr/sbin/system_profiler SPUSBDataType`,
- `/usr/sbin/system_profiler SPFireWireDataType`) {
- if (/^\s*$/) {
- $wasEmpty=1;
- next;
- }
+sub _getStorages {
+ my $infos = getSystemProfilerInfos(@_);
+
+ # system profiler info is organized as
+ # bus => {
+ # controller => {
+ # key1 => value1,
+ # device => {
+ # key1 => value1
+ # subdevice => {
+ # key1 => value1,
+ # }
+ # }
+ # }
+ # }
+ my @storages;
+
+ foreach my $bus_name (qw/ATA SERIAL-ATA USB FireWire/) {
+ my $bus = $infos->{$bus_name};
+ next unless $bus;
+ foreach my $controller_name (keys %{$bus}) {
+ my $controller = $bus->{$controller_name};
+ foreach my $device_name (keys %{$controller}) {
+ my $device = $controller->{$device_name};
+ next unless ref $device eq 'HASH';
+ if (_isStorage($device)) {
+ push @storages,
+ _getStorage($device, $device_name, $bus_name);
+ } else {
+ foreach my $subdevice_name (keys %{$device}) {
+ my $subdevice = $device->{$subdevice_name};
+ next unless ref $subdevice eq 'HASH';
+ push @storages,
+ _getStorage($subdevice, $subdevice_name, $bus_name)
+ if _isStorage($subdevice);
+ }
+ }
- next unless /^(\s*)/;
- if ($1 ne $revIndent) {
- $name = $1 if (/^\s+(\S+.*\S+):\s*$/ && $wasEmpty);
- $revIndent = $1;
-
-# We use the Protocol key to know if it a storage section or not
- if (
- # disk
- ($info->{'BSD Name'} && $info->{'BSD Name'} =~ /^disk\d+$/)
- ||
- # USB Disk
-# ($info->{'BSD Name'} && $info->{'Product ID'})
-# ||
- # CDROM
- ($info->{'Protocol'} && $info->{'Socket Type'})
- ) {
- $info->{Type} = $type;
- push @infos, $info;
- $name = '';
}
- $info = {};
- }
- if (/^\s+(\S+.*?):\s+(\S.*)/) {
- $info->{$1}=$2;
- $info->{Name} = $name;
}
+ }
- $type = '' if /^(\S+)/;
- if (/^(\S+):$/) {
- $type=$1;
- if ($type eq 'FireWire') {
- $type = '1394';
- }
- }
+ return @storages;
+}
+sub _isStorage {
+ my ($device) = @_;
- $wasEmpty=0;
+ return
+ ($device->{'BSD Name'} && $device->{'BSD Name'} =~ /^disk\d+$/) ||
+ ($device->{'Protocol'} && $device->{'Socket Type'});
+}
+
+sub _getStorage {
+ my ($device, $device_name, $bus_name) = @_;
+
+ my $storage = {
+ NAME => $device_name,
+ MANUFACTURER => getCanonicalManufacturer($device_name),
+ TYPE => $bus_name eq 'FireWire' ? '1394' : $bus_name,
+ SERIAL => $device->{'Serial Number'},
+ FIRMWARE => $device->{'Revision'},
+ MODEL => $device->{'Model'},
+ DISKSIZE => $device->{'Capacity'}
+ };
+
+ if (!$device->{'Protocol'}) {
+ $storage->{DESCRIPTION} = 'Disk drive';
+ } elsif ($device->{'Protocol'} eq 'ATAPI' || $device->{'Drive Type'}) {
+ $storage->{DESCRIPTION} = 'CD-ROM Drive';
+ }
+
+ if ($storage->{DISKSIZE}) {
+ #e.g: Capacity: 320,07 GB (320 072 933 376 bytes)
+ $storage->{DISKSIZE} =~ s/\s*\(.*//;
+ $storage->{DISKSIZE} =~ s/ GB//;
+ $storage->{DISKSIZE} =~ s/,/./;
+ $storage->{DISKSIZE} = int($storage->{DISKSIZE} * 1024);
}
-# The last one
- if ($info->{Protocol}) {
- push @infos, $info;
+
+ if ($storage->{MODEL}) {
+ $storage->{MODEL} =~ s/\s*$storage->{MANUFACTURER}\s*//i;
}
- return \@infos;
+
+ return $storage;
}
1;
================================================================
Commit: 7159730c87b7362e590f06bfa98f7fb51d2892b1
https://github.com/fusinv/fusioninventory-agent/commit/7159730c87b7362e590f06bfa98f7fb51d2892b1
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
A t/inventory/macos/storages.t
Log Message:
-----------
initial import
diff --git a/t/inventory/macos/storages.t b/t/inventory/macos/storages.t
new file mode 100755
index 0000000..62a3759
--- /dev/null
+++ b/t/inventory/macos/storages.t
@@ -0,0 +1,98 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use FusionInventory::Agent::Task::Inventory::Input::MacOS::Storages;
+
+my %tests = (
+ '10.4-powerpc' => [
+ {
+ NAME => 'HL-DT-ST DVD-RW GWA-4165B',
+ FIRMWARE => 'C006',
+ TYPE => 'ATA',
+ SERIAL => 'B6FD7234EC63',
+ DISKSIZE => undef,
+ MANUFACTURER => 'HL-DT-ST DVD-RW GWA-4165B',
+ MODEL => '',
+ DESCRIPTION => 'CD-ROM Drive'
+ }
+ ],
+ '10.5-powerpc' => [
+ {
+ NAME => 'HL-DT-ST DVD-RW GWA-4165B',
+ FIRMWARE => 'C006',
+ TYPE => 'ATA',
+ SERIAL => 'B6FD7234EC63',
+ DISKSIZE => undef,
+ MANUFACTURER => 'HL-DT-ST DVD-RW GWA-4165B',
+ MODEL => '',
+ DESCRIPTION => 'CD-ROM Drive'
+ },
+ {
+ NAME => 'Flash Disk',
+ FIRMWARE => undef,
+ TYPE => 'USB',
+ SERIAL => '110074973765',
+ DISKSIZE => 2007,
+ MANUFACTURER => 'Flash Disk',
+ MODEL => undef,
+ DESCRIPTION => 'Disk drive'
+ },
+ {
+ NAME => 'DataTraveler 2.0',
+ FIRMWARE => undef,
+ TYPE => 'USB',
+ SERIAL => '89980116200801151425097A',
+ DISKSIZE => 3850,
+ MANUFACTURER => 'DataTraveler 2.0',
+ MODEL => undef,
+ DESCRIPTION => 'Disk drive'
+ }
+ ],
+ '10.6-intel' => [
+ {
+ NAME => 'MATSHITADVD-R UJ-875',
+ FIRMWARE => 'DB09',
+ TYPE => 'ATA',
+ SERIAL => ' fG424F9E',
+ DISKSIZE => undef,
+ MANUFACTURER => 'Matshita',
+ MODEL => 'DVD-R UJ-875',
+ DESCRIPTION => 'CD-ROM Drive'
+ },
+ {
+ NAME => 'Flash Disk ',
+ FIRMWARE => undef,
+ TYPE => 'USB',
+ SERIAL => '110074973765',
+ DISKSIZE => 2160,
+ MANUFACTURER => 'Flash Disk ',
+ MODEL => undef,
+ DESCRIPTION => 'Disk drive'
+ }
+ ],
+ '10.6.6-intel' => [
+ {
+ NAME => 'MATSHITACD-RW CW-8221',
+ FIRMWARE => 'GA0J',
+ TYPE => 'ATA',
+ SERIAL => undef,
+ DISKSIZE => undef,
+ MANUFACTURER => 'Matshita',
+ MODEL => 'CD-RW CW-8221',
+ DESCRIPTION => 'CD-ROM Drive'
+ }
+ ]
+);
+
+plan tests => scalar keys %tests;
+
+foreach my $test (keys %tests) {
+ my $file = "resources/macos/system_profiler/$test";
+ my @storages = FusionInventory::Agent::Task::Inventory::Input::MacOS::Storages::_getStorages(file => $file);
+ is_deeply(\@storages, $tests{$test}, $test) or print Dumper(\@storages);
+ use Data::Dumper;
+}
================================================================
Commit: 8ecba717d1fd2773b0d3123d30fbfa2793b2fc9d
https://github.com/fusinv/fusioninventory-agent/commit/8ecba717d1fd2773b0d3123d30fbfa2793b2fc9d
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
R resources/macos/system_profiler/10.6-intel-SPFireWireDataType
R resources/macos/system_profiler/10.6-intel-SPParallelATADataType
R resources/macos/system_profiler/10.6-intel-SPSerialATADataType
R resources/macos/system_profiler/10.6-intel-SPUSBDataType
Log Message:
-----------
not needed, they are just subsets
diff --git a/resources/macos/system_profiler/10.6-intel-SPFireWireDataType b/resources/macos/system_profiler/10.6-intel-SPFireWireDataType
deleted file mode 100644
index 4a6629d..0000000
--- a/resources/macos/system_profiler/10.6-intel-SPFireWireDataType
+++ /dev/null
@@ -1,6 +0,0 @@
-FireWire:
-
- FireWire Bus:
-
- Maximum Speed: Up to 400 Mb/sec
-
diff --git a/resources/macos/system_profiler/10.6-intel-SPParallelATADataType b/resources/macos/system_profiler/10.6-intel-SPParallelATADataType
deleted file mode 100644
index 0999d1c..0000000
--- a/resources/macos/system_profiler/10.6-intel-SPParallelATADataType
+++ /dev/null
@@ -1,38 +0,0 @@
-ATA:
-
- ATA Bus:
-
- HL-DT-ST DVDRW GSA-S10N:
-
- Capacity: 7,77 GB (7 771 521 024 bytes)
- Model: HL-DT-ST DVDRW GSA-S10N
- Revision: BP08
- Serial Number: K0076RM5813
- Removable Media: Yes
- Detachable Drive: No
- BSD Name: disk1
- Protocol: ATAPI
- Unit Number: 0
- Socket Type: Internal
- Low Power Polling: Yes
- Power Off: Yes
- Partition Map Type: APM (Apple Partition Map)
- S.M.A.R.T. status: Not Supported
- Volumes:
- Capacity: 31 KB (30 720 bytes)
- Media Type: DVD-ROM
- Writable: No
- BSD Name: disk1s1
- Capacity: 1,03 GB (1 034 455 040 bytes)
- Media Type: DVD-ROM
- Writable: No
- BSD Name: disk1s2
- Mac OS X Install DVD:
- Capacity: 6,74 GB (6 737 006 592 bytes)
- Available: 84,9 MB (84 946 944 bytes)
- Media Type: DVD-ROM
- Writable: No
- File System: HFS+
- BSD Name: disk1s3
- Mount Point: /Volumes/Mac OS X Install DVD
-
diff --git a/resources/macos/system_profiler/10.6-intel-SPSerialATADataType b/resources/macos/system_profiler/10.6-intel-SPSerialATADataType
deleted file mode 100644
index f8b58bf..0000000
--- a/resources/macos/system_profiler/10.6-intel-SPSerialATADataType
+++ /dev/null
@@ -1,36 +0,0 @@
-Serial-ATA:
-
- Intel ICH7-M AHCI:
-
- Vendor: Intel
- Product: ICH7-M AHCI
- Link Speed: 1.5 Gigabit
- Negotiated Link Speed: 1.5 Gigabit
- Description: AHCI Version 1.10 Supported
-
- FUJITSU MHY2120BH:
-
- Capacity: 120,03 GB (120 034 123 776 bytes)
- Model: FUJITSU MHY2120BH
- Revision: 0081000D
- Serial Number: K439T822NS6V
- Native Command Queuing: Yes
- Queue Depth: 32
- Removable Media: No
- Detachable Drive: No
- BSD Name: disk0
- Medium Type: Rotational
- Partition Map Type: GPT (GUID Partition Table)
- S.M.A.R.T. status: Verified
- Volumes:
- Capacity: 209,7 MB (209 715 200 bytes)
- Writable: Yes
- BSD Name: disk0s1
- Macintosh HD:
- Capacity: 119,69 GB (119 690 149 888 bytes)
- Available: 94,9 GB (94 897 831 936 bytes)
- Writable: Yes
- File System: Journaled HFS+
- BSD Name: disk0s2
- Mount Point: /
-
diff --git a/resources/macos/system_profiler/10.6-intel-SPUSBDataType b/resources/macos/system_profiler/10.6-intel-SPUSBDataType
deleted file mode 100644
index 41e21a7..0000000
--- a/resources/macos/system_profiler/10.6-intel-SPUSBDataType
+++ /dev/null
@@ -1,91 +0,0 @@
-USB:
-
- USB High-Speed Bus:
-
- Host Controller Location: Built-in USB
- Host Controller Driver: AppleUSBEHCI
- PCI Device ID: 0x27cc
- PCI Revision ID: 0x0002
- PCI Vendor ID: 0x8086
- Bus Number: 0xfd
-
- Built-in iSight:
-
- Product ID: 0x8501
- Vendor ID: 0x05ac (Apple Inc.)
- Version: 1.89
- Speed: Up to 480 Mb/sec
- Manufacturer: Micron
- Location ID: 0xfd400000 / 2
- Current Available (mA): 500
- Current Required (mA): 100
-
- USB Bus:
-
- Host Controller Location: Built-in USB
- Host Controller Driver: AppleUSBUHCI
- PCI Device ID: 0x27cb
- PCI Revision ID: 0x0002
- PCI Vendor ID: 0x8086
- Bus Number: 0x7d
-
- Bluetooth USB Host Controller:
-
- Product ID: 0x8205
- Vendor ID: 0x05ac (Apple Inc.)
- Version: 19.65
- Speed: Up to 12 Mb/sec
- Manufacturer: Apple Inc.
- Location ID: 0x7d100000 / 2
- Current Available (mA): 500
- Current Required (mA): 0
-
- USB Bus:
-
- Host Controller Location: Built-in USB
- Host Controller Driver: AppleUSBUHCI
- PCI Device ID: 0x27c9
- PCI Revision ID: 0x0002
- PCI Vendor ID: 0x8086
- Bus Number: 0x3d
-
- USB Bus:
-
- Host Controller Location: Built-in USB
- Host Controller Driver: AppleUSBUHCI
- PCI Device ID: 0x27c8
- PCI Revision ID: 0x0002
- PCI Vendor ID: 0x8086
- Bus Number: 0x1d
-
- Apple Internal Keyboard / Trackpad:
-
- Product ID: 0x021b
- Vendor ID: 0x05ac (Apple Inc.)
- Version: 0.18
- Speed: Up to 12 Mb/sec
- Manufacturer: Apple Computer
- Location ID: 0x1d200000 / 2
- Current Available (mA): 500
- Current Required (mA): 40
-
- USB Bus:
-
- Host Controller Location: Built-in USB
- Host Controller Driver: AppleUSBUHCI
- PCI Device ID: 0x27ca
- PCI Revision ID: 0x0002
- PCI Vendor ID: 0x8086
- Bus Number: 0x5d
-
- IR Receiver:
-
- Product ID: 0x8240
- Vendor ID: 0x05ac (Apple Inc.)
- Version: 1.10
- Speed: Up to 12 Mb/sec
- Manufacturer: Apple Computer, Inc.
- Location ID: 0x5d200000 / 2
- Current Available (mA): 500
- Current Required (mA): 100
-
================================================================
Commit: 5bee372f2356a9566294b1aafe91c0939dfebc5f
https://github.com/fusinv/fusioninventory-agent/commit/5bee372f2356a9566294b1aafe91c0939dfebc5f
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/MacOS.pm
Log Message:
-----------
cache system_profiler parsed output
diff --git a/lib/FusionInventory/Agent/Tools/MacOS.pm b/lib/FusionInventory/Agent/Tools/MacOS.pm
index 5c41d76..bcf7051 100644
--- a/lib/FusionInventory/Agent/Tools/MacOS.pm
+++ b/lib/FusionInventory/Agent/Tools/MacOS.pm
@@ -5,6 +5,7 @@ use warnings;
use base 'Exporter';
use English qw(-no_match_vars);
+use Memoize;
use FusionInventory::Agent::Tools;
@@ -13,6 +14,8 @@ our @EXPORT = qw(
getIODevices
);
+memoize('getSystemProfilerInfos');
+
sub getSystemProfilerInfos {
my %params = (
command => '/usr/sbin/system_profiler',
================================================================
Commit: e36f3cb8600039080cbdcd512c5e54521cf2dfcf
https://github.com/fusinv/fusioninventory-agent/commit/e36f3cb8600039080cbdcd512c5e54521cf2dfcf
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory.pm
Log Message:
-----------
don't call removed function
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index eee2a67..51abc38 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -276,8 +276,6 @@ sub _feedInventory {
$inventory->computeLegacyValues();
$inventory->computeChecksum();
-
- $inventory->checkContent();
}
sub _injectContent {
================================================================
Commit: 26f4df924e349b3645c7b6c6ca26a6a71f1cd46e
https://github.com/fusinv/fusioninventory-agent/commit/26f4df924e349b3645c7b6c6ca26a6a71f1cd46e
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages/Adaptec.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Libvirt.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VmWareDesktop.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
M lib/FusionInventory/Agent/Tools.pm
M lib/FusionInventory/Agent/Tools/AIX.pm
M lib/FusionInventory/Agent/Tools/Generic.pm
M lib/FusionInventory/Agent/Tools/HPUX.pm
M lib/FusionInventory/Agent/Tools/Linux.pm
M lib/FusionInventory/Agent/Tools/MacOS.pm
M lib/FusionInventory/Agent/Tools/Unix.pm
M lib/FusionInventory/Agent/Tools/Win32.pm
Log Message:
-----------
consistent syntax
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages/Adaptec.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages/Adaptec.pm
index f171fc4..4662f62 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages/Adaptec.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages/Adaptec.pm
@@ -42,7 +42,7 @@ sub doInventory {
}
sub _getDisksFromProc {
- my %params = (
+ my (%params) = (
file => '/proc/scsi/scsi',
@_
);
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm
index 6610d09..a78752e 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm
@@ -11,7 +11,7 @@ sub isEnabled {
}
sub _parseHponcfg {
- my %params = @_;
+ my (%params) = @_;
my $handle = getFileHandle(%params);
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
index efeee64..a538f7c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
@@ -32,7 +32,7 @@ sub doInventory {
}
sub _getSlots4 {
- my %params = (
+ my (%params) = (
command => 'prtdiag',
@_
);
@@ -57,7 +57,7 @@ sub _getSlots4 {
}
sub _getSlots5 {
- my %params = (
+ my (%params) = (
command => 'prtdiag',
@_
);
@@ -106,7 +106,7 @@ sub _getSlots5 {
}
sub _getSlotsDefault {
- my %params = (
+ my (%params) = (
command => 'prtdiag',
@_
);
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Libvirt.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Libvirt.pm
index cfa845b..dc3ccf9 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Libvirt.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Libvirt.pm
@@ -26,7 +26,7 @@ sub doInventory {
}
sub _getMachines {
- my %params = @_;
+ my (%params) = @_;
my @machines = _parseList(
command => 'virsh list --all',
@@ -49,7 +49,7 @@ sub _getMachines {
}
sub _parseList {
- my %params = @_;
+ my (%params) = @_;
my $handle = getFileHandle(%params);
return unless $handle;
@@ -84,7 +84,7 @@ sub _parseList {
}
sub _parseDumpxml {
- my %params = @_;
+ my (%params) = @_;
my $xml = getAllLines(%params);
if (!$xml) {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VmWareDesktop.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VmWareDesktop.pm
index 5390a61..d4e0b41 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VmWareDesktop.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VmWareDesktop.pm
@@ -33,7 +33,7 @@ sub doInventory {
}
sub _getMachines {
- my %params = @_;
+ my (%params) = @_;
my $handle = getFileHandle(%params);
return unless $handle;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index ef34674..2c2272f 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -156,7 +156,7 @@ sub _getSoftwares {
}
sub _addSoftware {
- my %params = @_;
+ my (%params) = @_;
my $entry = $params{entry};
diff --git a/lib/FusionInventory/Agent/Tools.pm b/lib/FusionInventory/Agent/Tools.pm
index 7ff5ed8..0e8e17d 100644
--- a/lib/FusionInventory/Agent/Tools.pm
+++ b/lib/FusionInventory/Agent/Tools.pm
@@ -202,7 +202,7 @@ sub getSanitizedString {
}
sub getDirectoryHandle {
- my %params = @_;
+ my (%params) = @_;
die "no directory parameter given" unless $params{directory};
@@ -218,7 +218,7 @@ sub getDirectoryHandle {
}
sub getFileHandle {
- my %params = @_;
+ my (%params) = @_;
my $handle;
@@ -252,7 +252,7 @@ sub getFileHandle {
}
sub getFirstLine {
- my %params = @_;
+ my (%params) = @_;
my $handle = getFileHandle(%params);
return unless $handle;
@@ -265,7 +265,7 @@ sub getFirstLine {
}
sub getLastLine {
- my %params = @_;
+ my (%params) = @_;
my $handle = getFileHandle(%params);
return unless $handle;
@@ -281,7 +281,7 @@ sub getLastLine {
}
sub getFirstMatch {
- my %params = @_;
+ my (%params) = @_;
return unless $params{pattern};
my $handle = getFileHandle(%params);
@@ -298,7 +298,7 @@ sub getFirstMatch {
}
sub getAllLines {
- my %params = @_;
+ my (%params) = @_;
my $handle = getFileHandle(%params);
return unless $handle;
@@ -316,7 +316,7 @@ sub getAllLines {
}
sub getLinesCount {
- my %params = @_;
+ my (%params) = @_;
my $handle = getFileHandle(%params);
return unless $handle;
diff --git a/lib/FusionInventory/Agent/Tools/AIX.pm b/lib/FusionInventory/Agent/Tools/AIX.pm
index 4524400..2eb9538 100644
--- a/lib/FusionInventory/Agent/Tools/AIX.pm
+++ b/lib/FusionInventory/Agent/Tools/AIX.pm
@@ -18,7 +18,7 @@ memoize('getLsvpdInfos');
memoize('getAdaptersFromLsdev');
sub getLsvpdInfos {
- my %params = (
+ my (%params) = (
command => 'lsvpd',
@_
);
@@ -55,7 +55,7 @@ sub getLsvpdInfos {
}
sub getAdaptersFromLsdev {
- my %params = (
+ my (%params) = (
command => 'lsdev -Cc adapter -F "name:type:description"',
@_
);
diff --git a/lib/FusionInventory/Agent/Tools/Generic.pm b/lib/FusionInventory/Agent/Tools/Generic.pm
index ca807ba..03c1cc5 100644
--- a/lib/FusionInventory/Agent/Tools/Generic.pm
+++ b/lib/FusionInventory/Agent/Tools/Generic.pm
@@ -19,7 +19,7 @@ memoize('getDmidecodeInfos');
memoize('getPCIDevices');
sub getDmidecodeInfos {
- my %params = (
+ my (%params) = (
command => 'dmidecode',
@_
);
@@ -124,7 +124,7 @@ sub getCpusFromDmidecode {
}
sub getPCIDevices {
- my %params = (
+ my (%params) = (
command => 'lspci -vvv -nn',
@_
);
diff --git a/lib/FusionInventory/Agent/Tools/HPUX.pm b/lib/FusionInventory/Agent/Tools/HPUX.pm
index 700a9d6..f897029 100644
--- a/lib/FusionInventory/Agent/Tools/HPUX.pm
+++ b/lib/FusionInventory/Agent/Tools/HPUX.pm
@@ -18,7 +18,7 @@ memoize('getInfoFromMachinfo');
memoize('isHPVMGuest');
sub getInfoFromMachinfo {
- my %params = (
+ my (%params) = (
command => '/usr/contrib/bin/machinfo',
@_
);
diff --git a/lib/FusionInventory/Agent/Tools/Linux.pm b/lib/FusionInventory/Agent/Tools/Linux.pm
index 2559bef..e03a177 100644
--- a/lib/FusionInventory/Agent/Tools/Linux.pm
+++ b/lib/FusionInventory/Agent/Tools/Linux.pm
@@ -24,7 +24,7 @@ our @EXPORT = qw(
memoize('getDevicesFromUdev');
sub getDevicesFromUdev {
- my %params = @_;
+ my (%params) = @_;
my @devices;
@@ -45,7 +45,7 @@ sub getDevicesFromUdev {
}
sub _parseUdevEntry {
- my %params = @_;
+ my (%params) = @_;
my $handle = getFileHandle(%params);
return unless $handle;
@@ -85,7 +85,7 @@ sub _parseUdevEntry {
}
sub getCPUsFromProc {
- my %params = (
+ my (%params) = (
file => '/proc/cpuinfo',
@_
);
@@ -120,7 +120,7 @@ sub _isValidCPU {
sub getDevicesFromHal {
- my %params = (
+ my (%params) = (
command => '/usr/bin/lshal',
@_
);
@@ -164,7 +164,7 @@ sub getDevicesFromHal {
}
sub getDevicesFromProc {
- my %params = @_;
+ my (%params) = @_;
# compute list of devices
my @names;
@@ -245,7 +245,7 @@ sub _getValueFromSysProc {
}
sub getSerialnumber {
- my %params = @_;
+ my (%params) = @_;
my ($serial) = getFirstMatch(
command => $params{device} ? "smartctl -i $params{device}" : undef,
@@ -258,7 +258,7 @@ sub getSerialnumber {
}
sub getInterfacesFromIfconfig {
- my %params = (
+ my (%params) = (
command => '/sbin/ifconfig -a',
@_
);
@@ -307,7 +307,7 @@ sub getInterfacesFromIfconfig {
return @interfaces;
}
sub getInterfacesFromIp {
- my %params = (
+ my (%params) = (
command => '/sbin/ip addr show',
@_
);
diff --git a/lib/FusionInventory/Agent/Tools/MacOS.pm b/lib/FusionInventory/Agent/Tools/MacOS.pm
index bcf7051..bef132c 100644
--- a/lib/FusionInventory/Agent/Tools/MacOS.pm
+++ b/lib/FusionInventory/Agent/Tools/MacOS.pm
@@ -17,7 +17,7 @@ our @EXPORT = qw(
memoize('getSystemProfilerInfos');
sub getSystemProfilerInfos {
- my %params = (
+ my (%params) = (
command => '/usr/sbin/system_profiler',
@_
);
@@ -85,7 +85,7 @@ sub getSystemProfilerInfos {
}
sub getIODevices {
- my %params = @_;
+ my (%params) = @_;
# passing expected class to the command ensure only instance of this class
# are present in the output, reducing the size of the content to be parsed,
diff --git a/lib/FusionInventory/Agent/Tools/Unix.pm b/lib/FusionInventory/Agent/Tools/Unix.pm
index 428f54f..5ec40cd 100644
--- a/lib/FusionInventory/Agent/Tools/Unix.pm
+++ b/lib/FusionInventory/Agent/Tools/Unix.pm
@@ -24,7 +24,7 @@ our @EXPORT = qw(
memoize('getProcessesFromPs');
sub getDeviceCapacity {
- my %params = @_;
+ my (%params) = @_;
return unless $params{device};
@@ -146,7 +146,7 @@ sub _parseDhcpLeaseFile {
}
sub getFilesystemsFromDf {
- my %params = (@_);
+ my (%params) = @_;
my $handle = getFileHandle(%params);
my @filesystems;
@@ -197,7 +197,7 @@ sub getFilesystemsFromDf {
}
sub getFilesystemsTypesFromMount {
- my %params = (
+ my (%params) = (
command => 'mount',
@_
);
@@ -334,7 +334,7 @@ sub getProcessesFromPs {
}
sub getRoutingTable {
- my %params = (
+ my (%params) = (
command => 'netstat -nr -f inet',
@_
);
diff --git a/lib/FusionInventory/Agent/Tools/Win32.pm b/lib/FusionInventory/Agent/Tools/Win32.pm
index 6624a0e..1c49573 100644
--- a/lib/FusionInventory/Agent/Tools/Win32.pm
+++ b/lib/FusionInventory/Agent/Tools/Win32.pm
@@ -70,7 +70,7 @@ sub encodeFromRegistry {
}
sub getWmiObjects {
- my %params = (
+ my (%params) = (
moniker => 'winmgmts:{impersonationLevel=impersonate,(security)}!//./',
@_
);
@@ -93,7 +93,7 @@ sub getWmiObjects {
}
sub getRegistryValue {
- my %params = @_;
+ my (%params) = @_;
my ($root, $keyName, $valueName);
if ($params{path} =~ /^(HKEY\S+?)\/(.*)\/([^\/.]*)/ ) {
================================================================
Commit: ccd133edbd05213dcb331d5f75e5079424fe38e8
https://github.com/fusinv/fusioninventory-agent/commit/ccd133edbd05213dcb331d5f75e5079424fe38e8
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
Log Message:
-----------
use explicit iterators
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
index a538f7c..2c3914c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
@@ -72,25 +72,25 @@ sub _getSlots5 {
my $description;
my $designation;
- while (<$handle>) {
- last if /^\=+/ && $flag_pci && $flag;
+ while (my $line = <$handle>) {
+ last if $line =~ /^\=+/ && $flag_pci && $flag;
- if (/^=+\S+\s+IO Cards/) {
+ if ($line =~ /^=+\S+\s+IO Cards/) {
$flag_pci = 1;
}
- if ($flag_pci && /^-+/) {
+ if ($flag_pci && $line =~ /^-+/) {
$flag = 1;
}
next unless $flag && $flag_pci;
- if (/^\s+(\d+)/){
+ if ($line =~ /^\s+(\d+)/) {
$name = "LSB " . $1;
}
- if(/^\s+\S+\s+(\S+)/){
+ if ($line =~ /^\s+\S+\s+(\S+)/) {
$description = $1;
}
- if(/^\s+\S+\s+\S+\s+(\S+)/){
+ if ($line =~ /^\s+\S+\s+\S+\s+(\S+)/) {
$designation = $1;
}
@@ -111,7 +111,7 @@ sub _getSlotsDefault {
@_
);
- my $handle = getFileHandle(%params);
+ my $handle = getFileHandle(%params);
return unless $handle;
my @slots;
@@ -122,28 +122,28 @@ sub _getSlotsDefault {
my $designation;
my $status;
- while (<$handle>) {
- last if /^\=+/ && $flag_pci;
- next if /^\s+/ && $flag_pci;
- if (/^=+\s+IO Cards/) {
+ while (my $line = <$handle>) {
+ last if $line =~ /^\=+/ && $flag_pci;
+ next if $line =~ /^\s+/ && $flag_pci;
+ if ($line =~ /^=+\s+IO Cards/) {
$flag_pci = 1;
}
- if ($flag_pci && /^-+/) {
+ if ($flag_pci && $line =~ /^-+/) {
$flag = 1;
}
next unless $flag && $flag_pci;
- if(/^(\S+)\s+/){
+ if ($line =~ /^(\S+)\s+/){
$name = $1;
}
- if(/(\S+)\s*$/){
+ if ($line =~ /(\S+)\s*$/){
$designation = $1;
}
- if(/^\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+(\S+)/){
+ if ($line =~ /^\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+(\S+)/) {
$description = $1;
}
- if(/^\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+(\S+)/){
+ if ($line =~ /^\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+(\S+)/) {
$status = $1;
}
push @slots, {
================================================================
Commit: ac821d45cc7b85a08677f993b9215ea5a2fe27ef
https://github.com/fusinv/fusioninventory-agent/commit/ac821d45cc7b85a08677f993b9215ea5a2fe27ef
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Config.pm
Log Message:
-----------
use explicit iterator
diff --git a/lib/FusionInventory/Agent/Config.pm b/lib/FusionInventory/Agent/Config.pm
index b716f78..ac07bc3 100644
--- a/lib/FusionInventory/Agent/Config.pm
+++ b/lib/FusionInventory/Agent/Config.pm
@@ -147,9 +147,9 @@ sub _loadFromCfgFile {
return;
}
- while (<$handle>) {
- s/#.+//;
- if (/([\w-]+)\s*=\s*(.+)/) {
+ while (my $line = <$handle>) {
+ $line =~ s/#.+//;
+ if ($line =~ /([\w-]+)\s*=\s*(.+)/) {
my $key = $1;
my $val = $2;
# Remove the quotes
================================================================
Commit: 3992007e8cbdf2d8aeb2c09326a132c1c9ddcfc2
https://github.com/fusinv/fusioninventory-agent/commit/3992007e8cbdf2d8aeb2c09326a132c1c9ddcfc2
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Parallels.pm
Log Message:
-----------
use while instead of foreach to read files
this avoid forcing list context, and loading the whole output in memory
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
index 51b4f78..f8c6bc0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
@@ -42,7 +42,7 @@ sub _getLogicalVolumes {
my @volumes;
- foreach my $line (<$handle>) {
+ while (my $line = <$handle>) {
chomp $line;
push @volumes, _getLogicalVolume($logger, $line);
}
@@ -62,7 +62,7 @@ sub _getLogicalVolume {
my $volume;
- foreach my $line (<$handle>) {
+ while (my $line = <$handle>) {
chomp $line;
if ($line =~ /(\S+):/) {
@@ -102,7 +102,7 @@ sub _getPhysicalVolumes {
my @volumes;
- foreach my $line (<$handle>) {
+ while (my $line = <$handle>) {
chomp $line;
push @volumes, _getPhysicalVolume($logger, $line);
}
@@ -126,7 +126,7 @@ sub _getPhysicalVolume {
};
my ($free, $total);
- foreach my $line (<$handle>) {
+ while (my $line = <$handle>) {
chomp $line;
if ($line =~ /PHYSICAL VOLUME:\s+(\S+)/) {
@@ -168,7 +168,7 @@ sub _getVolumeGroups {
my @groups;
- foreach my $line (<$handle>) {
+ while (my $line = <$handle>) {
chomp $line;
push @groups, _getVolumeGroup($logger, $line);
}
@@ -190,7 +190,7 @@ sub _getVolumeGroup {
VG_NAME => $name
};
- foreach my $line (<$handle>) {
+ while (my $line = <$handle>) {
chomp $line;
if ($line =~ /TOTAL PPs:\s+(\d+)/) {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm
index 11b73af..be4aef8 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm
@@ -80,7 +80,7 @@ sub _getDdcprobeData {
return unless $handle;
my $data;
- foreach my $line (<$handle>) {
+ while (my $line = <$handle>) {
$line =~ s/[[:cntrl:]]//g;
$line =~ s/[^[:ascii:]]//g;
$data->{$1} = $2 if $line =~ /^(\S+):\s+(.*)/;
@@ -95,7 +95,7 @@ sub _parseXorgFd {
return unless $handle;
my $data;
- foreach my $line (<$handle>) {
+ while (my $line = <$handle>) {
if ($line =~ /Modeline\s"(\S+?)"/) {
$data->{resolution} = $1 if !$data->{resolution};
} elsif ($line =~ /Integrated Graphics Chipset:\s+(.*)/) {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Parallels.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Parallels.pm
index 74b84f9..c96e952 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Parallels.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Parallels.pm
@@ -70,7 +70,7 @@ sub _parsePrlctlA {
my $line = <$handle>;
my @machines;
- foreach my $line (<$handle>) {
+ while (my $line = <$handle>) {
chomp $line;
my @info = split(/\s+/, $line, 4);
my $uuid = $info[0];
================================================================
Commit: a3f124aa87180a670edb26ff32c61b2d9feffbc2
https://github.com/fusinv/fusioninventory-agent/commit/a3f124aa87180a670edb26ff32c61b2d9feffbc2
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Protocol/https.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
M lib/FusionInventory/Agent/Tools/Linux.pm
M lib/FusionInventory/Agent/Tools/Network.pm
M lib/FusionInventory/Agent/Tools/Unix.pm
Log Message:
-----------
drop unused variables
diff --git a/lib/FusionInventory/Agent/HTTP/Protocol/https.pm b/lib/FusionInventory/Agent/HTTP/Protocol/https.pm
index c07fe99..d74a8b1 100644
--- a/lib/FusionInventory/Agent/HTTP/Protocol/https.pm
+++ b/lib/FusionInventory/Agent/HTTP/Protocol/https.pm
@@ -17,7 +17,7 @@ sub import {
}
sub _extra_sock_opts {
- my ($self, $host, $port) = @_;
+ my ($self, $host) = @_;
return (
SSL_verify_mode => $self->{ua}->{ssl_check} ?
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
index de317fe..5fdf0a0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
@@ -43,7 +43,6 @@ sub _getInterfaces {
my (%params) = @_;
my $logger = $params{logger};
- my $routes = $params{routes};
my @interfaces = canRun("/sbin/ip") ?
getInterfacesFromIp(logger => $logger):
@@ -60,7 +59,6 @@ sub _getInterfaces {
);
my ($driver, $pcislot) = _getUevent(
- $logger,
$interface->{DESCRIPTION}
);
$interface->{DRIVER} = $driver if $driver;
@@ -134,7 +132,7 @@ sub _isWifi {
}
sub _getUevent {
- my ($logger, $name) = @_;
+ my ($name) = @_;
my $file = "/sys/class/net/$name/device/uevent";
my $handle = getFileHandle(file => $file);
diff --git a/lib/FusionInventory/Agent/Tools/Linux.pm b/lib/FusionInventory/Agent/Tools/Linux.pm
index e03a177..f2e90d4 100644
--- a/lib/FusionInventory/Agent/Tools/Linux.pm
+++ b/lib/FusionInventory/Agent/Tools/Linux.pm
@@ -332,7 +332,7 @@ sub getInterfacesFromIp {
$interface->{IPADDRESS6} = $1;
} elsif ($line =~ /inet ($ip_address_pattern)\/(\d{1,3})/) {
$interface->{IPADDRESS} = $1;
- $interface->{IPMASK} = getNetworkMask($1, $2);
+ $interface->{IPMASK} = getNetworkMask($2);
$interface->{IPSUBNET} = getSubnetAddress(
$interface->{IPADDRESS}, $interface->{IPMASK}
);
diff --git a/lib/FusionInventory/Agent/Tools/Network.pm b/lib/FusionInventory/Agent/Tools/Network.pm
index 65ce338..27bdd20 100644
--- a/lib/FusionInventory/Agent/Tools/Network.pm
+++ b/lib/FusionInventory/Agent/Tools/Network.pm
@@ -86,7 +86,7 @@ sub alt2canonical {
}
sub getNetworkMask {
- my ($address, $prefix) = @_;
+ my ($prefix) = @_;
my $mask;
$mask .= 1 foreach(1..$prefix);
@@ -143,6 +143,6 @@ Returns the subnet address for IPv4.
Returns the subnet address for IPv6.
-=head2 getNetworkMask($address, $prefix)
+=head2 getNetworkMask($prefix)
Returns the network mask.
diff --git a/lib/FusionInventory/Agent/Tools/Unix.pm b/lib/FusionInventory/Agent/Tools/Unix.pm
index 5ec40cd..decc968 100644
--- a/lib/FusionInventory/Agent/Tools/Unix.pm
+++ b/lib/FusionInventory/Agent/Tools/Unix.pm
@@ -46,7 +46,7 @@ sub getDeviceCapacity {
sub getIpDhcp {
my ($logger, $if) = @_;
- my $dhcpLeaseFile = _findDhcpLeaseFile($logger, $if);
+ my $dhcpLeaseFile = _findDhcpLeaseFile($if);
return unless $dhcpLeaseFile;
@@ -54,8 +54,7 @@ sub getIpDhcp {
}
sub _findDhcpLeaseFile {
- my ($logger, $if) = @_;
-
+ my ($if) = @_;
my @directories = qw(
/var/db
================================================================
Commit: aab1ea5b821da6e82d6d10eddc3313d26d3f2353
https://github.com/fusinv/fusioninventory-agent/commit/aab1ea5b821da6e82d6d10eddc3313d26d3f2353
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M t/05var.t
Log Message:
-----------
add some more exceptions
diff --git a/t/05var.t b/t/05var.t
index 6671b6e..2f1896b 100644
--- a/t/05var.t
+++ b/t/05var.t
@@ -23,5 +23,7 @@ if ($EVAL_ERROR) {
plan(skip_all => 'Test::Vars required to validate the code');
}
-Test::Vars::all_vars_ok(ignore_vars => { '$i' => 1 });
+Test::Vars::all_vars_ok(
+ ignore_vars => { '$i' => 1, '%params' => 1, '$class' => 1 }
+);
================================================================
Commit: 7036a3665e26876becb4900444506b4971a3c5c2
https://github.com/fusinv/fusioninventory-agent/commit/7036a3665e26876becb4900444506b4971a3c5c2
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
Log Message:
-----------
cosmetics
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
index b0e74ad..33ad418 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
@@ -30,8 +30,8 @@ sub doInventory {
sub _getDisplays {
my $infos = getSystemProfilerInfos(@_);
- my $monitors = [];
- my $videos = [];
+ my @monitors;
+ my @videos;
foreach my $videoName (keys %{$infos->{'Graphics/Displays'}}) {
my $videoCardInfo = $infos->{'Graphics/Displays'}->{$videoName};
@@ -50,7 +50,7 @@ sub _getDisplays {
my $memory = $videoCardInfo->{'VRAM (Total)'};
$memory =~ s/\ .*//g if $memory;
- push @$videos, {
+ push @videos, {
CHIPSET => $videoCardInfo->{'Chipset Model'},
MEMORY => $memory,
NAME => $videoName,
@@ -58,7 +58,7 @@ sub _getDisplays {
PCISLOT => $videoCardInfo->{Slot}
};
- push @$monitors, {
+ push @monitors, {
CAPTION => $displayName,
DESCRIPTION => $displayName,
}
@@ -66,8 +66,8 @@ sub _getDisplays {
}
return (
- MONITORS => $monitors,
- VIDEOS => $videos
+ MONITORS => \@monitors,
+ VIDEOS => \@videos
);
}
================================================================
Commit: b8c705f43405e3ccce14a723b025fc5cfb257b7b
https://github.com/fusinv/fusioninventory-agent/commit/b8c705f43405e3ccce14a723b025fc5cfb257b7b
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
Log Message:
-----------
more explicit
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
index 33ad418..8294ed5 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
@@ -17,13 +17,19 @@ sub doInventory {
my $inventory = $params{inventory};
my %displays = _getDisplays();
- foreach my $section (keys %displays ) {
- foreach my $entry (@{$displays{$section}}) {
- $inventory->addEntry(
- section => $section,
- entry => $entry,
- );
- }
+
+ foreach my $monitor (@{$displays{MONITORS}}) {
+ $inventory->addEntry(
+ section => 'MONITORS',
+ entry => $monitor,
+ );
+ }
+
+ foreach my $video (@{$displays{VIDEOS}}) {
+ $inventory->addEntry(
+ section => 'VIDEOS',
+ entry => $video,
+ );
}
}
================================================================
Commit: c96d7ed25462bc560a1ca60504515b8ba3096a86
https://github.com/fusinv/fusioninventory-agent/commit/c96d7ed25462bc560a1ca60504515b8ba3096a86
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
A resources/macos/system_profiler/10.6-intel-SPFireWireDataType
A resources/macos/system_profiler/10.6-intel-SPParallelATADataType
A resources/macos/system_profiler/10.6-intel-SPSerialATADataType
A resources/macos/system_profiler/10.6-intel-SPUSBDataType
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/resources/macos/system_profiler/10.6-intel-SPFireWireDataType b/resources/macos/system_profiler/10.6-intel-SPFireWireDataType
new file mode 100644
index 0000000..4a6629d
--- /dev/null
+++ b/resources/macos/system_profiler/10.6-intel-SPFireWireDataType
@@ -0,0 +1,6 @@
+FireWire:
+
+ FireWire Bus:
+
+ Maximum Speed: Up to 400 Mb/sec
+
diff --git a/resources/macos/system_profiler/10.6-intel-SPParallelATADataType b/resources/macos/system_profiler/10.6-intel-SPParallelATADataType
new file mode 100644
index 0000000..0999d1c
--- /dev/null
+++ b/resources/macos/system_profiler/10.6-intel-SPParallelATADataType
@@ -0,0 +1,38 @@
+ATA:
+
+ ATA Bus:
+
+ HL-DT-ST DVDRW GSA-S10N:
+
+ Capacity: 7,77 GB (7 771 521 024 bytes)
+ Model: HL-DT-ST DVDRW GSA-S10N
+ Revision: BP08
+ Serial Number: K0076RM5813
+ Removable Media: Yes
+ Detachable Drive: No
+ BSD Name: disk1
+ Protocol: ATAPI
+ Unit Number: 0
+ Socket Type: Internal
+ Low Power Polling: Yes
+ Power Off: Yes
+ Partition Map Type: APM (Apple Partition Map)
+ S.M.A.R.T. status: Not Supported
+ Volumes:
+ Capacity: 31 KB (30 720 bytes)
+ Media Type: DVD-ROM
+ Writable: No
+ BSD Name: disk1s1
+ Capacity: 1,03 GB (1 034 455 040 bytes)
+ Media Type: DVD-ROM
+ Writable: No
+ BSD Name: disk1s2
+ Mac OS X Install DVD:
+ Capacity: 6,74 GB (6 737 006 592 bytes)
+ Available: 84,9 MB (84 946 944 bytes)
+ Media Type: DVD-ROM
+ Writable: No
+ File System: HFS+
+ BSD Name: disk1s3
+ Mount Point: /Volumes/Mac OS X Install DVD
+
diff --git a/resources/macos/system_profiler/10.6-intel-SPSerialATADataType b/resources/macos/system_profiler/10.6-intel-SPSerialATADataType
new file mode 100644
index 0000000..f8b58bf
--- /dev/null
+++ b/resources/macos/system_profiler/10.6-intel-SPSerialATADataType
@@ -0,0 +1,36 @@
+Serial-ATA:
+
+ Intel ICH7-M AHCI:
+
+ Vendor: Intel
+ Product: ICH7-M AHCI
+ Link Speed: 1.5 Gigabit
+ Negotiated Link Speed: 1.5 Gigabit
+ Description: AHCI Version 1.10 Supported
+
+ FUJITSU MHY2120BH:
+
+ Capacity: 120,03 GB (120 034 123 776 bytes)
+ Model: FUJITSU MHY2120BH
+ Revision: 0081000D
+ Serial Number: K439T822NS6V
+ Native Command Queuing: Yes
+ Queue Depth: 32
+ Removable Media: No
+ Detachable Drive: No
+ BSD Name: disk0
+ Medium Type: Rotational
+ Partition Map Type: GPT (GUID Partition Table)
+ S.M.A.R.T. status: Verified
+ Volumes:
+ Capacity: 209,7 MB (209 715 200 bytes)
+ Writable: Yes
+ BSD Name: disk0s1
+ Macintosh HD:
+ Capacity: 119,69 GB (119 690 149 888 bytes)
+ Available: 94,9 GB (94 897 831 936 bytes)
+ Writable: Yes
+ File System: Journaled HFS+
+ BSD Name: disk0s2
+ Mount Point: /
+
diff --git a/resources/macos/system_profiler/10.6-intel-SPUSBDataType b/resources/macos/system_profiler/10.6-intel-SPUSBDataType
new file mode 100644
index 0000000..41e21a7
--- /dev/null
+++ b/resources/macos/system_profiler/10.6-intel-SPUSBDataType
@@ -0,0 +1,91 @@
+USB:
+
+ USB High-Speed Bus:
+
+ Host Controller Location: Built-in USB
+ Host Controller Driver: AppleUSBEHCI
+ PCI Device ID: 0x27cc
+ PCI Revision ID: 0x0002
+ PCI Vendor ID: 0x8086
+ Bus Number: 0xfd
+
+ Built-in iSight:
+
+ Product ID: 0x8501
+ Vendor ID: 0x05ac (Apple Inc.)
+ Version: 1.89
+ Speed: Up to 480 Mb/sec
+ Manufacturer: Micron
+ Location ID: 0xfd400000 / 2
+ Current Available (mA): 500
+ Current Required (mA): 100
+
+ USB Bus:
+
+ Host Controller Location: Built-in USB
+ Host Controller Driver: AppleUSBUHCI
+ PCI Device ID: 0x27cb
+ PCI Revision ID: 0x0002
+ PCI Vendor ID: 0x8086
+ Bus Number: 0x7d
+
+ Bluetooth USB Host Controller:
+
+ Product ID: 0x8205
+ Vendor ID: 0x05ac (Apple Inc.)
+ Version: 19.65
+ Speed: Up to 12 Mb/sec
+ Manufacturer: Apple Inc.
+ Location ID: 0x7d100000 / 2
+ Current Available (mA): 500
+ Current Required (mA): 0
+
+ USB Bus:
+
+ Host Controller Location: Built-in USB
+ Host Controller Driver: AppleUSBUHCI
+ PCI Device ID: 0x27c9
+ PCI Revision ID: 0x0002
+ PCI Vendor ID: 0x8086
+ Bus Number: 0x3d
+
+ USB Bus:
+
+ Host Controller Location: Built-in USB
+ Host Controller Driver: AppleUSBUHCI
+ PCI Device ID: 0x27c8
+ PCI Revision ID: 0x0002
+ PCI Vendor ID: 0x8086
+ Bus Number: 0x1d
+
+ Apple Internal Keyboard / Trackpad:
+
+ Product ID: 0x021b
+ Vendor ID: 0x05ac (Apple Inc.)
+ Version: 0.18
+ Speed: Up to 12 Mb/sec
+ Manufacturer: Apple Computer
+ Location ID: 0x1d200000 / 2
+ Current Available (mA): 500
+ Current Required (mA): 40
+
+ USB Bus:
+
+ Host Controller Location: Built-in USB
+ Host Controller Driver: AppleUSBUHCI
+ PCI Device ID: 0x27ca
+ PCI Revision ID: 0x0002
+ PCI Vendor ID: 0x8086
+ Bus Number: 0x5d
+
+ IR Receiver:
+
+ Product ID: 0x8240
+ Vendor ID: 0x05ac (Apple Inc.)
+ Version: 1.10
+ Speed: Up to 12 Mb/sec
+ Manufacturer: Apple Computer, Inc.
+ Location ID: 0x5d200000 / 2
+ Current Available (mA): 500
+ Current Required (mA): 100
+
================================================================
Commit: 139132ec9b218bf2cce1927a58abf81e7108eec9
https://github.com/fusinv/fusioninventory-agent/commit/139132ec9b218bf2cce1927a58abf81e7108eec9
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-25 (Sat, 25 Feb 2012)
Changed paths:
R resources/macos/system_profiler/10.6-intel-SPFireWireDataType
R resources/macos/system_profiler/10.6-intel-SPParallelATADataType
R resources/macos/system_profiler/10.6-intel-SPSerialATADataType
R resources/macos/system_profiler/10.6-intel-SPUSBDataType
Log Message:
-----------
not needed, they are just subsets
diff --git a/resources/macos/system_profiler/10.6-intel-SPFireWireDataType b/resources/macos/system_profiler/10.6-intel-SPFireWireDataType
deleted file mode 100644
index 4a6629d..0000000
--- a/resources/macos/system_profiler/10.6-intel-SPFireWireDataType
+++ /dev/null
@@ -1,6 +0,0 @@
-FireWire:
-
- FireWire Bus:
-
- Maximum Speed: Up to 400 Mb/sec
-
diff --git a/resources/macos/system_profiler/10.6-intel-SPParallelATADataType b/resources/macos/system_profiler/10.6-intel-SPParallelATADataType
deleted file mode 100644
index 0999d1c..0000000
--- a/resources/macos/system_profiler/10.6-intel-SPParallelATADataType
+++ /dev/null
@@ -1,38 +0,0 @@
-ATA:
-
- ATA Bus:
-
- HL-DT-ST DVDRW GSA-S10N:
-
- Capacity: 7,77 GB (7 771 521 024 bytes)
- Model: HL-DT-ST DVDRW GSA-S10N
- Revision: BP08
- Serial Number: K0076RM5813
- Removable Media: Yes
- Detachable Drive: No
- BSD Name: disk1
- Protocol: ATAPI
- Unit Number: 0
- Socket Type: Internal
- Low Power Polling: Yes
- Power Off: Yes
- Partition Map Type: APM (Apple Partition Map)
- S.M.A.R.T. status: Not Supported
- Volumes:
- Capacity: 31 KB (30 720 bytes)
- Media Type: DVD-ROM
- Writable: No
- BSD Name: disk1s1
- Capacity: 1,03 GB (1 034 455 040 bytes)
- Media Type: DVD-ROM
- Writable: No
- BSD Name: disk1s2
- Mac OS X Install DVD:
- Capacity: 6,74 GB (6 737 006 592 bytes)
- Available: 84,9 MB (84 946 944 bytes)
- Media Type: DVD-ROM
- Writable: No
- File System: HFS+
- BSD Name: disk1s3
- Mount Point: /Volumes/Mac OS X Install DVD
-
diff --git a/resources/macos/system_profiler/10.6-intel-SPSerialATADataType b/resources/macos/system_profiler/10.6-intel-SPSerialATADataType
deleted file mode 100644
index f8b58bf..0000000
--- a/resources/macos/system_profiler/10.6-intel-SPSerialATADataType
+++ /dev/null
@@ -1,36 +0,0 @@
-Serial-ATA:
-
- Intel ICH7-M AHCI:
-
- Vendor: Intel
- Product: ICH7-M AHCI
- Link Speed: 1.5 Gigabit
- Negotiated Link Speed: 1.5 Gigabit
- Description: AHCI Version 1.10 Supported
-
- FUJITSU MHY2120BH:
-
- Capacity: 120,03 GB (120 034 123 776 bytes)
- Model: FUJITSU MHY2120BH
- Revision: 0081000D
- Serial Number: K439T822NS6V
- Native Command Queuing: Yes
- Queue Depth: 32
- Removable Media: No
- Detachable Drive: No
- BSD Name: disk0
- Medium Type: Rotational
- Partition Map Type: GPT (GUID Partition Table)
- S.M.A.R.T. status: Verified
- Volumes:
- Capacity: 209,7 MB (209 715 200 bytes)
- Writable: Yes
- BSD Name: disk0s1
- Macintosh HD:
- Capacity: 119,69 GB (119 690 149 888 bytes)
- Available: 94,9 GB (94 897 831 936 bytes)
- Writable: Yes
- File System: Journaled HFS+
- BSD Name: disk0s2
- Mount Point: /
-
diff --git a/resources/macos/system_profiler/10.6-intel-SPUSBDataType b/resources/macos/system_profiler/10.6-intel-SPUSBDataType
deleted file mode 100644
index 41e21a7..0000000
--- a/resources/macos/system_profiler/10.6-intel-SPUSBDataType
+++ /dev/null
@@ -1,91 +0,0 @@
-USB:
-
- USB High-Speed Bus:
-
- Host Controller Location: Built-in USB
- Host Controller Driver: AppleUSBEHCI
- PCI Device ID: 0x27cc
- PCI Revision ID: 0x0002
- PCI Vendor ID: 0x8086
- Bus Number: 0xfd
-
- Built-in iSight:
-
- Product ID: 0x8501
- Vendor ID: 0x05ac (Apple Inc.)
- Version: 1.89
- Speed: Up to 480 Mb/sec
- Manufacturer: Micron
- Location ID: 0xfd400000 / 2
- Current Available (mA): 500
- Current Required (mA): 100
-
- USB Bus:
-
- Host Controller Location: Built-in USB
- Host Controller Driver: AppleUSBUHCI
- PCI Device ID: 0x27cb
- PCI Revision ID: 0x0002
- PCI Vendor ID: 0x8086
- Bus Number: 0x7d
-
- Bluetooth USB Host Controller:
-
- Product ID: 0x8205
- Vendor ID: 0x05ac (Apple Inc.)
- Version: 19.65
- Speed: Up to 12 Mb/sec
- Manufacturer: Apple Inc.
- Location ID: 0x7d100000 / 2
- Current Available (mA): 500
- Current Required (mA): 0
-
- USB Bus:
-
- Host Controller Location: Built-in USB
- Host Controller Driver: AppleUSBUHCI
- PCI Device ID: 0x27c9
- PCI Revision ID: 0x0002
- PCI Vendor ID: 0x8086
- Bus Number: 0x3d
-
- USB Bus:
-
- Host Controller Location: Built-in USB
- Host Controller Driver: AppleUSBUHCI
- PCI Device ID: 0x27c8
- PCI Revision ID: 0x0002
- PCI Vendor ID: 0x8086
- Bus Number: 0x1d
-
- Apple Internal Keyboard / Trackpad:
-
- Product ID: 0x021b
- Vendor ID: 0x05ac (Apple Inc.)
- Version: 0.18
- Speed: Up to 12 Mb/sec
- Manufacturer: Apple Computer
- Location ID: 0x1d200000 / 2
- Current Available (mA): 500
- Current Required (mA): 40
-
- USB Bus:
-
- Host Controller Location: Built-in USB
- Host Controller Driver: AppleUSBUHCI
- PCI Device ID: 0x27ca
- PCI Revision ID: 0x0002
- PCI Vendor ID: 0x8086
- Bus Number: 0x5d
-
- IR Receiver:
-
- Product ID: 0x8240
- Vendor ID: 0x05ac (Apple Inc.)
- Version: 1.10
- Speed: Up to 12 Mb/sec
- Manufacturer: Apple Computer, Inc.
- Location ID: 0x5d200000 / 2
- Current Available (mA): 500
- Current Required (mA): 100
-
================================================================
Commit: 95420b5f0b61a28daaaa4525ef4d2f94541d0345
https://github.com/fusinv/fusioninventory-agent/commit/95420b5f0b61a28daaaa4525ef4d2f94541d0345
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-26 (Sun, 26 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
M t/inventory/windows/printers.t
Log Message:
-----------
drop pseudo serial generated by windows
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
index 48e8e6d..447d600 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
@@ -159,6 +159,8 @@ sub _getUSBSerial {
$subKey->{'/ParentIdPrefix'} eq $prefix;
# got it
my $serial = $subKeyName;
+ # pseudo serial generated by windows
+ return if $serial =~ /&/;
$serial =~ s{/$}{};
return $serial;
}
diff --git a/t/inventory/windows/printers.t b/t/inventory/windows/printers.t
index 156549f..240f82c 100755
--- a/t/inventory/windows/printers.t
+++ b/t/inventory/windows/printers.t
@@ -16,13 +16,13 @@ use FusionInventory::Agent::Task::Inventory::Input::Win32::Printers;
my %tests = (
xppro1 => {
USB001 => [ '6&397bdcac&0', '49R8Ka' ],
- USB002 => [ '6&2ad9257f&0', '5&19d1ce61&0&2' ],
- USB003 => [ '6&1605722f&0', '5&2377f6ef&0&2' ],
+ USB002 => [ '6&2ad9257f&0', undef ],
+ USB003 => [ '6&1605722f&0', undef ],
},
xppro2 => {
USB001 => [ '6&1086615&0', 'J5J126789' ],
USB003 => [ '6&159b6df2&0', 'JV40VNJ' ],
- USB004 => [ '7&20bd29b5&0', '6&28e27c3d&0&0000' ],
+ USB004 => [ '7&20bd29b5&0', undef ],
},
7 => {
USB001 => [ '7&17e8a3c3&0', 'MY26K1K34C2L' ],
================================================================
Commit: 7d9eedd9ad8934c53ec6ee092cc4ed8a4ececb8a
https://github.com/fusinv/fusioninventory-agent/commit/7d9eedd9ad8934c53ec6ee092cc4ed8a4ececb8a
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-26 (Sun, 26 Feb 2012)
Changed paths:
M t/inventory/windows/printers.t
Log Message:
-----------
simplification, we don't care about the prefix
diff --git a/t/inventory/windows/printers.t b/t/inventory/windows/printers.t
index 240f82c..8199b06 100755
--- a/t/inventory/windows/printers.t
+++ b/t/inventory/windows/printers.t
@@ -15,23 +15,23 @@ use FusionInventory::Agent::Task::Inventory::Input::Win32::Printers;
my %tests = (
xppro1 => {
- USB001 => [ '6&397bdcac&0', '49R8Ka' ],
- USB002 => [ '6&2ad9257f&0', undef ],
- USB003 => [ '6&1605722f&0', undef ],
+ USB001 => '49R8Ka',
+ USB002 => undef,
+ USB003 => undef
},
xppro2 => {
- USB001 => [ '6&1086615&0', 'J5J126789' ],
- USB003 => [ '6&159b6df2&0', 'JV40VNJ' ],
- USB004 => [ '7&20bd29b5&0', undef ],
+ USB001 => 'J5J126789',
+ USB003 => 'JV40VNJ',
+ USB004 => undef,
},
7 => {
- USB001 => [ '7&17e8a3c3&0', 'MY26K1K34C2L' ],
+ USB001 => 'MY26K1K34C2L'
}
);
my $plan = 0;
foreach my $test (keys %tests) {
- $plan += 2 * scalar (keys %{$tests{$test}});
+ $plan += scalar (keys %{$tests{$test}});
}
plan tests => $plan;
@@ -42,8 +42,7 @@ foreach my $test (keys %tests) {
my $prefix = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBPrefix($printKey, $port);
my $serial = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBSerial($usbKey, $prefix);
- is($prefix, $tests{$test}->{$port}->[0], "prefix for printer $port");
- is($serial, $tests{$test}->{$port}->[1], "serial for printer $port");
+ is($serial, $tests{$test}->{$port}, "serial for printer $port");
}
}
================================================================
Commit: fc0c2d9a1df2fdfcc9f6b2756198c02677e2d1e4
https://github.com/fusinv/fusioninventory-agent/commit/fc0c2d9a1df2fdfcc9f6b2756198c02677e2d1e4
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-26 (Sun, 26 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Storages.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
Log Message:
-----------
document expected data structures
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Storages.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Storages.pm
index 8d148af..2fbbc13 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Storages.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Storages.pm
@@ -27,37 +27,34 @@ sub doInventory {
sub _getStorages {
my $infos = getSystemProfilerInfos(@_);
- # system profiler info is organized as
- # bus => {
- # controller => {
- # key1 => value1,
- # device => {
- # key1 => value1
- # subdevice => {
- # key1 => value1,
- # }
- # }
- # }
- # }
+ # system profiler data structure:
+ # bus
+ # └── controller
+ # ├── device
+ # │ ├── subdevice
+ # │ │ └── key:value
+ # │ └── key:value
+ # └── key:value
+
my @storages;
- foreach my $bus_name (qw/ATA SERIAL-ATA USB FireWire/) {
- my $bus = $infos->{$bus_name};
+ foreach my $busName (qw/ATA SERIAL-ATA USB FireWire/) {
+ my $bus = $infos->{$busName};
next unless $bus;
- foreach my $controller_name (keys %{$bus}) {
- my $controller = $bus->{$controller_name};
- foreach my $device_name (keys %{$controller}) {
- my $device = $controller->{$device_name};
+ foreach my $controllerName (keys %{$bus}) {
+ my $controller = $bus->{$controllerName};
+ foreach my $deviceName (keys %{$controller}) {
+ my $device = $controller->{$deviceName};
next unless ref $device eq 'HASH';
if (_isStorage($device)) {
push @storages,
- _getStorage($device, $device_name, $bus_name);
+ _getStorage($device, $deviceName, $busName);
} else {
- foreach my $subdevice_name (keys %{$device}) {
- my $subdevice = $device->{$subdevice_name};
+ foreach my $subdeviceName (keys %{$device}) {
+ my $subdevice = $device->{$subdeviceName};
next unless ref $subdevice eq 'HASH';
push @storages,
- _getStorage($subdevice, $subdevice_name, $bus_name)
+ _getStorage($subdevice, $subdeviceName, $busName)
if _isStorage($subdevice);
}
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
index 447d600..d7dec8f 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
@@ -124,20 +124,26 @@ sub _getUSBPrinterSerial {
return $serial;
}
+# find the ParentIdPrefix value for the printer matching given portname
sub _getUSBPrefix {
- my ($printKey, $portName) = @_;
-
- # find the printer entry matching given portname
- foreach my $printerKey (values %$printKey) {
- # look for a subkey with expected content
- foreach my $subKeyName (keys %$printerKey) {
- my $subKey = $printerKey->{$subKeyName};
+ my ($print, $portName) = @_;
+
+ # registry data structure:
+ # USBPRINT
+ # └── device
+ # └── subdevice
+ # └── Device Parameters
+ # └── PortName:value
+
+ foreach my $device (values %$print) {
+ foreach my $subdeviceName (keys %$device) {
+ my $subdevice = $device->{$subdeviceName};
next unless
- $subKey->{'Device Parameters/'} &&
- $subKey->{'Device Parameters/'}->{'/PortName'} &&
- $subKey->{'Device Parameters/'}->{'/PortName'} eq $portName;
+ $subdevice->{'Device Parameters/'} &&
+ $subdevice->{'Device Parameters/'}->{'/PortName'} &&
+ $subdevice->{'Device Parameters/'}->{'/PortName'} eq $portName;
# got it
- my $prefix = $subKeyName;
+ my $prefix = $subdeviceName;
$prefix =~ s{&$portName/$}{};
return $prefix;
};
@@ -146,19 +152,24 @@ sub _getUSBPrefix {
return;
}
+# find the key name for the device matching given parentIdPrefix
sub _getUSBSerial {
- my ($usbKey, $prefix) = @_;
+ my ($usb, $prefix) = @_;
+
+ # registry data structure:
+ # USB
+ # └── device
+ # └── subdevice
+ # └── ParentIdPrefix:value
- # find the device entry matching given container Id
- foreach my $deviceKey (values %$usbKey) {
- # look for a subkey with expected content
- foreach my $subKeyName (keys %$deviceKey) {
- my $subKey = $deviceKey->{$subKeyName};
+ foreach my $device (values %$usb) {
+ foreach my $subdeviceName (keys %$device) {
+ my $subdevice = $device->{$subdeviceName};
next unless
- $subKey->{'/ParentIdPrefix'} &&
- $subKey->{'/ParentIdPrefix'} eq $prefix;
+ $subdevice->{'/ParentIdPrefix'} &&
+ $subdevice->{'/ParentIdPrefix'} eq $prefix;
# got it
- my $serial = $subKeyName;
+ my $serial = $subdeviceName;
# pseudo serial generated by windows
return if $serial =~ /&/;
$serial =~ s{/$}{};
================================================================
Commit: c5db7ebed725f76f6f3d9cdcc1bdc6b845f1667c
https://github.com/fusinv/fusioninventory-agent/commit/c5db7ebed725f76f6f3d9cdcc1bdc6b845f1667c
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-26 (Sun, 26 Feb 2012)
Changed paths:
M Changes
Log Message:
-----------
reordering: important changes first
diff --git a/Changes b/Changes
index 1a8eec8..51d207b 100644
--- a/Changes
+++ b/Changes
@@ -3,12 +3,7 @@ Revision history for FusionInventory agent
2.2.0
Major changes:
-* support for OCS account info have been dropped: the agent doesn't store
- arbitrary informations locally anymore
-* support for OCS network discovery and software deployment features within
- inventory task have been removed, they are dedicated tasks for those purposes
-* fusioninventory-agent-config executable has been dropped, in favor of better
- documentation
+* large speed improvement: up to 150% for a local inventory
* better multitasking support:
- the agent use fork() to run task if needed, instead of running a new process
from scratch, avoiding the need to use a temporary file to transmit
@@ -23,13 +18,20 @@ Major changes:
certificate checking is disabled
- validation is now performed by SSL library, and honours alternative subject
names, and other subtilities
-* large speed improvement: up to 150% for a local inventory
* large cleanup of values returned from inventory:
- unknown values are filtered out
- strings are trimmed for trailing spaces
- - irrelevant values, such as controllers type and manufacturer on AIX and
- HPUX, are filtered out
-* options handling:
+ - irrelevant values, such as windows internal USB serial number, or
+ controllers type and manufacturer on AIX and HPUX, are filtered out
+* installation procedure automatically setup configuration and data directories
+ locations in executable, there is no need to manually configure them anymore
+* removal of useless features:
+ - support for OCS account info have been dropped, the agent doesn't store
+ arbitrary informations locally anymore
+ - support for OCS network discovery and software deployment features within
+ inventory task have been removed, we have better alternatives
+ - useless Ping task has been dropped
+* cleanup of available options:
- deprecated --nosoft and --nosoftware options have been removed
- --devlib, --share-dir, --basevardir and --realm options have been
deprecated, as their values are now computed automatically at installation
@@ -41,11 +43,10 @@ Major changes:
- --debug option can be specified multiple times, for additional verbosity
- --no-inventory, --no-ocsdeploy, --no-snmpquery, --no-netdiscovery options
have been deprecated in favor of a generic --no-task option
+* fusioninventory-agent-config executable has been dropped, in favor of better
+ documentation
* documentation has been reviewed for consistency in various places where it
appears (--help output, man page, configuration file)
-* installation procedure automatically setup configuration and data directories
- locations in executable, there is no need to manually configure them anymore
-* useless Ping task has been dropped
* XML::TreePP perl module is now used instead of XML::Simple, reducing native
perl modules dependencies
* OcsDeploy task is now deprecated. Please continue to use the 2.1.x agent is
================================================================
Commit: a6c9f8b4c3ade2021895df2c1f241eb84cbb58bf
https://github.com/fusinv/fusioninventory-agent/commit/a6c9f8b4c3ade2021895df2c1f241eb84cbb58bf
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-28 (Tue, 28 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
M lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
Log Message:
-----------
use MSN for motherboard serial, and drop any usage of BASEBOARDSERIAL
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
index a3d02be..5ec74eb 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
@@ -74,9 +74,10 @@ sub doInventory {
SerialNumber Product Manufacturer
/ ]
)) {
- $bios->{BASEBOARDSERIAL} = $object->{SerialNumber};
- $bios->{SSN} = $object->{SerialNumber} unless $bios->{SSN};
+ $bios->{MSN} = $object->{SerialNumber};
$bios->{MMODEL} = $object->{Product};
+ $bios->{SSN} = $object->{SerialNumber}
+ unless $bios->{SSN};
$bios->{SMANUFACTURER} = $object->{Manufacturer}
unless $bios->{SMANUFACTURER};
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
index ab36038..ecabd02 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
@@ -534,8 +534,6 @@ Motherboard model
=item ENCLOSURESERIAL
-=item BASEBOARDSERIAL
-
=item BIOSSERIAL
The optional asset tag for this machine.
================================================================
Commit: 805d256a483a72e018ec56718c00372c7dcfb5f3
https://github.com/fusinv/fusioninventory-agent/commit/805d256a483a72e018ec56718c00372c7dcfb5f3
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-28 (Tue, 28 Feb 2012)
Changed paths:
A resources/win32/README
A resources/win32/wmi/xppro2-CIM_LogicalDevice.wmi
M t/inventory/windows/usb.t
Log Message:
-----------
add windows XP wmi output
diff --git a/resources/win32/README b/resources/win32/README
new file mode 100644
index 0000000..92b1517
--- /dev/null
+++ b/resources/win32/README
@@ -0,0 +1,6 @@
+Windows specific command and file samples
+
+wmi: wmi queries results
+- *-CIM_LogicalDevice: wmic path CIM_LogicalDevice get /Format:list
+
+registry: registry exports
diff --git a/resources/win32/wmi/xppro2-CIM_LogicalDevice.wmi b/resources/win32/wmi/xppro2-CIM_LogicalDevice.wmi
new file mode 100644
index 0000000..010bbba
Binary files /dev/null and b/resources/win32/wmi/xppro2-CIM_LogicalDevice.wmi differ
diff --git a/t/inventory/windows/usb.t b/t/inventory/windows/usb.t
index 6cc447f..f8a5147 100755
--- a/t/inventory/windows/usb.t
+++ b/t/inventory/windows/usb.t
@@ -48,6 +48,41 @@ my %tests = (
VENDORID => '046D',
PRODUCTID => 'C30A'
},
+ ],
+ xppro2 => [
+ {
+ NAME => "Concentrador USB genérico",
+ VENDORID => '046A',
+ PRODUCTID => '0009'
+ },
+ {
+ NAME => 'Dispositivo compuesto USB',
+ VENDORID => '046A',
+ PRODUCTID => '0019'
+ },
+ {
+ NAME => 'SmartTerminal XX44',
+ VENDORID => '046A',
+ PRODUCTID => '002D'
+ },
+ {
+ NAME => 'Compatibilidad con impresoras USB',
+ SERIAL => 'JV40VNJ',
+ VENDORID => '03F0',
+ PRODUCTID => '3A17'
+ },
+ {
+ NAME => 'Compatibilidad con impresoras USB',
+ SERIAL => 'J5J126789',
+ VENDORID => '04F9',
+ PRODUCTID => '002B'
+ },
+ {
+ NAME => 'Dispositivo compuesto USB',
+ SERIAL => '00CNBW86S20B',
+ VENDORID => '03F0',
+ PRODUCTID => '3817'
+ }
]
);
================================================================
Commit: 45ec7d311ed32d8662cf595163020b883f54fe9e
https://github.com/fusinv/fusioninventory-agent/commit/45ec7d311ed32d8662cf595163020b883f54fe9e
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-02-28 (Tue, 28 Feb 2012)
Changed paths:
M Changes
Log Message:
-----------
Merge branch '2.1.x' into 2.2.x
diff --git a/Changes b/Changes
index 1a8eec8..3cabc6a 100644
--- a/Changes
+++ b/Changes
@@ -56,7 +56,41 @@ Minor changes:
* Linux: Use /sbin/ip to get the interface IP addresses (#854)
* HPUX: don't report unoccupied memory slots
-2.1.12 Wed, 14 Dec 2011 13:06:44 +0100
+2.1.14 Wed, 22 Feb 2012 14:56:51 -0000
+
+LINUX
+ ✔ Detected OS is "RedHat" for CentOS servers if lsb_release not available
+ commit:d3a252
+ http://forge.fusioninventory.org/issues/1193
+ thanks: Jonathan Clarke
+
+MACOSX
+ ✔ no-software option doesn't work as advertised
+ commit:18dfaf
+ http://forge.fusioninventory.org/issues/1476
+ thanks: Ronan Mejecaze
+ ✔ syntax error in Video module
+ thanks: Walid Nouh
+
+WINDOWS
+ ✔ No 2007 Microsoft Office system into XML
+ commit:39f3c7
+ http://forge.fusioninventory.org/issues/1065
+ thanks: Walid Nouh, Xavier Caillaud, jerome slayer
+ ✔ On Windows Vista Office 2007 is not correctly gathered
+ commit:39f3c7
+ http://forge.fusioninventory.org/issues/1425
+ thanks: Walid Nouh, Xavier Caillaud
+ ✔ VM System incorrect
+ commit:259996
+ http://forge.fusioninventory.org/issues/1436
+ thanks: Mario Gzuk
+ ✔ Inventory Internet Explorer when it's not present in Add/remove programs
+ commit:39f3c7
+ http://forge.fusioninventory.org/issues/1441
+ thanks: Walid Nouh, Xavier Caillaud, jerome slayer
+
+2.1.13 Wed, 14 Dec 2011 13:06:44 +0100
TEST-SUITE
✔ 2.1.10 Test suite fails
================================================================
Commit: 47588d3ef75794db7fcde27b07de6aae3e1a3ba9
https://github.com/fusinv/fusioninventory-agent/commit/47588d3ef75794db7fcde27b07de6aae3e1a3ba9
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-28 (Tue, 28 Feb 2012)
Changed paths:
M Changes
M etc/agent.cfg
M fusioninventory-agent
M lib/FusionInventory/Agent/Task/Inventory.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Environment.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Environment.pm
Log Message:
-----------
add --no-environment option
diff --git a/Changes b/Changes
index 51d207b..ecdc1c9 100644
--- a/Changes
+++ b/Changes
@@ -43,6 +43,7 @@ Major changes:
- --debug option can be specified multiple times, for additional verbosity
- --no-inventory, --no-ocsdeploy, --no-snmpquery, --no-netdiscovery options
have been deprecated in favor of a generic --no-task option
+ - --no-environment allows to not list environment variables in inventory
* fusioninventory-agent-config executable has been dropped, in favor of better
documentation
* documentation has been reviewed for consistency in various places where it
diff --git a/etc/agent.cfg b/etc/agent.cfg
index f2a04e7..e534797 100644
--- a/etc/agent.cfg
+++ b/etc/agent.cfg
@@ -43,6 +43,8 @@ lazy = 0
no-printer = 0
# do not list installed software
no-software = 0
+# do not list environment variables
+no-environment = 0
# allow to scan use home directories
scan-homedirs = 0
# save the inventory as HTML
diff --git a/fusioninventory-agent b/fusioninventory-agent
index bc9dd88..9ea2ba2 100755
--- a/fusioninventory-agent
+++ b/fusioninventory-agent
@@ -39,6 +39,7 @@ GetOptions(
'no-printer',
'no-httpd',
'no-software',
+ 'no-environment',
'no-ssl-check',
'no-task=s',
'no-p2p',
@@ -141,6 +142,7 @@ B<fusioninventory-agent> [options] [--server server|--local directory|--sdout]
Inventory task specific options
--no-printer do not list local printers (false)
--no-software do not list installed software (false)
+ --no-environment do not list environment variables (false)
--scan-homedirs allow to scan use home directories (false)
--html save the inventory as HTML (false)
-f --force always send data to server (false)
@@ -365,6 +367,10 @@ Do not list local printers in inventory.
Do not list installed software in inventory.
+=item B<--no-environment>
+
+Do not list environment variables in inventory.
+
=item B<--scan-homedirs>
Allow the agent to scan home directories for virtual machines.
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index 51abc38..3a1da64 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -154,12 +154,13 @@ sub _initModulesList {
logger => $logger,
timeout => $config->{'backend-collect-timeout'},
params => {
- datadir => $self->{datadir},
- logger => $self->{logger},
- registry => $self->{registry},
- no_software => $self->{config}->{'no-software'},
- no_printer => $self->{config}->{'no-printer'},
- scan_homedirs => $self->{config}->{'scan-homedirs'},
+ datadir => $self->{datadir},
+ logger => $self->{logger},
+ registry => $self->{registry},
+ no_software => $self->{config}->{'no-software'},
+ no_printer => $self->{config}->{'no-printer'},
+ no_environment => $self->{config}->{'no-environment'},
+ scan_homedirs => $self->{config}->{'scan-homedirs'},
}
);
if (!$enabled) {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Environment.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Environment.pm
index e753df8..dce2e6d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Environment.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Environment.pm
@@ -8,8 +8,12 @@ use warnings;
use FusionInventory::Agent::Tools;
sub isEnabled {
- # We use WMI for Windows because of charset issue
- return $OSNAME ne 'MSWin32';
+ my (%params) = @_;
+
+ return
+ # We use WMI for Windows because of charset issue
+ $OSNAME ne 'MSWin32' &&
+ !$params{no_environment};
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Environment.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Environment.pm
index 0cc4eab..2aa5651 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Environment.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Environment.pm
@@ -6,7 +6,9 @@ use warnings;
use FusionInventory::Agent::Tools::Win32;
sub isEnabled {
- return 1;
+ my (%params) = @_;
+
+ return !$params{no_environment};
}
sub doInventory {
================================================================
Commit: 36e375ca7b9f54f4081b1d45be2afaad10afed1b
https://github.com/fusinv/fusioninventory-agent/commit/36e375ca7b9f54f4081b1d45be2afaad10afed1b
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-29 (Wed, 29 Feb 2012)
Changed paths:
M Changes
M etc/agent.cfg
M fusioninventory-agent
M lib/FusionInventory/Agent/Config.pm
M lib/FusionInventory/Agent/Task/Inventory.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Softwares.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Environment.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Printers.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Softwares.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Printers.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Softwares.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Softwares.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Environment.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
Log Message:
-----------
more generic option
obsolete --no-{printer,softwate,environment} in favor of more generic
--no-category option
diff --git a/Changes b/Changes
index ecdc1c9..73837f2 100644
--- a/Changes
+++ b/Changes
@@ -43,7 +43,8 @@ Major changes:
- --debug option can be specified multiple times, for additional verbosity
- --no-inventory, --no-ocsdeploy, --no-snmpquery, --no-netdiscovery options
have been deprecated in favor of a generic --no-task option
- - --no-environment allows to not list environment variables in inventory
+ - --no-software, --no-printer options have been deprecated in favor of a
+ generic --no-category option, and 'environment' value support has been added
* fusioninventory-agent-config executable has been dropped, in favor of better
documentation
* documentation has been reviewed for consistency in various places where it
diff --git a/etc/agent.cfg b/etc/agent.cfg
index e534797..6167899 100644
--- a/etc/agent.cfg
+++ b/etc/agent.cfg
@@ -40,11 +40,7 @@ lazy = 0
#
# do not list local printers
-no-printer = 0
-# do not list installed software
-no-software = 0
-# do not list environment variables
-no-environment = 0
+# no-category = printer
# allow to scan use home directories
scan-homedirs = 0
# save the inventory as HTML
diff --git a/fusioninventory-agent b/fusioninventory-agent
index 9ea2ba2..52e6c53 100755
--- a/fusioninventory-agent
+++ b/fusioninventory-agent
@@ -36,10 +36,8 @@ GetOptions(
'logger=s',
'logfile=s',
'logfile-maxsize=i',
- 'no-printer',
+ 'no-category=s',
'no-httpd',
- 'no-software',
- 'no-environment',
'no-ssl-check',
'no-task=s',
'no-p2p',
@@ -63,6 +61,8 @@ GetOptions(
'no-wakeonlan',
'no-snmpquery',
'no-netdiscovery',
+ 'no-printer',
+ 'no-software',
'rpc-trust-localhost',
'rpc-port',
'rpc-ip',
@@ -140,9 +140,7 @@ B<fusioninventory-agent> [options] [--server server|--local directory|--sdout]
--no-task=TASK do not run given task
Inventory task specific options
- --no-printer do not list local printers (false)
- --no-software do not list installed software (false)
- --no-environment do not list environment variables (false)
+ --no-category=CATEGORY do not list given category items
--scan-homedirs allow to scan use home directories (false)
--html save the inventory as HTML (false)
-f --force always send data to server (false)
@@ -359,17 +357,9 @@ List available tasks and exit
=over
-=item B<--no-printer>
-
-Do not list local printers in inventory.
-
-=item B<--no-software>
-
-Do not list installed software in inventory.
-
-=item B<--no-environment>
+=item B<--no-category>=I<CATEGORY>
-Do not list environment variables in inventory.
+Do not list given category items in inventory.
=item B<--scan-homedirs>
diff --git a/lib/FusionInventory/Agent/Config.pm b/lib/FusionInventory/Agent/Config.pm
index ac07bc3..74afddc 100644
--- a/lib/FusionInventory/Agent/Config.pm
+++ b/lib/FusionInventory/Agent/Config.pm
@@ -67,6 +67,14 @@ my $deprecated = {
message => 'use --no-task ocsdeploy option instead',
new => { 'no-task' => 'ocsdeploy' }
},
+ 'no-printer' => {
+ message => 'use --no-category printer option instead',
+ new => { 'no-category' => 'printer' }
+ },
+ 'no-software' => {
+ message => 'use --no-category software option instead',
+ new => { 'no-category' => 'software' }
+ },
};
sub new {
@@ -216,6 +224,8 @@ sub _checkContent {
$self->{server} = [ split(/,/, $self->{server}) ] if $self->{server};
$self->{'no-task'} = [ split(/,/, $self->{'no-task'}) ]
if $self->{'no-task'};
+ $self->{'no-category'} = [ split(/,/, $self->{'no-category'}) ]
+ if $self->{'no-category'};
# files location
$self->{'ca-cert-file'} =
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index 3a1da64..0e25fd0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -60,8 +60,10 @@ sub run {
);
}
- $self->_initModulesList();
- $self->_feedInventory($inventory);
+ my %disabled = map { $_ => 1 } @{$self->{config}->{'no-category'}};
+
+ $self->_initModulesList(\%disabled);
+ $self->_feedInventory($inventory, \%disabled);
if ($self->{target}->isa('FusionInventory::Agent::Target::Stdout')) {
$self->_printInventory(
@@ -119,7 +121,7 @@ sub run {
}
sub _initModulesList {
- my ($self) = @_;
+ my ($self, $disabled) = @_;
my $logger = $self->{logger};
my $config = $self->{config};
@@ -154,13 +156,11 @@ sub _initModulesList {
logger => $logger,
timeout => $config->{'backend-collect-timeout'},
params => {
- datadir => $self->{datadir},
- logger => $self->{logger},
- registry => $self->{registry},
- no_software => $self->{config}->{'no-software'},
- no_printer => $self->{config}->{'no-printer'},
- no_environment => $self->{config}->{'no-environment'},
- scan_homedirs => $self->{config}->{'scan-homedirs'},
+ no_category => $disabled,
+ datadir => $self->{datadir},
+ logger => $self->{logger},
+ registry => $self->{registry},
+ scan_homedirs => $self->{config}->{'scan-homedirs'},
}
);
if (!$enabled) {
@@ -206,7 +206,7 @@ sub _initModulesList {
}
sub _runModule {
- my ($self, $module, $inventory) = @_;
+ my ($self, $module, $inventory, $disabled) = @_;
my $logger = $self->{logger};
@@ -225,7 +225,7 @@ sub _runModule {
die "circular dependency between $module and $other_module"
if $self->{modules}->{$other_module}->{used};
- $self->_runModule($other_module, $inventory);
+ $self->_runModule($other_module, $inventory, $disabled);
}
$logger->debug("Running $module");
@@ -238,10 +238,9 @@ sub _runModule {
params => {
datadir => $self->{datadir},
inventory => $inventory,
+ no_category => $disabled,
logger => $self->{logger},
registry => $self->{registry},
- no_software => $self->{config}->{no_software},
- no_printer => $self->{config}->{no_printer},
scan_homedirs => $self->{config}->{'scan-homedirs'},
}
);
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Softwares.pm
index 0597530..430555d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Softwares.pm
@@ -9,7 +9,7 @@ sub isEnabled {
my (%params) = @_;
return
- !$params{no_software} &&
+ !$params{no_category} &&
canRun('lslpp');
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
index 9376672..1bc71c0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
@@ -9,7 +9,7 @@ sub isEnabled {
my (%params) = @_;
return
- !$params{no_software} &&
+ !$params{no_category}->{software} &&
canRun('pkg_info');
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Environment.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Environment.pm
index dce2e6d..8df1b17 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Environment.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Environment.pm
@@ -13,7 +13,7 @@ sub isEnabled {
return
# We use WMI for Windows because of charset issue
$OSNAME ne 'MSWin32' &&
- !$params{no_environment};
+ !$params{no_category}->{environment};
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Printers.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Printers.pm
index 272964c..e9e4677 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Printers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Printers.pm
@@ -13,7 +13,7 @@ sub isEnabled {
return
# we use system profiler on MacOS
$OSNAME ne 'darwin' &&
- !$params{no_printer} &&
+ !$params{no_category}->{printer} &&
canLoad("Net::CUPS") &&
$Net::CUPS::VERSION >= 0.60;
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Softwares.pm
index 3d20576..9ec009e 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Softwares.pm
@@ -9,7 +9,7 @@ sub isEnabled {
my (%params) = @_;
return
- !$params{no_software} &&
+ !$params{no_category}->{software} &&
canRun('swlist');
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares.pm
index 2bfae86..d9db905 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares.pm
@@ -8,7 +8,7 @@ use FusionInventory::Agent::Tools;
sub isEnabled {
my (%params) = @_;
- return !$params{no_software};
+ return !$params{no_category}->{software};
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Printers.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Printers.pm
index f1649f2..1c2de9f 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Printers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Printers.pm
@@ -9,7 +9,7 @@ sub isEnabled {
my (%params) = @_;
return
- !$params{no_printer} &&
+ !$params{no_category}->{printer} &&
-r '/usr/sbin/system_profiler' &&
canLoad("Mac::SysProfile");
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Softwares.pm
index 3a3a5fc..917e901 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Softwares.pm
@@ -9,7 +9,7 @@ sub isEnabled {
my (%params) = @_;
return
- !$params{no_software} &&
+ !$params{no_category}->{software} &&
-r '/usr/sbin/system_profiler' &&
canLoad("Mac::SysProfile");
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Softwares.pm
index 4d63288..d2274ed 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Softwares.pm
@@ -9,7 +9,7 @@ sub isEnabled {
my (%params) = @_;
return
- !$params{no_software} &&
+ !$params{no_category}->{software} &&
canRun('pkginfo');
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Environment.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Environment.pm
index 2aa5651..93e02b4 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Environment.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Environment.pm
@@ -8,7 +8,7 @@ use FusionInventory::Agent::Tools::Win32;
sub isEnabled {
my (%params) = @_;
- return !$params{no_environment};
+ return !$params{no_category}->{environment};
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
index d7dec8f..d74b45b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
@@ -44,7 +44,8 @@ my @errStatus = (
sub isEnabled {
my (%params) = @_;
- return !$params{no_printer};
+
+ return !$params{no_category}->{printer};
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index 2c2272f..6b11a72 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -20,7 +20,7 @@ my $seen;
sub isEnabled {
my (%params) = @_;
- return !$params{no_software};
+ return !$params{no_category}->{software};
}
sub doInventory {
================================================================
Commit: 9ba42420b3ce8455cd5d115dd93880824b63725a
https://github.com/fusinv/fusioninventory-agent/commit/9ba42420b3ce8455cd5d115dd93880824b63725a
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-29 (Wed, 29 Feb 2012)
Changed paths:
M t/apps/agent.t
Log Message:
-----------
multiple changes:
- test environment variable exclusion
- use new option syntax
- use an already-existing environement variable to test its value
- rework tests description for consistency
diff --git a/t/apps/agent.t b/t/apps/agent.t
index 51f0fa7..ec53755 100755
--- a/t/apps/agent.t
+++ b/t/apps/agent.t
@@ -10,7 +10,7 @@ use XML::TreePP;
use FusionInventory::Agent::Tools;
-use Test::More tests => 32;
+use Test::More tests => 37;
my ($out, $err, $rc);
@@ -42,10 +42,12 @@ like(
);
is($out, '', 'no target stdin');
+my $base_options = "--stdout --no-task ocsdeploy,wakeonlan,snmpquery,netdiscovery";
+
my $content;
# first inventory
($out, $err, $rc) = run_agent(
- "--stdout --no-ocsdeploy --no-wakeonlan --no-snmpquery --no-netdiscovery --no-printer"
+ "$base_options --no-category printer"
);
ok($rc == 0, 'exit status');
@@ -70,7 +72,7 @@ ok(
# second inventory, without software
($out, $err, $rc) = run_agent(
- "--stdout --no-ocsdeploy --no-wakeonlan --no-snmpquery --no-netdiscovery --no-printer --no-software"
+ "$base_options --no-category printer,software"
);
ok($rc == 0, 'exit status');
@@ -109,7 +111,7 @@ print $file <<EOF;
EOF
close($file);
($out, $err, $rc) = run_agent(
- "--stdout --no-ocsdeploy --no-wakeonlan --no-snmpquery --no-netdiscovery --no-printer --no-software --additional-content $file"
+ "$base_options --no-category printer,software --additional-content $file"
);
ok($rc == 0, 'exit status');
@@ -129,7 +131,7 @@ ok(
ok(
ref $content->{REQUEST}->{CONTENT}->{SOFTWARES} eq 'HASH',
- 'software list has only one element'
+ 'inventory has expected software list'
);
ok(
@@ -143,11 +145,10 @@ ok(
'inventory has environment variables'
);
-# create inventory targets
-$ENV{FOO} = 'bar';
+my $path = $ENV{PATH};
($out, $err, $rc) = run_agent(
- "--stdout --no-ocsdeploy --no-wakeonlan --no-snmpquery --no-netdiscovery --no-printer --no-software"
+ "$base_options --no-category printer,software"
);
ok($rc == 0, 'exit status');
@@ -162,7 +163,7 @@ ok($content, 'output is valid XML');
ok(
!exists $content->{REQUEST}->{CONTENT}->{SOFTWARES},
- "output doesn't have any software"
+ "inventory doesn't have any software"
);
ok(
@@ -170,16 +171,37 @@ ok(
'inventory has environment variables'
);
-SKIP: {
-skip '$ENV not set by IPC::Run on Windows', 1 if $OSNAME eq 'MSWin32';
ok(
(any
- { $_->{KEY} eq 'FOO' && $_->{VAL} eq 'bar' }
+ { $_->{KEY} eq 'PATH' && $_->{VAL} eq $path }
@{$content->{REQUEST}->{CONTENT}->{ENVS}}
),
- 'expected environment variable'
+ 'inventory has expected environment variable value'
+);
+
+($out, $err, $rc) = run_agent(
+ "$base_options --no-category printer,software,environment"
+);
+ok($rc == 0, 'exit status');
+
+like(
+ $out,
+ qr/^<\?xml version="1.0" encoding="UTF-8" \?>/,
+ 'output has correct encoding'
+);
+
+$content = XML::TreePP->new()->parse($out);
+ok($content, 'output is valid XML');
+
+ok(
+ !exists $content->{REQUEST}->{CONTENT}->{SOFTWARES},
+ "inventory doesn't have any software"
+);
+
+ok(
+ !exists $content->{REQUEST}->{CONTENT}->{ENVS},
+ "inventory doesn't have any environment variables"
);
-}
sub run_agent {
my ($args) = @_;
================================================================
Commit: 7a93c8d4a71a9beec5e9b556eccaccf9831480e1
https://github.com/fusinv/fusioninventory-agent/commit/7a93c8d4a71a9beec5e9b556eccaccf9831480e1
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-29 (Wed, 29 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
M lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
Log Message:
-----------
add os installation date
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
index 6e7ce84..2795421 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
@@ -6,6 +6,7 @@ use integer;
use English qw(-no_match_vars);
+use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Hostname;
use FusionInventory::Agent::Tools::Win32;
@@ -32,21 +33,28 @@ sub doInventory {
path => 'HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/lanmanserver/Parameters/srvcomment',
logger => $logger
));
+ my $installDate = getFormatedLocalTime(hex2dec(
+ encodeFromRegistry(getRegistryValue(
+ path => 'HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/InstallDate',
+ logger => $logger
+ ))
+ ));
$object->{TotalSwapSpaceSize} = int($object->{TotalSwapSpaceSize} / (1024 * 1024))
if $object->{TotalSwapSpaceSize};
$inventory->setHardware({
- WINLANG => $object->{OSLanguage},
- OSNAME => $object->{Caption},
- OSVERSION => $object->{Version},
- WINPRODKEY => $key,
- WINPRODID => $object->{SerialNumber},
- WINCOMPANY => $object->{Organization},
- WINOWNER => $object->{RegistredUser},
- OSCOMMENTS => $object->{CSDVersion},
- SWAP => $object->{TotalSwapSpaceSize},
- DESCRIPTION => $description,
+ WINLANG => $object->{OSLanguage},
+ OSNAME => $object->{Caption},
+ OSVERSION => $object->{Version},
+ WINPRODKEY => $key,
+ WINPRODID => $object->{SerialNumber},
+ WINCOMPANY => $object->{Organization},
+ WINOWNER => $object->{RegistredUser},
+ OSCOMMENTS => $object->{CSDVersion},
+ SWAP => $object->{TotalSwapSpaceSize},
+ DESCRIPTION => $description,
+ OSINSTALLDATE => $installDate
});
$inventory->setOperatingSystem({
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
index ab36038..8670277 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
@@ -242,7 +242,7 @@ sub setHardware {
PROCESSORT NAME PROCESSORS SWAP ETIME TYPE OSNAME IPADDR WORKGROUP
DESCRIPTION MEMORY UUID DNS LASTLOGGEDUSER USERDOMAIN
DATELASTLOGGEDUSER DEFAULTGATEWAY VMSYSTEM WINOWNER WINPRODID
- WINPRODKEY WINCOMPANY WINLANG CHASSIS_TYPE/) {
+ WINPRODKEY WINCOMPANY WINLANG CHASSIS_TYPE OSINSTALLDATE/) {
# WINLANG: Windows Language, see MSDN Win32_OperatingSystem documentation
if (exists $args->{$key}) {
my $string = getSanitizedString($args->{$key});
================================================================
Commit: 6a76ddad4c078568c2a19f72fbc50055153e977f
https://github.com/fusinv/fusioninventory-agent/commit/6a76ddad4c078568c2a19f72fbc50055153e977f
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-29 (Wed, 29 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
Log Message:
-----------
add Ipv6 attributes
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
index 8670277..474cc08 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
@@ -32,7 +32,7 @@ my %fields = (
NETWORKS => [ qw/DESCRIPTION DRIVER IPADDRESS IPADDRESS6 IPDHCP IPGATEWAY
IPMASK IPSUBNET MACADDR MTU PCISLOT PNPDEVICEID STATUS
TYPE VIRTUALDEV SLAVES SPEED MANAGEMENT BSSID SSID WWN
- MANUFACTURER FIRMWARE MODEL/ ],
+ MANUFACTURER FIRMWARE MODEL IPMASK6 IPSUBNET6/ ],
PORTS => [ qw/CAPTION DESCRIPTION NAME TYPE/ ],
PROCESSES => [ qw/USER PID CPUUSAGE MEM VIRTUALMEMORY TTY STARTED CMD/ ],
REGISTRY => [ qw/NAME REGVALUE HIVE/ ],
================================================================
Commit: 4dcdaca0b0ca630720b1268b85ea8639e107a06f
https://github.com/fusinv/fusioninventory-agent/commit/4dcdaca0b0ca630720b1268b85ea8639e107a06f
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-29 (Wed, 29 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
Log Message:
-----------
alphabetical order sort
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
index 474cc08..2362ae3 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
@@ -29,10 +29,11 @@ my %fields = (
MODEMS => [ qw/DESCRIPTION NAME/ ],
MONITORS => [ qw/BASE64 CAPTION DESCRIPTION MANUFACTURER SERIAL
UUENCODE/ ],
- NETWORKS => [ qw/DESCRIPTION DRIVER IPADDRESS IPADDRESS6 IPDHCP IPGATEWAY
- IPMASK IPSUBNET MACADDR MTU PCISLOT PNPDEVICEID STATUS
- TYPE VIRTUALDEV SLAVES SPEED MANAGEMENT BSSID SSID WWN
- MANUFACTURER FIRMWARE MODEL IPMASK6 IPSUBNET6/ ],
+ NETWORKS => [ qw/BSSID DESCRIPTION DRIVER FIRMWARE IPADDRESS IPADDRESS6
+ IPDHCP IPGATEWAY IPMASK IPMASK6 IPSUBNET IPSUBNET6
+ MANAGEMENT MANUFACTURER MACADDR MODEL MTU PCISLOT
+ PNPDEVICEID STATUS SLAVES SPEED SSID TYPE VIRTUALDEV
+ WWN/ ],
PORTS => [ qw/CAPTION DESCRIPTION NAME TYPE/ ],
PROCESSES => [ qw/USER PID CPUUSAGE MEM VIRTUALMEMORY TTY STARTED CMD/ ],
REGISTRY => [ qw/NAME REGVALUE HIVE/ ],
================================================================
Commit: 92676b285f1da2450fcd728fd40a26802d2ef59f
https://github.com/fusinv/fusioninventory-agent/commit/92676b285f1da2450fcd728fd40a26802d2ef59f
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-02-29 (Wed, 29 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
Log Message:
-----------
cosmetics
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
index 2362ae3..e6a8994 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
@@ -52,11 +52,14 @@ my %fields = (
PRINTERS => [ qw/COMMENT DESCRIPTION DRIVER NAME NETWORK PORT RESOLUTION
SHARED STATUS ERRSTATUS SERVERNAME SHARENAME
PRINTPROCESSOR SERIAL/ ],
- VIRTUALMACHINES => [ qw/MEMORY NAME UUID STATUS SUBSYSTEM VMTYPE VCPU
- VMID MAC COMMENT OWNER/ ],
- LOGICAL_VOLUMES => [ qw/LV_NAME VGN_AME ATTR SIZE LV_UUID SEG_COUNT VG_UUID/ ],
- PHYSICAL_VOLUMES => [ qw/DEVICE PV_NAME PV_PE_COUNT PV_UUID FORMAT ATTR SIZE FREE PE_SIZE/ ],
- VOLUME_GROUPS => [ qw/VG_NAME PV_COUNT LV_COUNT ATTR SIZE FREE VG_UUID VG_EXTENT_SIZE/ ],
+ VIRTUALMACHINES => [ qw/MEMORY NAME UUID STATUS SUBSYSTEM VMTYPE VCPU
+ VMID MAC COMMENT OWNER/ ],
+ LOGICAL_VOLUMES => [ qw/LV_NAME VGN_AME ATTR SIZE LV_UUID SEG_COUNT
+ VG_UUID/ ],
+ PHYSICAL_VOLUMES => [ qw/DEVICE PV_NAME PV_PE_COUNT PV_UUID FORMAT ATTR
+ SIZE FREE PE_SIZE/ ],
+ VOLUME_GROUPS => [ qw/VG_NAME PV_COUNT LV_COUNT ATTR SIZE FREE VG_UUID
+ VG_EXTENT_SIZE/ ],
);
================================================================
Commit: f1b4c736036d97bd74fcb671e8d95dd1d4283e3f
https://github.com/fusinv/fusioninventory-agent/commit/f1b4c736036d97bd74fcb671e8d95dd1d4283e3f
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-02-29 (Wed, 29 Feb 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
M lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
index 6e7ce84..2795421 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
@@ -6,6 +6,7 @@ use integer;
use English qw(-no_match_vars);
+use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Hostname;
use FusionInventory::Agent::Tools::Win32;
@@ -32,21 +33,28 @@ sub doInventory {
path => 'HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/lanmanserver/Parameters/srvcomment',
logger => $logger
));
+ my $installDate = getFormatedLocalTime(hex2dec(
+ encodeFromRegistry(getRegistryValue(
+ path => 'HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/InstallDate',
+ logger => $logger
+ ))
+ ));
$object->{TotalSwapSpaceSize} = int($object->{TotalSwapSpaceSize} / (1024 * 1024))
if $object->{TotalSwapSpaceSize};
$inventory->setHardware({
- WINLANG => $object->{OSLanguage},
- OSNAME => $object->{Caption},
- OSVERSION => $object->{Version},
- WINPRODKEY => $key,
- WINPRODID => $object->{SerialNumber},
- WINCOMPANY => $object->{Organization},
- WINOWNER => $object->{RegistredUser},
- OSCOMMENTS => $object->{CSDVersion},
- SWAP => $object->{TotalSwapSpaceSize},
- DESCRIPTION => $description,
+ WINLANG => $object->{OSLanguage},
+ OSNAME => $object->{Caption},
+ OSVERSION => $object->{Version},
+ WINPRODKEY => $key,
+ WINPRODID => $object->{SerialNumber},
+ WINCOMPANY => $object->{Organization},
+ WINOWNER => $object->{RegistredUser},
+ OSCOMMENTS => $object->{CSDVersion},
+ SWAP => $object->{TotalSwapSpaceSize},
+ DESCRIPTION => $description,
+ OSINSTALLDATE => $installDate
});
$inventory->setOperatingSystem({
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
index ecabd02..df701fd 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
@@ -29,10 +29,11 @@ my %fields = (
MODEMS => [ qw/DESCRIPTION NAME/ ],
MONITORS => [ qw/BASE64 CAPTION DESCRIPTION MANUFACTURER SERIAL
UUENCODE/ ],
- NETWORKS => [ qw/DESCRIPTION DRIVER IPADDRESS IPADDRESS6 IPDHCP IPGATEWAY
- IPMASK IPSUBNET MACADDR MTU PCISLOT PNPDEVICEID STATUS
- TYPE VIRTUALDEV SLAVES SPEED MANAGEMENT BSSID SSID WWN
- MANUFACTURER FIRMWARE MODEL/ ],
+ NETWORKS => [ qw/BSSID DESCRIPTION DRIVER FIRMWARE IPADDRESS IPADDRESS6
+ IPDHCP IPGATEWAY IPMASK IPMASK6 IPSUBNET IPSUBNET6
+ MANAGEMENT MANUFACTURER MACADDR MODEL MTU PCISLOT
+ PNPDEVICEID STATUS SLAVES SPEED SSID TYPE VIRTUALDEV
+ WWN/ ],
PORTS => [ qw/CAPTION DESCRIPTION NAME TYPE/ ],
PROCESSES => [ qw/USER PID CPUUSAGE MEM VIRTUALMEMORY TTY STARTED CMD/ ],
REGISTRY => [ qw/NAME REGVALUE HIVE/ ],
@@ -51,11 +52,14 @@ my %fields = (
PRINTERS => [ qw/COMMENT DESCRIPTION DRIVER NAME NETWORK PORT RESOLUTION
SHARED STATUS ERRSTATUS SERVERNAME SHARENAME
PRINTPROCESSOR SERIAL/ ],
- VIRTUALMACHINES => [ qw/MEMORY NAME UUID STATUS SUBSYSTEM VMTYPE VCPU
- VMID MAC COMMENT OWNER/ ],
- LOGICAL_VOLUMES => [ qw/LV_NAME VGN_AME ATTR SIZE LV_UUID SEG_COUNT VG_UUID/ ],
- PHYSICAL_VOLUMES => [ qw/DEVICE PV_NAME PV_PE_COUNT PV_UUID FORMAT ATTR SIZE FREE PE_SIZE/ ],
- VOLUME_GROUPS => [ qw/VG_NAME PV_COUNT LV_COUNT ATTR SIZE FREE VG_UUID VG_EXTENT_SIZE/ ],
+ VIRTUALMACHINES => [ qw/MEMORY NAME UUID STATUS SUBSYSTEM VMTYPE VCPU
+ VMID MAC COMMENT OWNER/ ],
+ LOGICAL_VOLUMES => [ qw/LV_NAME VGN_AME ATTR SIZE LV_UUID SEG_COUNT
+ VG_UUID/ ],
+ PHYSICAL_VOLUMES => [ qw/DEVICE PV_NAME PV_PE_COUNT PV_UUID FORMAT ATTR
+ SIZE FREE PE_SIZE/ ],
+ VOLUME_GROUPS => [ qw/VG_NAME PV_COUNT LV_COUNT ATTR SIZE FREE VG_UUID
+ VG_EXTENT_SIZE/ ],
);
@@ -242,7 +246,7 @@ sub setHardware {
PROCESSORT NAME PROCESSORS SWAP ETIME TYPE OSNAME IPADDR WORKGROUP
DESCRIPTION MEMORY UUID DNS LASTLOGGEDUSER USERDOMAIN
DATELASTLOGGEDUSER DEFAULTGATEWAY VMSYSTEM WINOWNER WINPRODID
- WINPRODKEY WINCOMPANY WINLANG CHASSIS_TYPE/) {
+ WINPRODKEY WINCOMPANY WINLANG CHASSIS_TYPE OSINSTALLDATE/) {
# WINLANG: Windows Language, see MSDN Win32_OperatingSystem documentation
if (exists $args->{$key}) {
my $string = getSanitizedString($args->{$key});
================================================================
Commit: 8d3adc4335d270b26d0a18d6b58e07e99dfab61b
https://github.com/fusinv/fusioninventory-agent/commit/8d3adc4335d270b26d0a18d6b58e07e99dfab61b
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
M Changes
M etc/agent.cfg
M fusioninventory-agent
M lib/FusionInventory/Agent/Config.pm
M lib/FusionInventory/Agent/HTTP/Protocol/https.pm
M lib/FusionInventory/Agent/HTTP/Server.pm
M lib/FusionInventory/Agent/Target/Server.pm
M lib/FusionInventory/Agent/Task/Inventory.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Softwares.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Memory.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Bios.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Environment.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Printers.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Storages/HP.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/HPUX.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Memory.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Softwares.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/ARM.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/SPARC.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/i386.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages/Adaptec.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Hostname.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Printers.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Softwares.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Storages.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Memory.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Softwares.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Libvirt.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Parallels.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/SolarisZones.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VmWareDesktop.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Controllers.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Drives.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Environment.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Inputs.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
M lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
M lib/FusionInventory/Agent/Tools.pm
M lib/FusionInventory/Agent/Tools/AIX.pm
M lib/FusionInventory/Agent/Tools/Generic.pm
M lib/FusionInventory/Agent/Tools/HPUX.pm
M lib/FusionInventory/Agent/Tools/Linux.pm
M lib/FusionInventory/Agent/Tools/MacOS.pm
M lib/FusionInventory/Agent/Tools/Network.pm
M lib/FusionInventory/Agent/Tools/Unix.pm
M lib/FusionInventory/Agent/Tools/Win32.pm
M lib/FusionInventory/Agent/XML/Query.pm
A resources/win32/README
A resources/win32/wmi/xppro2-CIM_LogicalDevice.wmi
M t/05var.t
M t/apps/agent.t
A t/inventory/macos/storages.t
R t/inventory/macos/video.t
A t/inventory/macos/videos.t
M t/inventory/windows/printers.t
M t/inventory/windows/usb.t
M t/tools/macos.t
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/Changes b/Changes
index 3cabc6a..a6da7ba 100644
--- a/Changes
+++ b/Changes
@@ -3,12 +3,7 @@ Revision history for FusionInventory agent
2.2.0
Major changes:
-* support for OCS account info have been dropped: the agent doesn't store
- arbitrary informations locally anymore
-* support for OCS network discovery and software deployment features within
- inventory task have been removed, they are dedicated tasks for those purposes
-* fusioninventory-agent-config executable has been dropped, in favor of better
- documentation
+* large speed improvement: up to 150% for a local inventory
* better multitasking support:
- the agent use fork() to run task if needed, instead of running a new process
from scratch, avoiding the need to use a temporary file to transmit
@@ -23,13 +18,20 @@ Major changes:
certificate checking is disabled
- validation is now performed by SSL library, and honours alternative subject
names, and other subtilities
-* large speed improvement: up to 150% for a local inventory
* large cleanup of values returned from inventory:
- unknown values are filtered out
- strings are trimmed for trailing spaces
- - irrelevant values, such as controllers type and manufacturer on AIX and
- HPUX, are filtered out
-* options handling:
+ - irrelevant values, such as windows internal USB serial number, or
+ controllers type and manufacturer on AIX and HPUX, are filtered out
+* installation procedure automatically setup configuration and data directories
+ locations in executable, there is no need to manually configure them anymore
+* removal of useless features:
+ - support for OCS account info have been dropped, the agent doesn't store
+ arbitrary informations locally anymore
+ - support for OCS network discovery and software deployment features within
+ inventory task have been removed, we have better alternatives
+ - useless Ping task has been dropped
+* cleanup of available options:
- deprecated --nosoft and --nosoftware options have been removed
- --devlib, --share-dir, --basevardir and --realm options have been
deprecated, as their values are now computed automatically at installation
@@ -41,11 +43,12 @@ Major changes:
- --debug option can be specified multiple times, for additional verbosity
- --no-inventory, --no-ocsdeploy, --no-snmpquery, --no-netdiscovery options
have been deprecated in favor of a generic --no-task option
+ - --no-software, --no-printer options have been deprecated in favor of a
+ generic --no-category option, and 'environment' value support has been added
+* fusioninventory-agent-config executable has been dropped, in favor of better
+ documentation
* documentation has been reviewed for consistency in various places where it
appears (--help output, man page, configuration file)
-* installation procedure automatically setup configuration and data directories
- locations in executable, there is no need to manually configure them anymore
-* useless Ping task has been dropped
* XML::TreePP perl module is now used instead of XML::Simple, reducing native
perl modules dependencies
* OcsDeploy task is now deprecated. Please continue to use the 2.1.x agent is
diff --git a/etc/agent.cfg b/etc/agent.cfg
index f2a04e7..6167899 100644
--- a/etc/agent.cfg
+++ b/etc/agent.cfg
@@ -40,9 +40,7 @@ lazy = 0
#
# do not list local printers
-no-printer = 0
-# do not list installed software
-no-software = 0
+# no-category = printer
# allow to scan use home directories
scan-homedirs = 0
# save the inventory as HTML
diff --git a/fusioninventory-agent b/fusioninventory-agent
index bc9dd88..52e6c53 100755
--- a/fusioninventory-agent
+++ b/fusioninventory-agent
@@ -36,9 +36,8 @@ GetOptions(
'logger=s',
'logfile=s',
'logfile-maxsize=i',
- 'no-printer',
+ 'no-category=s',
'no-httpd',
- 'no-software',
'no-ssl-check',
'no-task=s',
'no-p2p',
@@ -62,6 +61,8 @@ GetOptions(
'no-wakeonlan',
'no-snmpquery',
'no-netdiscovery',
+ 'no-printer',
+ 'no-software',
'rpc-trust-localhost',
'rpc-port',
'rpc-ip',
@@ -139,8 +140,7 @@ B<fusioninventory-agent> [options] [--server server|--local directory|--sdout]
--no-task=TASK do not run given task
Inventory task specific options
- --no-printer do not list local printers (false)
- --no-software do not list installed software (false)
+ --no-category=CATEGORY do not list given category items
--scan-homedirs allow to scan use home directories (false)
--html save the inventory as HTML (false)
-f --force always send data to server (false)
@@ -357,13 +357,9 @@ List available tasks and exit
=over
-=item B<--no-printer>
-
-Do not list local printers in inventory.
-
-=item B<--no-software>
+=item B<--no-category>=I<CATEGORY>
-Do not list installed software in inventory.
+Do not list given category items in inventory.
=item B<--scan-homedirs>
diff --git a/lib/FusionInventory/Agent/Config.pm b/lib/FusionInventory/Agent/Config.pm
index b716f78..74afddc 100644
--- a/lib/FusionInventory/Agent/Config.pm
+++ b/lib/FusionInventory/Agent/Config.pm
@@ -67,6 +67,14 @@ my $deprecated = {
message => 'use --no-task ocsdeploy option instead',
new => { 'no-task' => 'ocsdeploy' }
},
+ 'no-printer' => {
+ message => 'use --no-category printer option instead',
+ new => { 'no-category' => 'printer' }
+ },
+ 'no-software' => {
+ message => 'use --no-category software option instead',
+ new => { 'no-category' => 'software' }
+ },
};
sub new {
@@ -147,9 +155,9 @@ sub _loadFromCfgFile {
return;
}
- while (<$handle>) {
- s/#.+//;
- if (/([\w-]+)\s*=\s*(.+)/) {
+ while (my $line = <$handle>) {
+ $line =~ s/#.+//;
+ if ($line =~ /([\w-]+)\s*=\s*(.+)/) {
my $key = $1;
my $val = $2;
# Remove the quotes
@@ -216,6 +224,8 @@ sub _checkContent {
$self->{server} = [ split(/,/, $self->{server}) ] if $self->{server};
$self->{'no-task'} = [ split(/,/, $self->{'no-task'}) ]
if $self->{'no-task'};
+ $self->{'no-category'} = [ split(/,/, $self->{'no-category'}) ]
+ if $self->{'no-category'};
# files location
$self->{'ca-cert-file'} =
diff --git a/lib/FusionInventory/Agent/HTTP/Protocol/https.pm b/lib/FusionInventory/Agent/HTTP/Protocol/https.pm
index c07fe99..d74a8b1 100644
--- a/lib/FusionInventory/Agent/HTTP/Protocol/https.pm
+++ b/lib/FusionInventory/Agent/HTTP/Protocol/https.pm
@@ -17,7 +17,7 @@ sub import {
}
sub _extra_sock_opts {
- my ($self, $host, $port) = @_;
+ my ($self, $host) = @_;
return (
SSL_verify_mode => $self->{ua}->{ssl_check} ?
diff --git a/lib/FusionInventory/Agent/HTTP/Server.pm b/lib/FusionInventory/Agent/HTTP/Server.pm
index 9ce4400..001033e 100644
--- a/lib/FusionInventory/Agent/HTTP/Server.pm
+++ b/lib/FusionInventory/Agent/HTTP/Server.pm
@@ -256,7 +256,6 @@ sub _is_authenticated {
sub _listen {
my ($self) = @_;
- my $scheduler = $self->{scheduler};
my $logger = $self->{logger};
my $daemon = HTTP::Daemon->new(
diff --git a/lib/FusionInventory/Agent/Target/Server.pm b/lib/FusionInventory/Agent/Target/Server.pm
index 64af009..0ffa6a4 100644
--- a/lib/FusionInventory/Agent/Target/Server.pm
+++ b/lib/FusionInventory/Agent/Target/Server.pm
@@ -28,8 +28,6 @@ sub new {
vardir => $params{basevardir} . '/' . $subdir
);
- my $logger = $self->{logger};
-
return $self;
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index 948e730..0e25fd0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -60,8 +60,10 @@ sub run {
);
}
- $self->_initModulesList();
- $self->_feedInventory($inventory);
+ my %disabled = map { $_ => 1 } @{$self->{config}->{'no-category'}};
+
+ $self->_initModulesList(\%disabled);
+ $self->_feedInventory($inventory, \%disabled);
if ($self->{target}->isa('FusionInventory::Agent::Target::Stdout')) {
$self->_printInventory(
@@ -119,11 +121,10 @@ sub run {
}
sub _initModulesList {
- my ($self) = @_;
+ my ($self, $disabled) = @_;
my $logger = $self->{logger};
my $config = $self->{config};
- my $storage = $self->{storage};
my @modules = __PACKAGE__->getModules('Input');
die "no inventory module found" if !@modules;
@@ -155,11 +156,10 @@ sub _initModulesList {
logger => $logger,
timeout => $config->{'backend-collect-timeout'},
params => {
+ no_category => $disabled,
datadir => $self->{datadir},
logger => $self->{logger},
registry => $self->{registry},
- no_software => $self->{config}->{'no-software'},
- no_printer => $self->{config}->{'no-printer'},
scan_homedirs => $self->{config}->{'scan-homedirs'},
}
);
@@ -206,7 +206,7 @@ sub _initModulesList {
}
sub _runModule {
- my ($self, $module, $inventory) = @_;
+ my ($self, $module, $inventory, $disabled) = @_;
my $logger = $self->{logger};
@@ -225,7 +225,7 @@ sub _runModule {
die "circular dependency between $module and $other_module"
if $self->{modules}->{$other_module}->{used};
- $self->_runModule($other_module, $inventory);
+ $self->_runModule($other_module, $inventory, $disabled);
}
$logger->debug("Running $module");
@@ -238,10 +238,9 @@ sub _runModule {
params => {
datadir => $self->{datadir},
inventory => $inventory,
+ no_category => $disabled,
logger => $self->{logger},
registry => $self->{registry},
- no_software => $self->{config}->{no_software},
- no_printer => $self->{config}->{no_printer},
scan_homedirs => $self->{config}->{'scan-homedirs'},
}
);
@@ -277,8 +276,6 @@ sub _feedInventory {
$inventory->computeLegacyValues();
$inventory->computeChecksum();
-
- $inventory->checkContent();
}
sub _injectContent {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
index 672de8b..f8c6bc0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
@@ -2,9 +2,7 @@ package FusionInventory::Agent::Task::Inventory::Input::AIX::LVM;
use FusionInventory::Agent::Tools;
-# LVM for AIX
use strict;
-
use warnings;
use English qw(-no_match_vars);
@@ -13,194 +11,211 @@ sub isEnabled {
canRun("lspv");
}
-sub _parseLvs {
-
- my @vs_elem;
- my $vg;
- my $ppsize;
- my $status;
- my $nblv;
- my $typelv;
- my $lvname;
- my $entries = [];
-
- foreach (`lsvg`) {
- chomp;
- foreach (`lsvg -l $_`) {
- chomp;
- if (/(\S+):.*/) {
- $vg = $1;
- }
- if ( ( !/^LV NAME.*/ )
- && /(\S+) *(\S+) *(\d+) *(\d+) *(\d+) *(\S+) *(\S+)/ )
- {
- $vs_elem[0] = $vg . "/" . $1;
- $typelv = $2;
- $vs_elem[6] = 0;
- $vs_elem[5] = $3;
- $status = "Type " . $2 . " ,PV: " . $5;
- $lvname = $1;
- foreach (`lslv $1`) {
- if (/.*PP SIZE:\s+(\d+) .*/) {
- $ppsize = $1;
- }
- if (/LV IDENTIFIER: (\S+)/) {
- $vs_elem[7] = $1;
- }
- }
-# print( $lvname. " "
-# . $vg . " "
-# . $status . " "
-# . $vs_elem[5] . " "
-# . $vs_elem[7] . " "
-# . $vs_elem[5]
-# . "\n" );
- push @$entries,
- {
- LV_NAME => $lvname,
- VG_UUID => $vg,
- ATTR => $status,
- SIZE => int( $vs_elem[5] * $ppsize || 0 ),
- LV_UUID => $vs_elem[7],
- SEG_COUNT => $vs_elem[5],
- };
- }
- }
+sub doInventory {
+ my (%params) = @_;
+
+ my $inventory = $params{inventory};
+ my $logger = $params{logger};
+
+ foreach my $volume (_getPhysicalVolumes($logger)) {
+ $inventory->addEntry(section => 'PHYSICAL_VOLUMES', entry => $volume);
+ }
+
+ foreach my $volume (_getLogicalVolumes($logger)) {
+ $inventory->addEntry(section => 'LOGICAL_VOLUMES', entry => $volume);
+ }
+
+ foreach my $group (_getVolumeGroups($logger)) {
+ $inventory->addEntry(section => 'VOLUME_GROUPS', entry => $group);
}
- return $entries;
+
}
-sub _parsePvs {
-
- my @vs_elem;
- my $vg;
- my $ppsize;
- my $status;
- my $nblv;
- my $typelv;
-
- my $entries = [];
- my $pvname = "";
-
- foreach (`lspv | cut -f1 -d' '`) {
- chomp;
- $pvname = $_;
- foreach (`lspv $_`) {
- chomp;
- if (/PHYSICAL VOLUME: (\S+)/) {
- $vs_elem[0] = $1;
- }
- if (/FREE PPs: (\d+) .*/) {
- $vs_elem[5] = $1;
- }
- if (/TOTAL PPs: (\d+) .*/) {
- $vs_elem[4] = $1;
- }
- if (/VOLUME GROUP: (\S+)/) {
- $vg = $1;
- }
- if (/PP SIZE: (\d+) .*/) {
- $ppsize = $1;
- }
- if (/PV IDENTIFIER: (\S+)/) {
- $vs_elem[6] = $1;
- }
- }
- push @$entries,
- {
- DEVICE => "/dev/" . $pvname,
- PV_NAME => $pvname,
- FORMAT => "AIX PV " . $vs_elem[0],
- ATTR => "VG " . $vg,
- SIZE => $vs_elem[4] * $ppsize,
- FREE => $vs_elem[5] * $ppsize,
- PV_UUID => $vs_elem[6],
- PV_PE_COUNT => $vs_elem[4],
- PE_SIZE => $ppsize,
- }
+sub _getLogicalVolumes {
+ my ($logger) = @_;
+ my $handle = getFileHandle(
+ command => "lsvg",
+ logger => $logger
+ );
+ return unless $handle;
+
+ my @volumes;
+
+ while (my $line = <$handle>) {
+ chomp $line;
+ push @volumes, _getLogicalVolume($logger, $line);
}
+ close $handle;
- return $entries;
+ return @volumes;
}
-sub _parseVgs {
-
- my $entries = [];
- my @vs_elem;
- my $vg;
- my $ppsize;
- my $status;
- my $nblv;
- my $typelv;
- my $nbpv;
-
- foreach (`lsvg`) {
- chomp;
- $vg = $_;
- foreach (`lsvg $_`) {
- chomp;
- if (/VOLUME GROUP: (\S+) .* /) {
- $vs_elem[0] = $1;
- }
- if (/TOTAL PPs: (\d+) .*/) {
- $vs_elem[5] = $1;
- }
- if (/FREE PPs: (\d+) .*/) {
- $vs_elem[6] = $1;
- }
- if (/VG IDENTIFIER: (\S+)/) {
- $vs_elem[7] = $1;
- }
- if (/PP SIZE: (\d+) .*/) {
- $ppsize = $1;
- }
- if (/LVs: (\d+) .*/) {
- $nblv = $1;
- }
- if (/ACTIVE PVs:\s+(\d+) .*/) {
- $nbpv = $1;
- }
-
- }
-
- push @$entries,
- {
- VG_NAME => $vg,
- PV_COUNT => $nbpv,
- LV_COUNT => $nblv,
- ATTR => "",
- SIZE => $vs_elem[5],
- FREE => $vs_elem[6],
- VG_UUID => $vs_elem[7],
- VG_EXTENT_SIZE => $ppsize,
- };
+sub _getLogicalVolume {
+ my ($logger, $name) = @_;
+
+ my $handle = getFileHandle(
+ command => "lsvg -l $name",
+ logger => $logger
+ );
+ return unless $handle;
+
+ my $volume;
+ while (my $line = <$handle>) {
+ chomp $line;
+
+ if ($line =~ /(\S+):/) {
+ $volume->{VG_UUID} = $1;
+ }
+ if ($line !~ !/^LV NAME/ && $line =~ /(\S+) *(\S+) *(\d+) *(\d+) *(\d+) *(\S+) *(\S+)/) {
+ $volume->{LV_NAME} = $1;
+ $volume->{SEG_COUNT} = $3;
+ $volume->{ATTR} = "Type $2,PV: $5";
+ }
+ }
+ close $handle;
+
+ my $size;
+ foreach (`lslv $volume->{LV_NAME}`) {
+ if (/.*PP SIZE:\s+(\d+) .*/) {
+ $size = $1;
+ }
+ if (/LV IDENTIFIER:\s+(\S+)/) {
+ $volume->{LV_UUID} = $1;
+ }
}
- return $entries;
+ $volume->{SIZE} = int($volume->{SEG_COUNT} * $size);
+
+ return $volume;
}
-sub doInventory {
- my (%params) = @_;
+sub _getPhysicalVolumes {
+ my ($logger) = @_;
- my $inventory = $params{inventory};
+ my $handle = getFileHandle(
+ command => "lspv | cut -f1 -d' '",
+ logger => $logger
+ );
+ return unless $handle;
+
+ my @volumes;
- my $pvs = _parsePvs();
- foreach (@$pvs) {
- $inventory->addEntry(section => 'PHYSICAL_VOLUMES', entry => $_);
+ while (my $line = <$handle>) {
+ chomp $line;
+ push @volumes, _getPhysicalVolume($logger, $line);
}
+ close $handle;
+
+ return @volumes;
+}
+
+sub _getPhysicalVolume {
+ my ($logger, $name) = @_;
- my $lvs = _parseLvs();
- foreach (@$lvs) {
- $inventory->addEntry(section => 'LOGICAL_VOLUMES', entry => $_);
+ my $handle = getFileHandle(
+ command => "lspv $name",
+ logger => $logger
+ );
+ return unless $handle;
+
+ my $volume = {
+ DEVICE => "/dev/$name",
+ PV_NAME => $name,
+ };
+
+ my ($free, $total);
+ while (my $line = <$handle>) {
+ chomp $line;
+
+ if ($line =~ /PHYSICAL VOLUME:\s+(\S+)/) {
+ $volume->{FORMAT} = "AIX PV $1";
+ }
+ if ($line =~ /FREE PPs:\s+(\d+)/) {
+ $free = $1;
+ }
+ if ($line =~ /TOTAL PPs:\s+(\d+)/) {
+ $total = $1;
+ }
+ if ($line =~ /VOLUME GROUP:\s+(\S+)/) {
+ $volume->{ATTR} = "VG $1";
+ }
+ if ($line =~ /PP SIZE:\s+(\d+)/) {
+ $volume->{PE_SIZE} = $1;
+ }
+ if ($line =~ /PV IDENTIFIER:\s+(\S+)/) {
+ $volume->{PV_UUID} = $1;
+ }
+ }
+ close $handle;
+
+ $volume->{SIZE} = $total * $volume->{PE_SIZE};
+ $volume->{FREE} = $free * $volume->{PE_SIZE};
+ $volume->{PV_PE_COUNT} = $total;
+
+ return $volume;
+}
+
+sub _getVolumeGroups {
+ my ($logger) = @_;
+
+ my $handle = getFileHandle(
+ command => 'lsvg',
+ logger => $logger
+ );
+ return unless $handle;
+
+ my @groups;
+
+ while (my $line = <$handle>) {
+ chomp $line;
+ push @groups, _getVolumeGroup($logger, $line);
}
+ close $handle;
+
+ return @groups;
+}
+
+sub _getVolumeGroup {
+ my ($logger, $name) = @_;
+
+ my $handle = getFileHandle(
+ command => "lsvg $name",
+ logger => $logger
+ );
+ return unless $handle;
+
+ my $group = {
+ VG_NAME => $name
+ };
+
+ while (my $line = <$handle>) {
+ chomp $line;
+
+ if ($line =~ /TOTAL PPs:\s+(\d+)/) {
+ $group->{SIZE} = $1;
+ }
+ if ($line =~ /FREE PPs:\s+(\d+)/) {
+ $group->{FREE} = $1;
+ }
+ if ($line =~ /VG IDENTIFIER:\s+(\S+)/) {
+ $group->{VG_UUID} = $1;
+ }
+ if ($line =~ /PP SIZE:\s+(\d+)/) {
+ $group->{VG_EXTENT_SIZE} = $1;
+ }
+ if ($line =~ /LVs:\s+(\d+)/) {
+ $group->{LV_COUNT} = $1;
+ }
+ if ($line =~/ACTIVE PVs:\s+(\d+)/) {
+ $group->{PV_COUNT} = $1;
+ }
- my $vgs = _parseVgs();
- foreach (@$vgs) {
- $inventory->addEntry(section => 'VOLUME_GROUPS', entry => $_);
}
+ close $handle;
+ return $group;
}
1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Softwares.pm
index 0597530..430555d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Softwares.pm
@@ -9,7 +9,7 @@ sub isEnabled {
my (%params) = @_;
return
- !$params{no_software} &&
+ !$params{no_category} &&
canRun('lslpp');
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
index 54fd354..b9d5d21 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
@@ -15,7 +15,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
# sysctl infos
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
index 17f00f4..e79dbd0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
@@ -15,7 +15,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
# sysctl infos
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
index 12bf81c..9cb1786 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
@@ -15,7 +15,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
# sysctl infos
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Memory.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Memory.pm
index 72f36d1..d79b3cf 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Memory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Memory.pm
@@ -15,7 +15,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
# Swap
my $swapSize;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
index 9376672..1bc71c0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Softwares.pm
@@ -9,7 +9,7 @@ sub isEnabled {
my (%params) = @_;
return
- !$params{no_software} &&
+ !$params{no_category}->{software} &&
canRun('pkg_info');
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Bios.pm
index 830db3e..01ee764 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Dmidecode/Bios.pm
@@ -29,7 +29,6 @@ sub _getBiosHardware {
my $system_info = $infos->{1}->[0];
my $base_info = $infos->{2}->[0];
my $chassis_info = $infos->{3}->[0];
- my $cpu_info = $infos->{4}->[0];
my $bios = {
BMANUFACTURER => $bios_info->{'Vendor'},
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Environment.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Environment.pm
index e753df8..8df1b17 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Environment.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Environment.pm
@@ -8,8 +8,12 @@ use warnings;
use FusionInventory::Agent::Tools;
sub isEnabled {
- # We use WMI for Windows because of charset issue
- return $OSNAME ne 'MSWin32';
+ my (%params) = @_;
+
+ return
+ # We use WMI for Windows because of charset issue
+ $OSNAME ne 'MSWin32' &&
+ !$params{no_category}->{environment};
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Printers.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Printers.pm
index 272964c..e9e4677 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Printers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Printers.pm
@@ -13,7 +13,7 @@ sub isEnabled {
return
# we use system profiler on MacOS
$OSNAME ne 'darwin' &&
- !$params{no_printer} &&
+ !$params{no_category}->{printer} &&
canLoad("Net::CUPS") &&
$Net::CUPS::VERSION >= 0.60;
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Storages/HP.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Storages/HP.pm
index 7587cd4..ce1818f 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Storages/HP.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Storages/HP.pm
@@ -16,7 +16,6 @@ use FusionInventory::Agent::Tools;
# HP Array Configuration Utility CLI 7.85-18.0
sub _getHpacuacliFromWinRegistry {
- my ($logger) = @_;
my $Registry;
Win32::TieRegistry->require();
@@ -56,7 +55,7 @@ sub doInventory {
my $inventory = $params{inventory};
my $logger = $params{logger};
- my ($pd, $serialnumber, $model, $capacity, $firmware, $description, $media, $manufacturer);
+ my ($serialnumber, $model, $capacity, $firmware, $description, $media, $manufacturer);
my $hpacuacliPath = canRun('hpacucli') ?
"hpacucli":
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX.pm
index bdf3f3c..5978c80 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX.pm
@@ -17,7 +17,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
# Operating system informations
my $OSVersion = getFirstLine(command => 'uname -v');
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Memory.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Memory.pm
index c80e75c..ff2f94c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Memory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Memory.pm
@@ -106,7 +106,6 @@ sub _parseCstm {
my %capacities;
my $capacity = 0;
- my $caption;
my $description;
my $numslot = 1;
my $subnumslot;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Softwares.pm
index 3d20576..9ec009e 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/HPUX/Softwares.pm
@@ -9,7 +9,7 @@ sub isEnabled {
my (%params) = @_;
return
- !$params{no_software} &&
+ !$params{no_category}->{software} &&
canRun('swlist');
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux.pm
index fd19bff..32a772b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux.pm
@@ -43,7 +43,6 @@ sub _getRHNSystemId {
return unless -f $file;
my $tpp = XML::TreePP->new();
my $h = $tpp->parsefile($file);
- my $v;
eval {
foreach (@{$h->{params}{param}{value}{struct}{member}}) {
next unless $_->{name} eq 'system_id';
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/ARM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/ARM.pm
index ff2f1dc..46a1ee3 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/ARM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/ARM.pm
@@ -30,11 +30,9 @@ sub doInventory {
}
sub _getCPUsFromProc {
- my ($logger, $file) = @_;
-
my @cpus;
- foreach my $cpu (getCPUsFromProc(@_)) {
+ foreach my $cpu (getCPUsFromProc(@_)) {
push @cpus, {
ARCH => 'ARM',
TYPE => $cpu->{processor}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/SPARC.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/SPARC.pm
index 71f7b52..e0eef88 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/SPARC.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/SPARC.pm
@@ -32,8 +32,6 @@ sub doInventory {
}
sub _getCPUsFromProc {
- my ($logger, $file) = @_;
-
my $cpu = (getCPUsFromProc(@_))[0];
return unless $cpu && $cpu->{'ncpus probed'};
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/i386.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/i386.pm
index a6affc8..f9f84b9 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/i386.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/i386.pm
@@ -70,7 +70,7 @@ sub doInventory {
sub _getCPUsFromProc {
my @cpus = getCPUsFromProc(@_);
- my ($procs, $cpuNbr, $cores, $threads);
+ my ($procs, $cpuNbr);
my @cpuList;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
index 390fb4e..997617d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
@@ -44,15 +44,16 @@ sub _getLogicalVolumes {
return unless $handle;
my @volumes;
- foreach (<$handle>) {
- my @line = split(/\s+/, $_);
+ while (my $line = <$handle>) {
+ my @infos = split(/\s+/, $line);
+
push @volumes, {
- LV_NAME => $line[1],
- VG_UUID => $line[2],
- ATTR => $line[3],
- SIZE => int($line[4]||0),
- LV_UUID => $line[5],
- SEG_COUNT => $line[6],
+ LV_NAME => $infos[1],
+ VG_UUID => $infos[2],
+ ATTR => $infos[3],
+ SIZE => int($infos[4]||0),
+ LV_UUID => $infos[5],
+ SEG_COUNT => $infos[6],
}
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
index de317fe..5fdf0a0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
@@ -43,7 +43,6 @@ sub _getInterfaces {
my (%params) = @_;
my $logger = $params{logger};
- my $routes = $params{routes};
my @interfaces = canRun("/sbin/ip") ?
getInterfacesFromIp(logger => $logger):
@@ -60,7 +59,6 @@ sub _getInterfaces {
);
my ($driver, $pcislot) = _getUevent(
- $logger,
$interface->{DESCRIPTION}
);
$interface->{DRIVER} = $driver if $driver;
@@ -134,7 +132,7 @@ sub _isWifi {
}
sub _getUevent {
- my ($logger, $name) = @_;
+ my ($name) = @_;
my $file = "/sys/class/net/$name/device/uevent";
my $handle = getFileHandle(file => $file);
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares.pm
index 2bfae86..d9db905 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares.pm
@@ -8,7 +8,7 @@ use FusionInventory::Agent::Tools;
sub isEnabled {
my (%params) = @_;
- return !$params{no_software};
+ return !$params{no_category}->{software};
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages/Adaptec.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages/Adaptec.pm
index f171fc4..4662f62 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages/Adaptec.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages/Adaptec.pm
@@ -42,7 +42,7 @@ sub doInventory {
}
sub _getDisksFromProc {
- my %params = (
+ my (%params) = (
file => '/proc/scsi/scsi',
@_
);
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm
index 11b73af..be4aef8 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm
@@ -80,7 +80,7 @@ sub _getDdcprobeData {
return unless $handle;
my $data;
- foreach my $line (<$handle>) {
+ while (my $line = <$handle>) {
$line =~ s/[[:cntrl:]]//g;
$line =~ s/[^[:ascii:]]//g;
$data->{$1} = $2 if $line =~ /^(\S+):\s+(.*)/;
@@ -95,7 +95,7 @@ sub _parseXorgFd {
return unless $handle;
my $data;
- foreach my $line (<$handle>) {
+ while (my $line = <$handle>) {
if ($line =~ /Modeline\s"(\S+?)"/) {
$data->{resolution} = $1 if !$data->{resolution};
} elsif ($line =~ /Integrated Graphics Chipset:\s+(.*)/) {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm
index 6610d09..a78752e 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm
@@ -11,7 +11,7 @@ sub isEnabled {
}
sub _parseHponcfg {
- my %params = @_;
+ my (%params) = @_;
my $handle = getFileHandle(%params);
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS.pm
index b30ff81..d95aa38 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS.pm
@@ -15,12 +15,11 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
my ($OSName, $OSVersion);
- # if we can load the system profiler, gather the information from that
if (canLoad("Mac::SysProfile")) {
+ # use system profiler if available
my $prof = Mac::SysProfile->new();
my $info = $prof->gettype('SPSoftwareDataType');
return unless ref $info eq 'HASH';
@@ -37,8 +36,7 @@ sub doInventory {
}
} else {
- # we can't load the system profiler, use the basic BSD stype information
- # Operating system informations
+ # fallback on basic BSD type information otherwise
$OSName = getFirstLine(command => 'uname -s');
$OSVersion = getFirstLine(command => 'uname -r');
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Hostname.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Hostname.pm
index 94ee02e..3900953 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Hostname.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Hostname.pm
@@ -15,7 +15,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
my $prof = Mac::SysProfile->new();
my $info = $prof->gettype('SPSoftwareDataType');
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Printers.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Printers.pm
index f1649f2..1c2de9f 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Printers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Printers.pm
@@ -9,7 +9,7 @@ sub isEnabled {
my (%params) = @_;
return
- !$params{no_printer} &&
+ !$params{no_category}->{printer} &&
-r '/usr/sbin/system_profiler' &&
canLoad("Mac::SysProfile");
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Softwares.pm
index 3a3a5fc..917e901 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Softwares.pm
@@ -9,7 +9,7 @@ sub isEnabled {
my (%params) = @_;
return
- !$params{no_software} &&
+ !$params{no_category}->{software} &&
-r '/usr/sbin/system_profiler' &&
canLoad("Mac::SysProfile");
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Storages.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Storages.pm
index 55fae1a..2fbbc13 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Storages.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Storages.pm
@@ -4,6 +4,7 @@ use strict;
use warnings;
use FusionInventory::Agent::Tools;
+use FusionInventory::Agent::Tools::MacOS;
sub isEnabled {
return 1;
@@ -15,116 +16,96 @@ sub doInventory {
my $inventory = $params{inventory};
my $logger = $params{logger};
- my $devices = {};
-
- # Get SATA Drives
- my $sata = _getDiskInfo();
-
- foreach my $device ( @$sata ) {
- my $description;
- if (!$device->{'Protocol'}) {
- $description = 'Disk drive';
- } elsif ( ($device->{'Protocol'} eq 'ATAPI')
- ||
- ($device->{'Drive Type'}) ) {
- $description = 'CD-ROM Drive';
- }
-
- my $size = $device->{'Capacity'};
- if ($size) {
- #e.g: Capacity: 320,07 GB (320 072 933 376 bytes)
- $size =~ s/\s*\(.*//;
- $size =~ s/ GB//;
- $size =~ s/,/./;
- $size = int($size * 1024);
- }
-
- my $manufacturer = getCanonicalManufacturer($device->{'Name'});
-
- my $model = $device->{'Model'};
- if ($model) {
- $model =~ s/\s*$manufacturer\s*//i;
- }
-
+ foreach my $storage (_getStorages(logger => $logger)) {
$inventory->addEntry(
section => 'STORAGES',
- entry => {
- NAME => $device->{'Name'},
- SERIAL => $device->{'Serial Number'},
- DISKSIZE => $size,
- FIRMWARE => $device->{'Revision'},
- MANUFACTURER => $manufacturer,
- DESCRIPTION => $description,
- MODEL => $model,
- TYPE => $device->{'Type'}
- }
+ entry => $storage
);
}
-
-
}
-sub _getDiskInfo {
- my ($section) = @_;
-
- my $wasEmpty;
- my $revIndent = '';
- my @infos;
- my $info;
- my $name;
- my $type;
- foreach (`/usr/sbin/system_profiler SPSerialATADataType`,
- `/usr/sbin/system_profiler SPParallelATADataType`,
- `/usr/sbin/system_profiler SPUSBDataType`,
- `/usr/sbin/system_profiler SPFireWireDataType`) {
- if (/^\s*$/) {
- $wasEmpty=1;
- next;
- }
+sub _getStorages {
+ my $infos = getSystemProfilerInfos(@_);
+
+ # system profiler data structure:
+ # bus
+ # └── controller
+ # ├── device
+ # │ ├── subdevice
+ # │ │ └── key:value
+ # │ └── key:value
+ # └── key:value
+
+ my @storages;
+
+ foreach my $busName (qw/ATA SERIAL-ATA USB FireWire/) {
+ my $bus = $infos->{$busName};
+ next unless $bus;
+ foreach my $controllerName (keys %{$bus}) {
+ my $controller = $bus->{$controllerName};
+ foreach my $deviceName (keys %{$controller}) {
+ my $device = $controller->{$deviceName};
+ next unless ref $device eq 'HASH';
+ if (_isStorage($device)) {
+ push @storages,
+ _getStorage($device, $deviceName, $busName);
+ } else {
+ foreach my $subdeviceName (keys %{$device}) {
+ my $subdevice = $device->{$subdeviceName};
+ next unless ref $subdevice eq 'HASH';
+ push @storages,
+ _getStorage($subdevice, $subdeviceName, $busName)
+ if _isStorage($subdevice);
+ }
+ }
- next unless /^(\s*)/;
- if ($1 ne $revIndent) {
- $name = $1 if (/^\s+(\S+.*\S+):\s*$/ && $wasEmpty);
- $revIndent = $1;
-
-# We use the Protocol key to know if it a storage section or not
- if (
- # disk
- ($info->{'BSD Name'} && $info->{'BSD Name'} =~ /^disk\d+$/)
- ||
- # USB Disk
-# ($info->{'BSD Name'} && $info->{'Product ID'})
-# ||
- # CDROM
- ($info->{'Protocol'} && $info->{'Socket Type'})
- ) {
- $info->{Type} = $type;
- push @infos, $info;
- $name = '';
}
- $info = {};
- }
- if (/^\s+(\S+.*?):\s+(\S.*)/) {
- $info->{$1}=$2;
- $info->{Name} = $name;
}
+ }
- $type = '' if /^(\S+)/;
- if (/^(\S+):$/) {
- $type=$1;
- if ($type eq 'FireWire') {
- $type = '1394';
- }
- }
+ return @storages;
+}
+sub _isStorage {
+ my ($device) = @_;
- $wasEmpty=0;
+ return
+ ($device->{'BSD Name'} && $device->{'BSD Name'} =~ /^disk\d+$/) ||
+ ($device->{'Protocol'} && $device->{'Socket Type'});
+}
+
+sub _getStorage {
+ my ($device, $device_name, $bus_name) = @_;
+
+ my $storage = {
+ NAME => $device_name,
+ MANUFACTURER => getCanonicalManufacturer($device_name),
+ TYPE => $bus_name eq 'FireWire' ? '1394' : $bus_name,
+ SERIAL => $device->{'Serial Number'},
+ FIRMWARE => $device->{'Revision'},
+ MODEL => $device->{'Model'},
+ DISKSIZE => $device->{'Capacity'}
+ };
+
+ if (!$device->{'Protocol'}) {
+ $storage->{DESCRIPTION} = 'Disk drive';
+ } elsif ($device->{'Protocol'} eq 'ATAPI' || $device->{'Drive Type'}) {
+ $storage->{DESCRIPTION} = 'CD-ROM Drive';
+ }
+
+ if ($storage->{DISKSIZE}) {
+ #e.g: Capacity: 320,07 GB (320 072 933 376 bytes)
+ $storage->{DISKSIZE} =~ s/\s*\(.*//;
+ $storage->{DISKSIZE} =~ s/ GB//;
+ $storage->{DISKSIZE} =~ s/,/./;
+ $storage->{DISKSIZE} = int($storage->{DISKSIZE} * 1024);
}
-# The last one
- if ($info->{Protocol}) {
- push @infos, $info;
+
+ if ($storage->{MODEL}) {
+ $storage->{MODEL} =~ s/\s*$storage->{MANUFACTURER}\s*//i;
}
- return \@infos;
+
+ return $storage;
}
1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
index d2b4604..8294ed5 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Videos.pm
@@ -17,30 +17,35 @@ sub doInventory {
my $inventory = $params{inventory};
my %displays = _getDisplays();
- foreach my $section (keys %displays ) {
- foreach my $entry (@{$displays{$section}}) {
- $inventory->addEntry(
- section => $section,
- entry => $entry,
- );
- }
+
+ foreach my $monitor (@{$displays{MONITORS}}) {
+ $inventory->addEntry(
+ section => 'MONITORS',
+ entry => $monitor,
+ );
+ }
+
+ foreach my $video (@{$displays{VIDEOS}}) {
+ $inventory->addEntry(
+ section => 'VIDEOS',
+ entry => $video,
+ );
}
}
sub _getDisplays {
my $infos = getSystemProfilerInfos(@_);
- my $monitors = [];
- my $videos = [];
+ my @monitors;
+ my @videos;
foreach my $videoName (keys %{$infos->{'Graphics/Displays'}}) {
- my $videoCardInfo = $infos->{'Graphics/Displays'}{$videoName};
+ my $videoCardInfo = $infos->{'Graphics/Displays'}->{$videoName};
- my $displays = {};
foreach my $displayName (keys %{$videoCardInfo->{Displays}}) {
next if $displayName eq 'Display Connector';
next if $displayName eq 'Display';
- my $displayInfo = $videoCardInfo->{Displays}{$displayName};
+ my $displayInfo = $videoCardInfo->{Displays}->{$displayName};
my $resolution = $displayInfo->{Resolution};
if ($resolution) {
@@ -51,7 +56,7 @@ sub _getDisplays {
my $memory = $videoCardInfo->{'VRAM (Total)'};
$memory =~ s/\ .*//g if $memory;
- push @$videos, {
+ push @videos, {
CHIPSET => $videoCardInfo->{'Chipset Model'},
MEMORY => $memory,
NAME => $videoName,
@@ -59,7 +64,7 @@ sub _getDisplays {
PCISLOT => $videoCardInfo->{Slot}
};
- push @$monitors, {
+ push @monitors, {
CAPTION => $displayName,
DESCRIPTION => $displayName,
}
@@ -67,8 +72,8 @@ sub _getDisplays {
}
return (
- MONITORS => $monitors,
- VIDEOS => $videos
+ MONITORS => \@monitors,
+ VIDEOS => \@videos
);
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
index 680cb0d..08de6b0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
@@ -133,7 +133,7 @@ sub _parsePrtconf {
);
return unless $handle;
- my ($infos, $name, $OBPstring);
+ my $infos;
while (my $line = <$handle>) {
next unless $line =~ /^ \s* ([^:]+) : \s* ' (.+) '$/x;
next if $infos->{$1};
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Memory.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Memory.pm
index 2110677..82fd6ae 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Memory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Memory.pm
@@ -132,7 +132,6 @@ sub _getMemories2 {
my $flag_mt = 0;
my $capacity;
- my $description;
my $caption;
my $speed;
my $type;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
index 91a3aa0..2c3914c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Slots.pm
@@ -32,7 +32,7 @@ sub doInventory {
}
sub _getSlots4 {
- my %params = (
+ my (%params) = (
command => 'prtdiag',
@_
);
@@ -57,7 +57,7 @@ sub _getSlots4 {
}
sub _getSlots5 {
- my %params = (
+ my (%params) = (
command => 'prtdiag',
@_
);
@@ -71,27 +71,26 @@ sub _getSlots5 {
my $name;
my $description;
my $designation;
- my $status;
- while (<$handle>) {
- last if /^\=+/ && $flag_pci && $flag;
+ while (my $line = <$handle>) {
+ last if $line =~ /^\=+/ && $flag_pci && $flag;
- if (/^=+\S+\s+IO Cards/) {
+ if ($line =~ /^=+\S+\s+IO Cards/) {
$flag_pci = 1;
}
- if ($flag_pci && /^-+/) {
+ if ($flag_pci && $line =~ /^-+/) {
$flag = 1;
}
next unless $flag && $flag_pci;
- if (/^\s+(\d+)/){
+ if ($line =~ /^\s+(\d+)/) {
$name = "LSB " . $1;
}
- if(/^\s+\S+\s+(\S+)/){
+ if ($line =~ /^\s+\S+\s+(\S+)/) {
$description = $1;
}
- if(/^\s+\S+\s+\S+\s+(\S+)/){
+ if ($line =~ /^\s+\S+\s+\S+\s+(\S+)/) {
$designation = $1;
}
@@ -107,12 +106,12 @@ sub _getSlots5 {
}
sub _getSlotsDefault {
- my %params = (
+ my (%params) = (
command => 'prtdiag',
@_
);
- my $handle = getFileHandle(%params);
+ my $handle = getFileHandle(%params);
return unless $handle;
my @slots;
@@ -123,28 +122,28 @@ sub _getSlotsDefault {
my $designation;
my $status;
- while (<$handle>) {
- last if /^\=+/ && $flag_pci;
- next if /^\s+/ && $flag_pci;
- if (/^=+\s+IO Cards/) {
+ while (my $line = <$handle>) {
+ last if $line =~ /^\=+/ && $flag_pci;
+ next if $line =~ /^\s+/ && $flag_pci;
+ if ($line =~ /^=+\s+IO Cards/) {
$flag_pci = 1;
}
- if ($flag_pci && /^-+/) {
+ if ($flag_pci && $line =~ /^-+/) {
$flag = 1;
}
next unless $flag && $flag_pci;
- if(/^(\S+)\s+/){
+ if ($line =~ /^(\S+)\s+/){
$name = $1;
}
- if(/(\S+)\s*$/){
+ if ($line =~ /(\S+)\s*$/){
$designation = $1;
}
- if(/^\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+(\S+)/){
+ if ($line =~ /^\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+(\S+)/) {
$description = $1;
}
- if(/^\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+(\S+)/){
+ if ($line =~ /^\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+(\S+)/) {
$status = $1;
}
push @slots, {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Softwares.pm
index 4d63288..d2274ed 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Softwares.pm
@@ -9,7 +9,7 @@ sub isEnabled {
my (%params) = @_;
return
- !$params{no_software} &&
+ !$params{no_category}->{software} &&
canRun('pkginfo');
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Libvirt.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Libvirt.pm
index cfa845b..dc3ccf9 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Libvirt.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Libvirt.pm
@@ -26,7 +26,7 @@ sub doInventory {
}
sub _getMachines {
- my %params = @_;
+ my (%params) = @_;
my @machines = _parseList(
command => 'virsh list --all',
@@ -49,7 +49,7 @@ sub _getMachines {
}
sub _parseList {
- my %params = @_;
+ my (%params) = @_;
my $handle = getFileHandle(%params);
return unless $handle;
@@ -84,7 +84,7 @@ sub _parseList {
}
sub _parseDumpxml {
- my %params = @_;
+ my (%params) = @_;
my $xml = getAllLines(%params);
if (!$xml) {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Parallels.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Parallels.pm
index 74b84f9..c96e952 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Parallels.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Parallels.pm
@@ -70,7 +70,7 @@ sub _parsePrlctlA {
my $line = <$handle>;
my @machines;
- foreach my $line (<$handle>) {
+ while (my $line = <$handle>) {
chomp $line;
my @info = split(/\s+/, $line, 4);
my $uuid = $info[0];
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/SolarisZones.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/SolarisZones.pm
index cafaa8c..2909a3e 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/SolarisZones.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/SolarisZones.pm
@@ -22,8 +22,8 @@ sub doInventory {
getAllLines(command => '/usr/sbin/zoneadm list -p', logger => $logger);
foreach my $zone (@zones) {
- my ($zoneid, $zonename, $zonestatus, $pathroot , $uuid) = split(/:/, $zone);
- #
+ my ($zoneid, $zonename, $zonestatus, undef, $uuid) = split(/:/, $zone);
+
# Memory considerations depends on rcapd or project definitions
# Little hack, I go directly in /etc/zones reading mcap physcap for each zone.
my $zonefile = "/etc/zones/$zonename.xml";
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VmWareDesktop.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VmWareDesktop.pm
index 5390a61..d4e0b41 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VmWareDesktop.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VmWareDesktop.pm
@@ -33,7 +33,7 @@ sub doInventory {
}
sub _getMachines {
- my %params = @_;
+ my (%params) = @_;
my $handle = getFileHandle(%params);
return unless $handle;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
index 424be3b..60c5ba1 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
@@ -53,7 +53,7 @@ sub _getVirtualMachines {
my @machines;
while (my $line = <$handle>) {
chomp $line;
- my ($name, $vmid, $memory, $vcpu, $status, $time) = split(' ', $line);
+ my ($name, $vmid, $memory, $vcpu, $status) = split(' ', $line);
next if $name eq 'Domain-0';
next if $vmid == 0;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm
index ebcdbeb..558e157 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/AntiVirus.pm
@@ -15,7 +15,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
# Doesn't works on Win2003 Server
# On Win7, we need to use SecurityCenter2
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
index a3d02be..5ec74eb 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
@@ -74,9 +74,10 @@ sub doInventory {
SerialNumber Product Manufacturer
/ ]
)) {
- $bios->{BASEBOARDSERIAL} = $object->{SerialNumber};
- $bios->{SSN} = $object->{SerialNumber} unless $bios->{SSN};
+ $bios->{MSN} = $object->{SerialNumber};
$bios->{MMODEL} = $object->{Product};
+ $bios->{SSN} = $object->{SerialNumber}
+ unless $bios->{SSN};
$bios->{SMANUFACTURER} = $object->{Manufacturer}
unless $bios->{SMANUFACTURER};
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
index a086573..8f1d49c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
@@ -28,15 +28,11 @@ sub doInventory {
my $inventory = $params{inventory};
my $logger = $params{logger};
- my $serial;
- my $id;
- my $speed;
-
my @dmidecodeCpu = getCpusFromDmidecode();
my $vmsystem;
-
my $cpuId = 0;
+
foreach my $object (getWmiObjects(
class => 'Win32_Processor',
properties => [ qw/NumberOfCores ProcessorId MaxClockSpeed/ ]
@@ -60,7 +56,6 @@ sub doInventory {
my $speed = $dmidecodeCpu[$cpuId]->{SPEED} || $object->{MaxClockSpeed};
my $serial = $dmidecodeCpu[$cpuId]->{SERIAL};
-
# Some information are missing on Win2000
if (!$name) {
$name = $ENV{PROCESSOR_IDENTIFIER};
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Controllers.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Controllers.pm
index 30fe815..c7da8e6 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Controllers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Controllers.pm
@@ -13,7 +13,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
my %seen;
foreach my $class (qw/
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Drives.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Drives.pm
index baab2a4..433232a 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Drives.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Drives.pm
@@ -23,7 +23,6 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
my $systemDrive;
foreach my $object (getWmiObjects(
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Environment.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Environment.pm
index 0cc4eab..93e02b4 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Environment.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Environment.pm
@@ -6,7 +6,9 @@ use warnings;
use FusionInventory::Agent::Tools::Win32;
sub isEnabled {
- return 1;
+ my (%params) = @_;
+
+ return !$params{no_category}->{environment};
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Inputs.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Inputs.pm
index 6d025f8..01c0c1d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Inputs.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Inputs.pm
@@ -29,7 +29,6 @@ sub isEnabled {
sub doInventory {
my (%params) = @_;
- my $logger = $params{logger};
my $inventory = $params{inventory};
foreach my $object (getWmiObjects(
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
index 6e7ce84..2795421 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
@@ -6,6 +6,7 @@ use integer;
use English qw(-no_match_vars);
+use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Hostname;
use FusionInventory::Agent::Tools::Win32;
@@ -32,21 +33,28 @@ sub doInventory {
path => 'HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/lanmanserver/Parameters/srvcomment',
logger => $logger
));
+ my $installDate = getFormatedLocalTime(hex2dec(
+ encodeFromRegistry(getRegistryValue(
+ path => 'HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/InstallDate',
+ logger => $logger
+ ))
+ ));
$object->{TotalSwapSpaceSize} = int($object->{TotalSwapSpaceSize} / (1024 * 1024))
if $object->{TotalSwapSpaceSize};
$inventory->setHardware({
- WINLANG => $object->{OSLanguage},
- OSNAME => $object->{Caption},
- OSVERSION => $object->{Version},
- WINPRODKEY => $key,
- WINPRODID => $object->{SerialNumber},
- WINCOMPANY => $object->{Organization},
- WINOWNER => $object->{RegistredUser},
- OSCOMMENTS => $object->{CSDVersion},
- SWAP => $object->{TotalSwapSpaceSize},
- DESCRIPTION => $description,
+ WINLANG => $object->{OSLanguage},
+ OSNAME => $object->{Caption},
+ OSVERSION => $object->{Version},
+ WINPRODKEY => $key,
+ WINPRODID => $object->{SerialNumber},
+ WINCOMPANY => $object->{Organization},
+ WINOWNER => $object->{RegistredUser},
+ OSCOMMENTS => $object->{CSDVersion},
+ SWAP => $object->{TotalSwapSpaceSize},
+ DESCRIPTION => $description,
+ OSINSTALLDATE => $installDate
});
$inventory->setOperatingSystem({
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
index 48e8e6d..d74b45b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
@@ -44,7 +44,8 @@ my @errStatus = (
sub isEnabled {
my (%params) = @_;
- return !$params{no_printer};
+
+ return !$params{no_category}->{printer};
}
sub doInventory {
@@ -124,20 +125,26 @@ sub _getUSBPrinterSerial {
return $serial;
}
+# find the ParentIdPrefix value for the printer matching given portname
sub _getUSBPrefix {
- my ($printKey, $portName) = @_;
-
- # find the printer entry matching given portname
- foreach my $printerKey (values %$printKey) {
- # look for a subkey with expected content
- foreach my $subKeyName (keys %$printerKey) {
- my $subKey = $printerKey->{$subKeyName};
+ my ($print, $portName) = @_;
+
+ # registry data structure:
+ # USBPRINT
+ # └── device
+ # └── subdevice
+ # └── Device Parameters
+ # └── PortName:value
+
+ foreach my $device (values %$print) {
+ foreach my $subdeviceName (keys %$device) {
+ my $subdevice = $device->{$subdeviceName};
next unless
- $subKey->{'Device Parameters/'} &&
- $subKey->{'Device Parameters/'}->{'/PortName'} &&
- $subKey->{'Device Parameters/'}->{'/PortName'} eq $portName;
+ $subdevice->{'Device Parameters/'} &&
+ $subdevice->{'Device Parameters/'}->{'/PortName'} &&
+ $subdevice->{'Device Parameters/'}->{'/PortName'} eq $portName;
# got it
- my $prefix = $subKeyName;
+ my $prefix = $subdeviceName;
$prefix =~ s{&$portName/$}{};
return $prefix;
};
@@ -146,19 +153,26 @@ sub _getUSBPrefix {
return;
}
+# find the key name for the device matching given parentIdPrefix
sub _getUSBSerial {
- my ($usbKey, $prefix) = @_;
+ my ($usb, $prefix) = @_;
+
+ # registry data structure:
+ # USB
+ # └── device
+ # └── subdevice
+ # └── ParentIdPrefix:value
- # find the device entry matching given container Id
- foreach my $deviceKey (values %$usbKey) {
- # look for a subkey with expected content
- foreach my $subKeyName (keys %$deviceKey) {
- my $subKey = $deviceKey->{$subKeyName};
+ foreach my $device (values %$usb) {
+ foreach my $subdeviceName (keys %$device) {
+ my $subdevice = $device->{$subdeviceName};
next unless
- $subKey->{'/ParentIdPrefix'} &&
- $subKey->{'/ParentIdPrefix'} eq $prefix;
+ $subdevice->{'/ParentIdPrefix'} &&
+ $subdevice->{'/ParentIdPrefix'} eq $prefix;
# got it
- my $serial = $subKeyName;
+ my $serial = $subdeviceName;
+ # pseudo serial generated by windows
+ return if $serial =~ /&/;
$serial =~ s{/$}{};
return $serial;
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index 4c6c9a7..e65d362 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -20,14 +20,13 @@ my $seen = {};
sub isEnabled {
my (%params) = @_;
- return !$params{no_software};
+ return !$params{no_category}->{software};
}
sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
if (is64bit()) {
@@ -50,10 +49,9 @@ sub doInventory {
_addSoftware(inventory => $inventory, entry => $software, logger => $logger);
}
_processMSIE(
- machKey => $machKey64,
+ machKey => $machKey64,
inventory => $inventory,
- is64bit => 1,
- logger => $logger,
+ is64bit => 1
);
my $machKey32 = $Registry->Open('LMachine', {
@@ -71,10 +69,9 @@ sub doInventory {
_addSoftware(inventory => $inventory, entry => $software, logger => $logger);
}
_processMSIE(
- machKey => $machKey32,
+ machKey => $machKey32,
inventory => $inventory,
- is64bit => 0,
- logger => $logger
+ is64bit => 0
);
@@ -93,10 +90,9 @@ sub doInventory {
_addSoftware(inventory => $inventory, entry => $software, logger => $logger);
}
_processMSIE(
- machKey => $machKey,
+ machKey => $machKey,
inventory => $inventory,
- is64bit => 0,
- logger => $logger
+ is64bit => 0
);
}
}
@@ -122,8 +118,6 @@ sub _getSoftwares {
my (%params) = @_;
my $softwares = $params{softwares};
- my $is64bit = $params{is64bit};
- my $logger = $params{logger};
my @softwares;
@@ -155,7 +149,7 @@ sub _getSoftwares {
VERSION_MINOR => hex2dec($data->{'/MinorVersion'}),
VERSION_MAJOR => hex2dec($data->{'/MajorVersion'}),
NO_REMOVE => hex2dec($data->{'/NoRemove'}),
- IS64BIT => $is64bit,
+ IS64BIT => $params{is64bit},
GUID => $guid,
};
@@ -169,7 +163,7 @@ sub _getSoftwares {
}
sub _addSoftware {
- my %params = @_;
+ my (%params) = @_;
my $entry = $params{entry};
@@ -181,28 +175,25 @@ sub _addSoftware {
}
sub _processMSIE {
- my %params = @_;
+ my (%params) = @_;
- my $inventory = $params{inventory};
- my $is64bit = $params{is64bit} || 0;
+ my $name = $params{is64bit} ?
+ "Internet Explorer (64bit)" : "Internet Explorer";
+ my $version =
+ $params{machKey}->{"SOFTWARE/Microsoft/Internet Explorer/Version"};
- my $name = "Internet Explorer";
- if ($is64bit) {
- $name .= " (64bit)";
- }
- my $version = $params{machKey}->{"SOFTWARE/Microsoft/Internet Explorer/Version"};
- return unless $version;
+ return unless $version; # Not installed
_addSoftware(
inventory => $params{inventory},
- logger => $params{logger},
- entry => {
- FROM => "registry",
- IS64BIT => $is64bit,
- NAME => $name,
- VERSION => $version,
- PUBLISHER => "Microsoft Corporation"
- });
+ entry => {
+ FROM => "registry",
+ IS64BIT => $params{is64bit},
+ NAME => $name,
+ VERSION => $version,
+ PUBLISHER => "Microsoft Corporation"
+ }
+ );
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
index a2d864d..df701fd 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
@@ -29,10 +29,11 @@ my %fields = (
MODEMS => [ qw/DESCRIPTION NAME/ ],
MONITORS => [ qw/BASE64 CAPTION DESCRIPTION MANUFACTURER SERIAL
UUENCODE/ ],
- NETWORKS => [ qw/DESCRIPTION DRIVER IPADDRESS IPADDRESS6 IPDHCP IPGATEWAY
- IPMASK IPSUBNET MACADDR MTU PCISLOT PNPDEVICEID STATUS
- TYPE VIRTUALDEV SLAVES SPEED MANAGEMENT BSSID SSID WWN
- MANUFACTURER FIRMWARE MODEL/ ],
+ NETWORKS => [ qw/BSSID DESCRIPTION DRIVER FIRMWARE IPADDRESS IPADDRESS6
+ IPDHCP IPGATEWAY IPMASK IPMASK6 IPSUBNET IPSUBNET6
+ MANAGEMENT MANUFACTURER MACADDR MODEL MTU PCISLOT
+ PNPDEVICEID STATUS SLAVES SPEED SSID TYPE VIRTUALDEV
+ WWN/ ],
PORTS => [ qw/CAPTION DESCRIPTION NAME TYPE/ ],
PROCESSES => [ qw/USER PID CPUUSAGE MEM VIRTUALMEMORY TTY STARTED CMD/ ],
REGISTRY => [ qw/NAME REGVALUE HIVE/ ],
@@ -51,11 +52,14 @@ my %fields = (
PRINTERS => [ qw/COMMENT DESCRIPTION DRIVER NAME NETWORK PORT RESOLUTION
SHARED STATUS ERRSTATUS SERVERNAME SHARENAME
PRINTPROCESSOR SERIAL/ ],
- VIRTUALMACHINES => [ qw/MEMORY NAME UUID STATUS SUBSYSTEM VMTYPE VCPU
- VMID MAC COMMENT OWNER/ ],
- LOGICAL_VOLUMES => [ qw/LV_NAME VGN_AME ATTR SIZE LV_UUID SEG_COUNT VG_UUID/ ],
- PHYSICAL_VOLUMES => [ qw/DEVICE PV_NAME PV_PE_COUNT PV_UUID FORMAT ATTR SIZE FREE PE_SIZE/ ],
- VOLUME_GROUPS => [ qw/VG_NAME PV_COUNT LV_COUNT ATTR SIZE FREE VG_UUID VG_EXTENT_SIZE/ ],
+ VIRTUALMACHINES => [ qw/MEMORY NAME UUID STATUS SUBSYSTEM VMTYPE VCPU
+ VMID MAC COMMENT OWNER/ ],
+ LOGICAL_VOLUMES => [ qw/LV_NAME VGN_AME ATTR SIZE LV_UUID SEG_COUNT
+ VG_UUID/ ],
+ PHYSICAL_VOLUMES => [ qw/DEVICE PV_NAME PV_PE_COUNT PV_UUID FORMAT ATTR
+ SIZE FREE PE_SIZE/ ],
+ VOLUME_GROUPS => [ qw/VG_NAME PV_COUNT LV_COUNT ATTR SIZE FREE VG_UUID
+ VG_EXTENT_SIZE/ ],
);
@@ -242,7 +246,7 @@ sub setHardware {
PROCESSORT NAME PROCESSORS SWAP ETIME TYPE OSNAME IPADDR WORKGROUP
DESCRIPTION MEMORY UUID DNS LASTLOGGEDUSER USERDOMAIN
DATELASTLOGGEDUSER DEFAULTGATEWAY VMSYSTEM WINOWNER WINPRODID
- WINPRODKEY WINCOMPANY WINLANG CHASSIS_TYPE/) {
+ WINPRODKEY WINCOMPANY WINLANG CHASSIS_TYPE OSINSTALLDATE/) {
# WINLANG: Windows Language, see MSDN Win32_OperatingSystem documentation
if (exists $args->{$key}) {
my $string = getSanitizedString($args->{$key});
@@ -299,16 +303,6 @@ sub setTag {
}
-sub checkContent {
- my ($self, $args) = @_;
-
- my $logger = $self->{logger};
-
- my $missing = 0;
- my $content = $self->{content};
-
-}
-
sub computeChecksum {
my ($self) = @_;
@@ -374,7 +368,7 @@ sub computeChecksum {
}
sub saveLastState {
- my ($self, $args) = @_;
+ my ($self) = @_;
my $logger = $self->{logger};
@@ -479,10 +473,6 @@ Set BIOS informations.
What is that for? :)
-=head2 checkContent()
-
-Check inventory content.
-
=head2 computeChecksum()
Compute the inventory checksum. This information is used by the server to
@@ -548,8 +538,6 @@ Motherboard model
=item ENCLOSURESERIAL
-=item BASEBOARDSERIAL
-
=item BIOSSERIAL
The optional asset tag for this machine.
diff --git a/lib/FusionInventory/Agent/Tools.pm b/lib/FusionInventory/Agent/Tools.pm
index 7ff5ed8..0e8e17d 100644
--- a/lib/FusionInventory/Agent/Tools.pm
+++ b/lib/FusionInventory/Agent/Tools.pm
@@ -202,7 +202,7 @@ sub getSanitizedString {
}
sub getDirectoryHandle {
- my %params = @_;
+ my (%params) = @_;
die "no directory parameter given" unless $params{directory};
@@ -218,7 +218,7 @@ sub getDirectoryHandle {
}
sub getFileHandle {
- my %params = @_;
+ my (%params) = @_;
my $handle;
@@ -252,7 +252,7 @@ sub getFileHandle {
}
sub getFirstLine {
- my %params = @_;
+ my (%params) = @_;
my $handle = getFileHandle(%params);
return unless $handle;
@@ -265,7 +265,7 @@ sub getFirstLine {
}
sub getLastLine {
- my %params = @_;
+ my (%params) = @_;
my $handle = getFileHandle(%params);
return unless $handle;
@@ -281,7 +281,7 @@ sub getLastLine {
}
sub getFirstMatch {
- my %params = @_;
+ my (%params) = @_;
return unless $params{pattern};
my $handle = getFileHandle(%params);
@@ -298,7 +298,7 @@ sub getFirstMatch {
}
sub getAllLines {
- my %params = @_;
+ my (%params) = @_;
my $handle = getFileHandle(%params);
return unless $handle;
@@ -316,7 +316,7 @@ sub getAllLines {
}
sub getLinesCount {
- my %params = @_;
+ my (%params) = @_;
my $handle = getFileHandle(%params);
return unless $handle;
diff --git a/lib/FusionInventory/Agent/Tools/AIX.pm b/lib/FusionInventory/Agent/Tools/AIX.pm
index 4524400..2eb9538 100644
--- a/lib/FusionInventory/Agent/Tools/AIX.pm
+++ b/lib/FusionInventory/Agent/Tools/AIX.pm
@@ -18,7 +18,7 @@ memoize('getLsvpdInfos');
memoize('getAdaptersFromLsdev');
sub getLsvpdInfos {
- my %params = (
+ my (%params) = (
command => 'lsvpd',
@_
);
@@ -55,7 +55,7 @@ sub getLsvpdInfos {
}
sub getAdaptersFromLsdev {
- my %params = (
+ my (%params) = (
command => 'lsdev -Cc adapter -F "name:type:description"',
@_
);
diff --git a/lib/FusionInventory/Agent/Tools/Generic.pm b/lib/FusionInventory/Agent/Tools/Generic.pm
index ca807ba..03c1cc5 100644
--- a/lib/FusionInventory/Agent/Tools/Generic.pm
+++ b/lib/FusionInventory/Agent/Tools/Generic.pm
@@ -19,7 +19,7 @@ memoize('getDmidecodeInfos');
memoize('getPCIDevices');
sub getDmidecodeInfos {
- my %params = (
+ my (%params) = (
command => 'dmidecode',
@_
);
@@ -124,7 +124,7 @@ sub getCpusFromDmidecode {
}
sub getPCIDevices {
- my %params = (
+ my (%params) = (
command => 'lspci -vvv -nn',
@_
);
diff --git a/lib/FusionInventory/Agent/Tools/HPUX.pm b/lib/FusionInventory/Agent/Tools/HPUX.pm
index 700a9d6..f897029 100644
--- a/lib/FusionInventory/Agent/Tools/HPUX.pm
+++ b/lib/FusionInventory/Agent/Tools/HPUX.pm
@@ -18,7 +18,7 @@ memoize('getInfoFromMachinfo');
memoize('isHPVMGuest');
sub getInfoFromMachinfo {
- my %params = (
+ my (%params) = (
command => '/usr/contrib/bin/machinfo',
@_
);
diff --git a/lib/FusionInventory/Agent/Tools/Linux.pm b/lib/FusionInventory/Agent/Tools/Linux.pm
index 2559bef..f2e90d4 100644
--- a/lib/FusionInventory/Agent/Tools/Linux.pm
+++ b/lib/FusionInventory/Agent/Tools/Linux.pm
@@ -24,7 +24,7 @@ our @EXPORT = qw(
memoize('getDevicesFromUdev');
sub getDevicesFromUdev {
- my %params = @_;
+ my (%params) = @_;
my @devices;
@@ -45,7 +45,7 @@ sub getDevicesFromUdev {
}
sub _parseUdevEntry {
- my %params = @_;
+ my (%params) = @_;
my $handle = getFileHandle(%params);
return unless $handle;
@@ -85,7 +85,7 @@ sub _parseUdevEntry {
}
sub getCPUsFromProc {
- my %params = (
+ my (%params) = (
file => '/proc/cpuinfo',
@_
);
@@ -120,7 +120,7 @@ sub _isValidCPU {
sub getDevicesFromHal {
- my %params = (
+ my (%params) = (
command => '/usr/bin/lshal',
@_
);
@@ -164,7 +164,7 @@ sub getDevicesFromHal {
}
sub getDevicesFromProc {
- my %params = @_;
+ my (%params) = @_;
# compute list of devices
my @names;
@@ -245,7 +245,7 @@ sub _getValueFromSysProc {
}
sub getSerialnumber {
- my %params = @_;
+ my (%params) = @_;
my ($serial) = getFirstMatch(
command => $params{device} ? "smartctl -i $params{device}" : undef,
@@ -258,7 +258,7 @@ sub getSerialnumber {
}
sub getInterfacesFromIfconfig {
- my %params = (
+ my (%params) = (
command => '/sbin/ifconfig -a',
@_
);
@@ -307,7 +307,7 @@ sub getInterfacesFromIfconfig {
return @interfaces;
}
sub getInterfacesFromIp {
- my %params = (
+ my (%params) = (
command => '/sbin/ip addr show',
@_
);
@@ -332,7 +332,7 @@ sub getInterfacesFromIp {
$interface->{IPADDRESS6} = $1;
} elsif ($line =~ /inet ($ip_address_pattern)\/(\d{1,3})/) {
$interface->{IPADDRESS} = $1;
- $interface->{IPMASK} = getNetworkMask($1, $2);
+ $interface->{IPMASK} = getNetworkMask($2);
$interface->{IPSUBNET} = getSubnetAddress(
$interface->{IPADDRESS}, $interface->{IPMASK}
);
diff --git a/lib/FusionInventory/Agent/Tools/MacOS.pm b/lib/FusionInventory/Agent/Tools/MacOS.pm
index 321f906..bef132c 100644
--- a/lib/FusionInventory/Agent/Tools/MacOS.pm
+++ b/lib/FusionInventory/Agent/Tools/MacOS.pm
@@ -5,6 +5,7 @@ use warnings;
use base 'Exporter';
use English qw(-no_match_vars);
+use Memoize;
use FusionInventory::Agent::Tools;
@@ -13,8 +14,10 @@ our @EXPORT = qw(
getIODevices
);
+memoize('getSystemProfilerInfos');
+
sub getSystemProfilerInfos {
- my %params = (
+ my (%params) = (
command => '/usr/sbin/system_profiler',
@_
);
@@ -32,14 +35,32 @@ sub getSystemProfilerInfos {
my $level = defined $1 ? length($1) : 0;
my $key = $2;
my $value = $3;
+
+ my $parent = $parents[-1];
+ my $parent_level = $parent->[1];
+ my $parent_node = $parent->[0];
+
+ if (defined $value) {
+ # check indentation level against parent node
+ if ($level <= $parent_level) {
+
+ if (keys %$parent_node == 0) {
+ # discard just created node, and fix its parent
+ my $parent_key = $parent->[2];
+ $parents[-2]->[0]->{$parent_key} = undef;
+ }
+
+ # unstack nodes until a suitable parent is found
+ while ($level <= $parents[-1]->[1]) {
+ pop @parents;
+ }
+ $parent_node = $parents[-1]->[0];
+ }
- if ($value) {
- # just add the value to the current parent
- $parents[-1]->[0]->{$key} = $value;
+ # add the value to the current node
+ $parent_node->{$key} = $value;
} else {
# compare level with parent
- my $parent_level = $parents[-1]->[1];
-
if ($level > $parent_level) {
# down the tree: no change
} elsif ($level < $parent_level) {
@@ -55,7 +76,7 @@ sub getSystemProfilerInfos {
# create a new node, and push it to the stack
my $parent_node = $parents[-1]->[0];
$parent_node->{$key} = {};
- push (@parents, [ $parent_node->{$key}, $level ]);
+ push (@parents, [ $parent_node->{$key}, $level, $key ]);
}
}
close $handle;
@@ -64,7 +85,7 @@ sub getSystemProfilerInfos {
}
sub getIODevices {
- my %params = @_;
+ my (%params) = @_;
# passing expected class to the command ensure only instance of this class
# are present in the output, reducing the size of the content to be parsed,
diff --git a/lib/FusionInventory/Agent/Tools/Network.pm b/lib/FusionInventory/Agent/Tools/Network.pm
index 65ce338..27bdd20 100644
--- a/lib/FusionInventory/Agent/Tools/Network.pm
+++ b/lib/FusionInventory/Agent/Tools/Network.pm
@@ -86,7 +86,7 @@ sub alt2canonical {
}
sub getNetworkMask {
- my ($address, $prefix) = @_;
+ my ($prefix) = @_;
my $mask;
$mask .= 1 foreach(1..$prefix);
@@ -143,6 +143,6 @@ Returns the subnet address for IPv4.
Returns the subnet address for IPv6.
-=head2 getNetworkMask($address, $prefix)
+=head2 getNetworkMask($prefix)
Returns the network mask.
diff --git a/lib/FusionInventory/Agent/Tools/Unix.pm b/lib/FusionInventory/Agent/Tools/Unix.pm
index 428f54f..decc968 100644
--- a/lib/FusionInventory/Agent/Tools/Unix.pm
+++ b/lib/FusionInventory/Agent/Tools/Unix.pm
@@ -24,7 +24,7 @@ our @EXPORT = qw(
memoize('getProcessesFromPs');
sub getDeviceCapacity {
- my %params = @_;
+ my (%params) = @_;
return unless $params{device};
@@ -46,7 +46,7 @@ sub getDeviceCapacity {
sub getIpDhcp {
my ($logger, $if) = @_;
- my $dhcpLeaseFile = _findDhcpLeaseFile($logger, $if);
+ my $dhcpLeaseFile = _findDhcpLeaseFile($if);
return unless $dhcpLeaseFile;
@@ -54,8 +54,7 @@ sub getIpDhcp {
}
sub _findDhcpLeaseFile {
- my ($logger, $if) = @_;
-
+ my ($if) = @_;
my @directories = qw(
/var/db
@@ -146,7 +145,7 @@ sub _parseDhcpLeaseFile {
}
sub getFilesystemsFromDf {
- my %params = (@_);
+ my (%params) = @_;
my $handle = getFileHandle(%params);
my @filesystems;
@@ -197,7 +196,7 @@ sub getFilesystemsFromDf {
}
sub getFilesystemsTypesFromMount {
- my %params = (
+ my (%params) = (
command => 'mount',
@_
);
@@ -334,7 +333,7 @@ sub getProcessesFromPs {
}
sub getRoutingTable {
- my %params = (
+ my (%params) = (
command => 'netstat -nr -f inet',
@_
);
diff --git a/lib/FusionInventory/Agent/Tools/Win32.pm b/lib/FusionInventory/Agent/Tools/Win32.pm
index 6624a0e..1c49573 100644
--- a/lib/FusionInventory/Agent/Tools/Win32.pm
+++ b/lib/FusionInventory/Agent/Tools/Win32.pm
@@ -70,7 +70,7 @@ sub encodeFromRegistry {
}
sub getWmiObjects {
- my %params = (
+ my (%params) = (
moniker => 'winmgmts:{impersonationLevel=impersonate,(security)}!//./',
@_
);
@@ -93,7 +93,7 @@ sub getWmiObjects {
}
sub getRegistryValue {
- my %params = @_;
+ my (%params) = @_;
my ($root, $keyName, $valueName);
if ($params{path} =~ /^(HKEY\S+?)\/(.*)\/([^\/.]*)/ ) {
diff --git a/lib/FusionInventory/Agent/XML/Query.pm b/lib/FusionInventory/Agent/XML/Query.pm
index 1c1e42d..0768f2e 100644
--- a/lib/FusionInventory/Agent/XML/Query.pm
+++ b/lib/FusionInventory/Agent/XML/Query.pm
@@ -21,7 +21,7 @@ sub new {
}
sub getContent {
- my ($self, $args) = @_;
+ my ($self) = @_;
my $tpp = XML::TreePP->new(indent => 2);
return $tpp->write({ REQUEST => $self->{h} });
diff --git a/resources/win32/README b/resources/win32/README
new file mode 100644
index 0000000..92b1517
--- /dev/null
+++ b/resources/win32/README
@@ -0,0 +1,6 @@
+Windows specific command and file samples
+
+wmi: wmi queries results
+- *-CIM_LogicalDevice: wmic path CIM_LogicalDevice get /Format:list
+
+registry: registry exports
diff --git a/resources/win32/wmi/xppro2-CIM_LogicalDevice.wmi b/resources/win32/wmi/xppro2-CIM_LogicalDevice.wmi
new file mode 100644
index 0000000..010bbba
Binary files /dev/null and b/resources/win32/wmi/xppro2-CIM_LogicalDevice.wmi differ
diff --git a/t/05var.t b/t/05var.t
index 15bd4bf..2f1896b 100644
--- a/t/05var.t
+++ b/t/05var.t
@@ -23,5 +23,7 @@ if ($EVAL_ERROR) {
plan(skip_all => 'Test::Vars required to validate the code');
}
-Test::Vars::all_vars_ok();
+Test::Vars::all_vars_ok(
+ ignore_vars => { '$i' => 1, '%params' => 1, '$class' => 1 }
+);
diff --git a/t/apps/agent.t b/t/apps/agent.t
index 51f0fa7..ec53755 100755
--- a/t/apps/agent.t
+++ b/t/apps/agent.t
@@ -10,7 +10,7 @@ use XML::TreePP;
use FusionInventory::Agent::Tools;
-use Test::More tests => 32;
+use Test::More tests => 37;
my ($out, $err, $rc);
@@ -42,10 +42,12 @@ like(
);
is($out, '', 'no target stdin');
+my $base_options = "--stdout --no-task ocsdeploy,wakeonlan,snmpquery,netdiscovery";
+
my $content;
# first inventory
($out, $err, $rc) = run_agent(
- "--stdout --no-ocsdeploy --no-wakeonlan --no-snmpquery --no-netdiscovery --no-printer"
+ "$base_options --no-category printer"
);
ok($rc == 0, 'exit status');
@@ -70,7 +72,7 @@ ok(
# second inventory, without software
($out, $err, $rc) = run_agent(
- "--stdout --no-ocsdeploy --no-wakeonlan --no-snmpquery --no-netdiscovery --no-printer --no-software"
+ "$base_options --no-category printer,software"
);
ok($rc == 0, 'exit status');
@@ -109,7 +111,7 @@ print $file <<EOF;
EOF
close($file);
($out, $err, $rc) = run_agent(
- "--stdout --no-ocsdeploy --no-wakeonlan --no-snmpquery --no-netdiscovery --no-printer --no-software --additional-content $file"
+ "$base_options --no-category printer,software --additional-content $file"
);
ok($rc == 0, 'exit status');
@@ -129,7 +131,7 @@ ok(
ok(
ref $content->{REQUEST}->{CONTENT}->{SOFTWARES} eq 'HASH',
- 'software list has only one element'
+ 'inventory has expected software list'
);
ok(
@@ -143,11 +145,10 @@ ok(
'inventory has environment variables'
);
-# create inventory targets
-$ENV{FOO} = 'bar';
+my $path = $ENV{PATH};
($out, $err, $rc) = run_agent(
- "--stdout --no-ocsdeploy --no-wakeonlan --no-snmpquery --no-netdiscovery --no-printer --no-software"
+ "$base_options --no-category printer,software"
);
ok($rc == 0, 'exit status');
@@ -162,7 +163,7 @@ ok($content, 'output is valid XML');
ok(
!exists $content->{REQUEST}->{CONTENT}->{SOFTWARES},
- "output doesn't have any software"
+ "inventory doesn't have any software"
);
ok(
@@ -170,16 +171,37 @@ ok(
'inventory has environment variables'
);
-SKIP: {
-skip '$ENV not set by IPC::Run on Windows', 1 if $OSNAME eq 'MSWin32';
ok(
(any
- { $_->{KEY} eq 'FOO' && $_->{VAL} eq 'bar' }
+ { $_->{KEY} eq 'PATH' && $_->{VAL} eq $path }
@{$content->{REQUEST}->{CONTENT}->{ENVS}}
),
- 'expected environment variable'
+ 'inventory has expected environment variable value'
+);
+
+($out, $err, $rc) = run_agent(
+ "$base_options --no-category printer,software,environment"
+);
+ok($rc == 0, 'exit status');
+
+like(
+ $out,
+ qr/^<\?xml version="1.0" encoding="UTF-8" \?>/,
+ 'output has correct encoding'
+);
+
+$content = XML::TreePP->new()->parse($out);
+ok($content, 'output is valid XML');
+
+ok(
+ !exists $content->{REQUEST}->{CONTENT}->{SOFTWARES},
+ "inventory doesn't have any software"
+);
+
+ok(
+ !exists $content->{REQUEST}->{CONTENT}->{ENVS},
+ "inventory doesn't have any environment variables"
);
-}
sub run_agent {
my ($args) = @_;
diff --git a/t/inventory/macos/storages.t b/t/inventory/macos/storages.t
new file mode 100755
index 0000000..62a3759
--- /dev/null
+++ b/t/inventory/macos/storages.t
@@ -0,0 +1,98 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use FusionInventory::Agent::Task::Inventory::Input::MacOS::Storages;
+
+my %tests = (
+ '10.4-powerpc' => [
+ {
+ NAME => 'HL-DT-ST DVD-RW GWA-4165B',
+ FIRMWARE => 'C006',
+ TYPE => 'ATA',
+ SERIAL => 'B6FD7234EC63',
+ DISKSIZE => undef,
+ MANUFACTURER => 'HL-DT-ST DVD-RW GWA-4165B',
+ MODEL => '',
+ DESCRIPTION => 'CD-ROM Drive'
+ }
+ ],
+ '10.5-powerpc' => [
+ {
+ NAME => 'HL-DT-ST DVD-RW GWA-4165B',
+ FIRMWARE => 'C006',
+ TYPE => 'ATA',
+ SERIAL => 'B6FD7234EC63',
+ DISKSIZE => undef,
+ MANUFACTURER => 'HL-DT-ST DVD-RW GWA-4165B',
+ MODEL => '',
+ DESCRIPTION => 'CD-ROM Drive'
+ },
+ {
+ NAME => 'Flash Disk',
+ FIRMWARE => undef,
+ TYPE => 'USB',
+ SERIAL => '110074973765',
+ DISKSIZE => 2007,
+ MANUFACTURER => 'Flash Disk',
+ MODEL => undef,
+ DESCRIPTION => 'Disk drive'
+ },
+ {
+ NAME => 'DataTraveler 2.0',
+ FIRMWARE => undef,
+ TYPE => 'USB',
+ SERIAL => '89980116200801151425097A',
+ DISKSIZE => 3850,
+ MANUFACTURER => 'DataTraveler 2.0',
+ MODEL => undef,
+ DESCRIPTION => 'Disk drive'
+ }
+ ],
+ '10.6-intel' => [
+ {
+ NAME => 'MATSHITADVD-R UJ-875',
+ FIRMWARE => 'DB09',
+ TYPE => 'ATA',
+ SERIAL => ' fG424F9E',
+ DISKSIZE => undef,
+ MANUFACTURER => 'Matshita',
+ MODEL => 'DVD-R UJ-875',
+ DESCRIPTION => 'CD-ROM Drive'
+ },
+ {
+ NAME => 'Flash Disk ',
+ FIRMWARE => undef,
+ TYPE => 'USB',
+ SERIAL => '110074973765',
+ DISKSIZE => 2160,
+ MANUFACTURER => 'Flash Disk ',
+ MODEL => undef,
+ DESCRIPTION => 'Disk drive'
+ }
+ ],
+ '10.6.6-intel' => [
+ {
+ NAME => 'MATSHITACD-RW CW-8221',
+ FIRMWARE => 'GA0J',
+ TYPE => 'ATA',
+ SERIAL => undef,
+ DISKSIZE => undef,
+ MANUFACTURER => 'Matshita',
+ MODEL => 'CD-RW CW-8221',
+ DESCRIPTION => 'CD-ROM Drive'
+ }
+ ]
+);
+
+plan tests => scalar keys %tests;
+
+foreach my $test (keys %tests) {
+ my $file = "resources/macos/system_profiler/$test";
+ my @storages = FusionInventory::Agent::Task::Inventory::Input::MacOS::Storages::_getStorages(file => $file);
+ is_deeply(\@storages, $tests{$test}, $test) or print Dumper(\@storages);
+ use Data::Dumper;
+}
diff --git a/t/inventory/macos/video.t b/t/inventory/macos/video.t
deleted file mode 100755
index 3f5d3f7..0000000
--- a/t/inventory/macos/video.t
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-use Test::More;
-
-use FusionInventory::Agent::Task::Inventory::Input::MacOS::Videos;
-
-my %tests = (
- '10.4-powerpc' => {
- MONITORS => [
- {
- DESCRIPTION => 'ASUS VH222',
- CAPTION => 'ASUS VH222'
- }
- ],
- VIDEOS => [
- {
- NAME => 'NVIDIA GeForce 6600',
- RESOLUTION => '1360x768',
- CHIPSET => 'GeForce 6600',
- MEMORY => '256',
- PCISLOT => 'SLOT-1'
- }
- ]
- },
- '10.5-powerpc' =>
- {
- MONITORS => [
- {
- DESCRIPTION => 'ASUS VH222',
- CAPTION => 'ASUS VH222'
- }
- ],
- VIDEOS => [
- {
- NAME => 'NVIDIA GeForce 6600',
- RESOLUTION => '1680x1050',
- CHIPSET => 'GeForce 6600',
- MEMORY => '256',
- PCISLOT => 'SLOT-1'
- }
- ]
- },
- '10.6-intel' => {
- MONITORS => [
- {
- DESCRIPTION => 'iMac',
- CAPTION => 'iMac'
- }
- ],
- VIDEOS => [
- {
- NAME => 'ATI Radeon HD 2600 Pro',
- RESOLUTION => '1920x1200',
- CHIPSET => 'ATI,RadeonHD2600',
- MEMORY => '256',
- PCISLOT => undef
- }
- ]
- },
- '10.6.6-intel' => {
- MONITORS => [
- {
- DESCRIPTION => 'Color LCD',
- CAPTION => 'Color LCD'
- }
- ],
- VIDEOS => [
- {
- NAME => 'Intel GMA 950',
- RESOLUTION => '1280x800',
- CHIPSET => 'GMA 950',
- MEMORY => '64',
- PCISLOT => undef
- }
- ]
- }
-);
-
-plan tests => scalar keys %tests;
-
-foreach my $test (keys %tests) {
- my $file = "resources/macos/system_profiler/$test";
- my %displays = FusionInventory::Agent::Task::Inventory::Input::MacOS::Videos::_getDisplays(file => $file);
- is_deeply(\%displays, $tests{$test}, $test);
-}
diff --git a/t/inventory/macos/videos.t b/t/inventory/macos/videos.t
new file mode 100755
index 0000000..3f5d3f7
--- /dev/null
+++ b/t/inventory/macos/videos.t
@@ -0,0 +1,88 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use FusionInventory::Agent::Task::Inventory::Input::MacOS::Videos;
+
+my %tests = (
+ '10.4-powerpc' => {
+ MONITORS => [
+ {
+ DESCRIPTION => 'ASUS VH222',
+ CAPTION => 'ASUS VH222'
+ }
+ ],
+ VIDEOS => [
+ {
+ NAME => 'NVIDIA GeForce 6600',
+ RESOLUTION => '1360x768',
+ CHIPSET => 'GeForce 6600',
+ MEMORY => '256',
+ PCISLOT => 'SLOT-1'
+ }
+ ]
+ },
+ '10.5-powerpc' =>
+ {
+ MONITORS => [
+ {
+ DESCRIPTION => 'ASUS VH222',
+ CAPTION => 'ASUS VH222'
+ }
+ ],
+ VIDEOS => [
+ {
+ NAME => 'NVIDIA GeForce 6600',
+ RESOLUTION => '1680x1050',
+ CHIPSET => 'GeForce 6600',
+ MEMORY => '256',
+ PCISLOT => 'SLOT-1'
+ }
+ ]
+ },
+ '10.6-intel' => {
+ MONITORS => [
+ {
+ DESCRIPTION => 'iMac',
+ CAPTION => 'iMac'
+ }
+ ],
+ VIDEOS => [
+ {
+ NAME => 'ATI Radeon HD 2600 Pro',
+ RESOLUTION => '1920x1200',
+ CHIPSET => 'ATI,RadeonHD2600',
+ MEMORY => '256',
+ PCISLOT => undef
+ }
+ ]
+ },
+ '10.6.6-intel' => {
+ MONITORS => [
+ {
+ DESCRIPTION => 'Color LCD',
+ CAPTION => 'Color LCD'
+ }
+ ],
+ VIDEOS => [
+ {
+ NAME => 'Intel GMA 950',
+ RESOLUTION => '1280x800',
+ CHIPSET => 'GMA 950',
+ MEMORY => '64',
+ PCISLOT => undef
+ }
+ ]
+ }
+);
+
+plan tests => scalar keys %tests;
+
+foreach my $test (keys %tests) {
+ my $file = "resources/macos/system_profiler/$test";
+ my %displays = FusionInventory::Agent::Task::Inventory::Input::MacOS::Videos::_getDisplays(file => $file);
+ is_deeply(\%displays, $tests{$test}, $test);
+}
diff --git a/t/inventory/windows/printers.t b/t/inventory/windows/printers.t
index 156549f..8199b06 100755
--- a/t/inventory/windows/printers.t
+++ b/t/inventory/windows/printers.t
@@ -15,23 +15,23 @@ use FusionInventory::Agent::Task::Inventory::Input::Win32::Printers;
my %tests = (
xppro1 => {
- USB001 => [ '6&397bdcac&0', '49R8Ka' ],
- USB002 => [ '6&2ad9257f&0', '5&19d1ce61&0&2' ],
- USB003 => [ '6&1605722f&0', '5&2377f6ef&0&2' ],
+ USB001 => '49R8Ka',
+ USB002 => undef,
+ USB003 => undef
},
xppro2 => {
- USB001 => [ '6&1086615&0', 'J5J126789' ],
- USB003 => [ '6&159b6df2&0', 'JV40VNJ' ],
- USB004 => [ '7&20bd29b5&0', '6&28e27c3d&0&0000' ],
+ USB001 => 'J5J126789',
+ USB003 => 'JV40VNJ',
+ USB004 => undef,
},
7 => {
- USB001 => [ '7&17e8a3c3&0', 'MY26K1K34C2L' ],
+ USB001 => 'MY26K1K34C2L'
}
);
my $plan = 0;
foreach my $test (keys %tests) {
- $plan += 2 * scalar (keys %{$tests{$test}});
+ $plan += scalar (keys %{$tests{$test}});
}
plan tests => $plan;
@@ -42,8 +42,7 @@ foreach my $test (keys %tests) {
my $prefix = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBPrefix($printKey, $port);
my $serial = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBSerial($usbKey, $prefix);
- is($prefix, $tests{$test}->{$port}->[0], "prefix for printer $port");
- is($serial, $tests{$test}->{$port}->[1], "serial for printer $port");
+ is($serial, $tests{$test}->{$port}, "serial for printer $port");
}
}
diff --git a/t/inventory/windows/usb.t b/t/inventory/windows/usb.t
index 6cc447f..f8a5147 100755
--- a/t/inventory/windows/usb.t
+++ b/t/inventory/windows/usb.t
@@ -48,6 +48,41 @@ my %tests = (
VENDORID => '046D',
PRODUCTID => 'C30A'
},
+ ],
+ xppro2 => [
+ {
+ NAME => "Concentrador USB genérico",
+ VENDORID => '046A',
+ PRODUCTID => '0009'
+ },
+ {
+ NAME => 'Dispositivo compuesto USB',
+ VENDORID => '046A',
+ PRODUCTID => '0019'
+ },
+ {
+ NAME => 'SmartTerminal XX44',
+ VENDORID => '046A',
+ PRODUCTID => '002D'
+ },
+ {
+ NAME => 'Compatibilidad con impresoras USB',
+ SERIAL => 'JV40VNJ',
+ VENDORID => '03F0',
+ PRODUCTID => '3A17'
+ },
+ {
+ NAME => 'Compatibilidad con impresoras USB',
+ SERIAL => 'J5J126789',
+ VENDORID => '04F9',
+ PRODUCTID => '002B'
+ },
+ {
+ NAME => 'Dispositivo compuesto USB',
+ SERIAL => '00CNBW86S20B',
+ VENDORID => '03F0',
+ PRODUCTID => '3817'
+ }
]
);
diff --git a/t/tools/macos.t b/t/tools/macos.t
index 01df645..34aefd5 100755
--- a/t/tools/macos.t
+++ b/t/tools/macos.t
@@ -18,9 +18,8 @@ my %system_profiler_tests = (
'BSD Device Name' => 'en1',
'Ethernet' => {
'MAC Address' => '00:14:51:61:ef:09',
- 'Media Options' => {
- 'Media Subtype' => 'autoselect'
- }
+ 'Media Options' => undef,
+ 'Media Subtype' => 'autoselect'
},
'Hardware' => 'Ethernet',
'Type' => 'Ethernet',
@@ -29,10 +28,9 @@ my %system_profiler_tests = (
},
'Proxies' => {
'Proxy Configuration Method' => 'Manual',
- 'ExcludeSimpleHostnames' => {
- 'Auto Discovery Enabled' => 'No',
- 'FTP Passive Mode' => 'Yes'
- }
+ 'ExcludeSimpleHostnames' => 0,
+ 'Auto Discovery Enabled' => 'No',
+ 'FTP Passive Mode' => 'Yes'
}
},
'Modem interne' => {
@@ -48,10 +46,9 @@ my %system_profiler_tests = (
'Hardware' => 'Modem',
'Proxies' => {
'Proxy Configuration Method' => 'Manual',
- 'ExcludeSimpleHostnames' => {
- 'Auto Discovery Enabled' => 'No',
- 'FTP Passive Mode' => 'Yes'
- }
+ 'ExcludeSimpleHostnames' => 0,
+ 'Auto Discovery Enabled' => 'No',
+ 'FTP Passive Mode' => 'Yes'
}
},
'Ethernet intégré' => {
@@ -74,12 +71,11 @@ my %system_profiler_tests = (
'IPv4 Addresses' => '10.0.1.110',
'DHCP Server Responses' => {
'Domain Name' => 'lan',
- 'Lease Duration (seconds)' => {
- 'Routers' => '10.0.1.1',
- 'Subnet Mask' => '255.255.255.0',
- 'Server Identifier' => '10.0.1.1',
- 'DHCP Message Type' => '0x05'
- },
+ 'Lease Duration (seconds)' => 0,
+ 'Routers' => '10.0.1.1',
+ 'Subnet Mask' => '255.255.255.0',
+ 'Server Identifier' => '10.0.1.1',
+ 'DHCP Message Type' => '0x05',
'Domain Name Servers' => '10.0.1.1'
},
'IPv4' => {
@@ -112,10 +108,9 @@ my %system_profiler_tests = (
'Hardware' => 'Modem',
'Proxies' => {
'Proxy Configuration Method' => 'Manual',
- 'ExcludeSimpleHostnames' => {
- 'Auto Discovery Enabled' => 'No',
- 'FTP Passive Mode' => 'Yes'
- }
+ 'ExcludeSimpleHostnames' => 0,
+ 'Auto Discovery Enabled' => 'No',
+ 'FTP Passive Mode' => 'Yes'
}
},
'FireWire intégré' => {
@@ -136,10 +131,9 @@ my %system_profiler_tests = (
},
'Proxies' => {
'Proxy Configuration Method' => 'Manual',
- 'ExcludeSimpleHostnames' => {
- 'Auto Discovery Enabled' => 'No',
- 'FTP Passive Mode' => 'Yes'
- }
+ 'ExcludeSimpleHostnames' => 0,
+ 'Auto Discovery Enabled' => 'No',
+ 'FTP Passive Mode' => 'Yes'
}
}
},
@@ -159,11 +153,10 @@ my %system_profiler_tests = (
'Configuration Method' => 'DHCP'
},
'Proxies' => {
- 'Auto Discovery Enabled' => {},
+ 'Auto Discovery Enabled' => 0,
'Proxy Configuration Method' => '2',
- 'ExcludeSimpleHostnames' => {
- 'FTP Passive Mode' => '1'
- }
+ 'ExcludeSimpleHostnames' => 0,
+ 'FTP Passive Mode' => '1'
},
'Hardware (MAC) Address' => '00:14:51:61:ef:09'
},
@@ -176,36 +169,32 @@ my %system_profiler_tests = (
'Configuration Method' => 'PPP'
},
'Proxies' => {
- 'Auto Discovery Enabled' => {},
+ 'Auto Discovery Enabled' => 0,
'Proxy Configuration Method' => '2',
- 'ExcludeSimpleHostnames' => {
- 'FTP Passive Mode' => '1'
- }
+ 'ExcludeSimpleHostnames' => 0,
+ 'FTP Passive Mode' => '1'
},
'PPP' => {
- 'ACSP Enabled' => {},
- 'Idle Reminder' => {
- 'IPCP Compression VJ' => '1',
- 'LCP Echo Interval' => '10',
- 'LCP Echo Enabled' => '1',
- 'Log File' => '/var/log/ppp.log',
- 'Idle Reminder Time' => '1800',
- 'LCP Echo Failure' => '4'
- },
- 'Verbose Logging' => {},
- 'Dial On Demand' => {
- 'Disconnect On Logout' => '1',
- 'Disconnect On Idle Timer' => '600',
- 'Disconnect On Idle' => '1',
- 'Disconnect On Fast User Switch' => '1',
- 'Disconnect On Sleep' => '1'
- },
- 'Display Terminal Window' => {
- 'Redial Enabled' => '1',
- 'Redial Count' => '1',
- 'Redial Interval' => '5'
- },
- 'Use Terminal Script' => {}
+ 'ACSP Enabled' => 0,
+ 'Idle Reminder' => 0,
+ 'IPCP Compression VJ' => '1',
+ 'LCP Echo Interval' => '10',
+ 'LCP Echo Enabled' => '1',
+ 'Log File' => '/var/log/ppp.log',
+ 'Idle Reminder Time' => '1800',
+ 'LCP Echo Failure' => '4',
+ 'Verbose Logging' => 0,
+ 'Dial On Demand' => 0,
+ 'Disconnect On Logout' => '1',
+ 'Disconnect On Idle Timer' => '600',
+ 'Disconnect On Idle' => '1',
+ 'Disconnect On Fast User Switch' => '1',
+ 'Disconnect On Sleep' => '1',
+ 'Display Terminal Window' => 0,
+ 'Redial Enabled' => '1',
+ 'Redial Count' => '1',
+ 'Redial Interval' => '5',
+ 'Use Terminal Script' => 0,
}
},
'Ethernet intégré' => {
@@ -221,14 +210,13 @@ my %system_profiler_tests = (
'Configuration Method' => 'DHCP'
},
'Proxies' => {
- 'SOCKS Proxy Enabled' => {},
- 'HTTPS Proxy Enabled' => {},
- 'FTP Proxy Enabled' => {
- 'FTP Passive Mode' => '1'
- },
- 'Gopher Proxy Enabled' => {},
- 'HTTP Proxy Enabled' => {},
- 'RTSP Proxy Enabled' => {}
+ 'SOCKS Proxy Enabled' => 0,
+ 'HTTPS Proxy Enabled' => 0,
+ 'FTP Proxy Enabled' => 0,
+ 'FTP Passive Mode' => '1',
+ 'Gopher Proxy Enabled' => 0,
+ 'HTTP Proxy Enabled' => 0,
+ 'RTSP Proxy Enabled' => 0,
},
'Hardware (MAC) Address' => '00:14:51:61:ef:08'
},
@@ -241,37 +229,32 @@ my %system_profiler_tests = (
'Configuration Method' => 'PPP'
},
'Proxies' => {
- 'Auto Discovery Enabled' => {},
+ 'Auto Discovery Enabled' => 0,
'Proxy Configuration Method' => '2',
- 'ExcludeSimpleHostnames' => {
- 'FTP Passive Mode' => '1'
- }
+ 'ExcludeSimpleHostnames' => 0,
+ 'FTP Passive Mode' => '1'
},
'PPP' => {
- 'ACSP Enabled' => {},
- 'Idle Reminder' => {
- 'IPCP Compression VJ' => '1',
- 'Idle Reminder Time' => '1800'
- },
- 'Verbose Logging' => {},
- 'LCP Echo Enabled' => {
+ 'ACSP Enabled' => 0,
+ 'Idle Reminder' => 0,
+ 'IPCP Compression VJ' => '1',
+ 'Idle Reminder Time' => '1800',
+ 'Verbose Logging' => 0,
+ 'LCP Echo Enabled' => 0,
'LCP Echo Interval' => '10',
'Log File' => '/var/log/ppp.log',
- 'LCP Echo Failure' => '4'
- },
- 'Dial On Demand' => {
+ 'LCP Echo Failure' => '4',
+ 'Dial On Demand' => 0,
'Disconnect On Logout' => '1',
'Disconnect On Idle Timer' => '600',
'Disconnect On Idle' => '1',
'Disconnect On Fast User Switch' => '1',
- 'Disconnect On Sleep' => '1'
- },
- 'Display Terminal Window' => {
- 'Redial Enabled' => '1',
- 'Redial Count' => '1',
- 'Redial Interval' => '5'
- },
- 'Use Terminal Script' => {}
+ 'Disconnect On Sleep' => '1',
+ 'Display Terminal Window' => 0,
+ 'Redial Enabled' => '1',
+ 'Redial Count' => '1',
+ 'Redial Interval' => '5',
+ 'Use Terminal Script' => 0,
}
},
'FireWire intégré' => {
@@ -287,11 +270,10 @@ my %system_profiler_tests = (
'Configuration Method' => 'DHCP'
},
'Proxies' => {
- 'Auto Discovery Enabled' => {},
+ 'Auto Discovery Enabled' => 0,
'Proxy Configuration Method' => '2',
- 'ExcludeSimpleHostnames' => {
- 'FTP Passive Mode' => '1'
- }
+ 'ExcludeSimpleHostnames' => 0,
+ 'FTP Passive Mode' => '1'
},
'Hardware (MAC) Address' => '00:14:51:ff:fe:1a:c8:e2'
}
@@ -344,12 +326,11 @@ my %system_profiler_tests = (
'Removable Media' => 'No',
'BSD Name' => 'disk0',
'Protocol' => 'ata',
- 'Unit Number' => {
- 'OS9 Drivers' => 'No',
- 'Socket Type' => 'Serial-ATA',
- 'S.M.A.R.T. status' => 'Verified',
- 'Bay Name' => '"A (upper)"'
- }
+ 'Unit Number' => 0,
+ 'OS9 Drivers' => 'No',
+ 'Socket Type' => 'Serial-ATA',
+ 'S.M.A.R.T. status' => 'Verified',
+ 'Bay Name' => '"A (upper)"'
}
}
},
@@ -402,9 +383,8 @@ my %system_profiler_tests = (
'Detachable Drive' => 'No',
'Serial Number' => 'B6FD7234EC63',
'Protocol' => 'ATAPI',
- 'Unit Number' => {
- 'Socket Type' => 'Internal'
- },
+ 'Unit Number' => 0,
+ 'Socket Type' => 'Internal',
'Model' => 'HL-DT-ST DVD-RW GWA-4165B'
}
}
@@ -563,17 +543,16 @@ my %system_profiler_tests = (
'Power' => {
'System Power Settings' => {
'AC Power' => {
- 'System Sleep Timer (Minutes)' => {
- 'Reduce Processor Speed' => 'No',
- 'Dynamic Power Step' => 'Yes',
- 'Display Sleep Timer (Minutes)' => '10',
- 'Disk Sleep Timer (Minutes)' => '10',
- 'Automatic Restart On Power Loss' => 'No',
- 'Sleep On Power Button' => 'Yes',
- 'Wake On AC Change' => 'No',
- 'Wake On Modem Ring' => 'Yes',
- 'Wake On LAN' => 'Yes'
- }
+ 'System Sleep Timer (Minutes)' => 0,
+ 'Reduce Processor Speed' => 'No',
+ 'Dynamic Power Step' => 'Yes',
+ 'Display Sleep Timer (Minutes)' => '10',
+ 'Disk Sleep Timer (Minutes)' => '10',
+ 'Automatic Restart On Power Loss' => 'No',
+ 'Sleep On Power Button' => 'Yes',
+ 'Wake On AC Change' => 'No',
+ 'Wake On Modem Ring' => 'Yes',
+ 'Wake On LAN' => 'Yes'
}
}
}
@@ -790,11 +769,10 @@ my %system_profiler_tests = (
'Detachable Drive' => 'No',
'Serial Number' => 'B6FD7234EC63',
'Protocol' => 'ATAPI',
- 'Unit Number' => {
- 'Low Power Polling' => 'No',
- 'Socket Type' => 'Internal',
- 'Power Off' => 'No'
- },
+ 'Unit Number' => 0,
+ 'Low Power Polling' => 'No',
+ 'Socket Type' => 'Internal',
+ 'Power Off' => 'No',
'Model' => 'HL-DT-ST DVD-RW GWA-4165B'
}
}
@@ -856,18 +834,17 @@ my %system_profiler_tests = (
},
'System Power Settings' => {
'AC Power' => {
- 'System Sleep Timer (Minutes)' => {
- 'Reduce Processor Speed' => 'No',
- 'Dynamic Power Step' => 'Yes',
- 'Display Sleep Timer (Minutes)' => '3',
- 'Disk Sleep Timer (Minutes)' => '10',
- 'Automatic Restart On Power Loss' => 'No',
- 'Sleep On Power Button' => 'Yes',
- 'Wake On AC Change' => 'No',
- 'Wake On Clamshell Open' => 'Yes',
- 'Wake On Modem Ring' => 'Yes',
- 'Wake On LAN' => 'Yes'
- }
+ 'System Sleep Timer (Minutes)' => 0,
+ 'Reduce Processor Speed' => 'No',
+ 'Dynamic Power Step' => 'Yes',
+ 'Display Sleep Timer (Minutes)' => '3',
+ 'Disk Sleep Timer (Minutes)' => '10',
+ 'Automatic Restart On Power Loss' => 'No',
+ 'Sleep On Power Button' => 'Yes',
+ 'Wake On AC Change' => 'No',
+ 'Wake On Clamshell Open' => 'Yes',
+ 'Wake On Modem Ring' => 'Yes',
+ 'Wake On LAN' => 'Yes'
}
}
},
@@ -942,12 +919,11 @@ my %system_profiler_tests = (
},
'DHCP Server Responses' => {
'Domain Name' => 'lan',
- 'Lease Duration (seconds)' => {
- 'Routers' => '10.0.1.1',
- 'Subnet Mask' => '255.255.255.0',
- 'Server Identifier' => '10.0.1.1',
- 'DHCP Message Type' => '0x05'
- },
+ 'Lease Duration (seconds)' => 0,
+ 'Routers' => '10.0.1.1',
+ 'Subnet Mask' => '255.255.255.0',
+ 'Server Identifier' => '10.0.1.1',
+ 'DHCP Message Type' => '0x05',
'Domain Name Servers' => '10.0.1.1'
},
'Type' => 'Ethernet',
@@ -988,9 +964,8 @@ my %system_profiler_tests = (
'BSD Device Name' => 'en1',
'Ethernet' => {
'MAC Address' => '00:14:51:61:ef:09',
- 'Media Options' => {
- 'Media Subtype' => 'Auto Select'
- }
+ 'Media Options' => undef,
+ 'Media Subtype' => 'Auto Select'
},
'Hardware' => 'AirPort',
'Type' => 'AirPort',
@@ -1049,13 +1024,12 @@ my %system_profiler_tests = (
'Removable Media' => 'No',
'BSD Name' => 'disk0',
'Protocol' => 'ata',
- 'Unit Number' => {
- 'Mac OS 9 Drivers' => 'No',
- 'Socket Type' => 'Serial-ATA',
- 'S.M.A.R.T. status' => 'Verified',
- 'Partition Map Type' => 'APM (Apple Partition Map)',
- 'Bay Name' => '"B (lower)"'
- }
+ 'Unit Number' => 0,
+ 'Mac OS 9 Drivers' => 'No',
+ 'Socket Type' => 'Serial-ATA',
+ 'S.M.A.R.T. status' => 'Verified',
+ 'Partition Map Type' => 'APM (Apple Partition Map)',
+ 'Bay Name' => '"B (lower)"'
}
}
},
@@ -1361,14 +1335,14 @@ my %system_profiler_tests = (
'IEEE80211' => {
'Join Mode' => 'Automatic',
'Disconnect on Logout' => 'No',
- 'PowerEnabled' => {},
+ 'PowerEnabled' => 0,
'PreferredNetworks' => {
'Unique Network ID' => '905AE8BA-BD26-48F3-9486-AE5BC72FE642',
- 'RememberRecentNetworks' => '1',
'SecurityType' => 'WPA2 Personal',
'Unique Password ID' => '907EDC44-8C27-44A0-B5F5-2D04E1A5942A',
'SSID_STR' => 'freewa'
},
+ 'RememberRecentNetworks' => '1',
'JoinModeFallback' => 'Prompt'
}
}
@@ -1386,7 +1360,7 @@ my %system_profiler_tests = (
'Current Available (mA)' => '500',
'Speed' => 'Up to 12 Mb/sec',
'Product ID' => '0x8206',
- 'Current Required (mA)' => {},
+ 'Current Required (mA)' => 0,
'Manufacturer' => 'Apple Inc.',
'Vendor ID' => '0x05ac (Apple Inc.)'
},
@@ -1469,11 +1443,10 @@ my %system_profiler_tests = (
'Detachable Drive' => 'No',
'Serial Number' => ' fG424F9E',
'Protocol' => 'ATAPI',
- 'Unit Number' => {
- 'Low Power Polling' => 'Yes',
- 'Socket Type' => 'Internal',
- 'Power Off' => 'No'
- },
+ 'Unit Number' => 0,
+ 'Low Power Polling' => 'Yes',
+ 'Socket Type' => 'Internal',
+ 'Power Off' => 'No',
'Model' => 'MATSHITADVD-R UJ-875'
}
}
@@ -1530,12 +1503,10 @@ my %system_profiler_tests = (
'Apple Bluetooth Software Version' => '2.3.3f8',
'Outgoing Serial Ports' => {
'Serial Port 1' => {
- 'Address' => {
- 'Name' => 'Bluetooth-Modem'
- },
- 'RFCOMM Channel' => {
- 'Requires Authentication' => 'No'
- }
+ 'Address' => undef,
+ 'Name' => 'Bluetooth-Modem',
+ 'RFCOMM Channel' => 0,
+ 'Requires Authentication' => 'No'
}
},
'Services' => {
@@ -1624,9 +1595,8 @@ my %system_profiler_tests = (
'BSD Device Name' => 'en3',
'Ethernet' => {
'MAC Address' => '00:1c:42:00:00:09',
- 'Media Options' => {
- 'Media Subtype' => 'Auto Select'
- }
+ 'Media Options' => undef,
+ 'Media Subtype' => 'Auto Select'
},
'Hardware' => 'Ethernet',
'Type' => 'Ethernet',
@@ -1638,13 +1608,12 @@ my %system_profiler_tests = (
'Addresses' => '192.168.1.16'
},
'Proxies' => {
- 'Exclude Simple Hostnames' => {
- 'Auto Discovery Enabled' => 'No',
- 'FTP Passive Mode' => 'Yes',
- 'Service Order' => '9'
- },
+ 'Exclude Simple Hostnames' => 0,
+ 'Auto Discovery Enabled' => 'No',
+ 'FTP Passive Mode' => 'Yes',
'Proxy Configuration Method' => 'Manual'
- }
+ },
+ 'Service Order' => '9',
},
'Parallels Shared Networking Adapter' => {
'Has IP Assigned' => 'Yes',
@@ -1654,9 +1623,8 @@ my %system_profiler_tests = (
'BSD Device Name' => 'en2',
'Ethernet' => {
'MAC Address' => '00:1c:42:00:00:08',
- 'Media Options' => {
- 'Media Subtype' => 'Auto Select'
- }
+ 'Media Options' => undef,
+ 'Media Subtype' => 'Auto Select'
},
'Hardware' => 'Ethernet',
'Type' => 'Ethernet',
@@ -1668,13 +1636,12 @@ my %system_profiler_tests = (
'Addresses' => '192.168.0.11'
},
'Proxies' => {
- 'Exclude Simple Hostnames' => {
- 'Auto Discovery Enabled' => 'No',
- 'FTP Passive Mode' => 'Yes',
- 'Service Order' => '8'
- },
+ 'Exclude Simple Hostnames' => 0,
+ 'Auto Discovery Enabled' => 'No',
+ 'FTP Passive Mode' => 'Yes',
'Proxy Configuration Method' => 'Manual'
- }
+ },
+ 'Service Order' => '8',
},
'FireWire' => {
'Has IP Assigned' => 'No',
@@ -1694,9 +1661,9 @@ my %system_profiler_tests = (
'Hardware' => 'FireWire',
'Proxies' => {
'FTP Passive Mode' => 'Yes',
- 'Service Order' => '2',
'Exceptions List' => '*.local, 169.254/16'
- }
+ },
+ 'Service Order' => '2',
},
'Ethernet' => {
'Has IP Assigned' => 'Yes',
@@ -1718,12 +1685,11 @@ my %system_profiler_tests = (
'IPv4 Addresses' => '10.0.1.101',
'DHCP Server Responses' => {
'Domain Name' => 'lan',
- 'Lease Duration (seconds)' => {
- 'Routers' => '10.0.1.1',
- 'Subnet Mask' => '255.255.255.0',
- 'Server Identifier' => '10.0.1.1',
- 'DHCP Message Type' => '0x05'
- },
+ 'Lease Duration (seconds)' => 0,
+ 'Routers' => '10.0.1.1',
+ 'Subnet Mask' => '255.255.255.0',
+ 'Server Identifier' => '10.0.1.1',
+ 'DHCP Message Type' => '0x05',
'Domain Name Servers' => '10.0.1.1'
},
'IPv4' => {
@@ -1736,9 +1702,9 @@ my %system_profiler_tests = (
},
'Proxies' => {
'FTP Passive Mode' => 'Yes',
- 'Service Order' => '1',
'Exceptions List' => '*.local, 169.254/16'
- }
+ },
+ 'Service Order' => '1',
},
'Bluetooth' => {
'Has IP Assigned' => 'No',
@@ -1754,7 +1720,7 @@ my %system_profiler_tests = (
'Proxies' => {
'FTP Passive Mode' => 'Yes'
},
- 'Service Order' => {}
+ 'Service Order' => 0,
},
'AirPort' => {
'Has IP Assigned' => 'No',
@@ -1765,9 +1731,8 @@ my %system_profiler_tests = (
'BSD Device Name' => 'en1',
'Ethernet' => {
'MAC Address' => '00:1e:c2:a7:26:6f',
- 'Media Options' => {
- 'Media Subtype' => 'Auto Select'
- }
+ 'Media Options' => undef,
+ 'Media Subtype' => 'Auto Select'
},
'IPv4' => {
'Configuration Method' => 'DHCP'
@@ -1778,9 +1743,9 @@ my %system_profiler_tests = (
'HTTP Proxy Port' => '80',
'FTP Passive Mode' => 'Yes',
'HTTP Proxy Enabled' => 'No',
- 'Service Order' => '3',
'Exceptions List' => '*.local, 169.254/16'
- }
+ },
+ 'Service Order' => '3',
}
},
'Ethernet Cards' => {
@@ -1886,16 +1851,16 @@ my %system_profiler_tests = (
},
'Applications' => {
'org.sip-communicator' => 'Allow all connections',
- 'Firewall Logging' => 'No',
'com.skype.skype' => 'Allow all connections',
'com.Growl.GrowlHelperApp' => 'Allow all connections',
'com.hp.scan.app' => 'Allow all connections',
'com.parallels.desktop.dispatcher' => 'Allow all connections',
- 'Stealth Mode' => 'No',
'net.sourceforge.xmeeting.XMeeting' => 'Allow all connections',
'com.getdropbox.dropbox' => 'Allow all connections'
},
- 'Mode' => 'Limit incoming connections to specific services and applications'
+ 'Mode' => 'Limit incoming connections to specific services and applications',
+ 'Firewall Logging' => 'No',
+ 'Stealth Mode' => 'No',
}
},
'Software' => {
@@ -2124,17 +2089,17 @@ my %system_profiler_tests = (
},
'Hardware (MAC) Address' => '00:1c:b3:c0:56:85',
'IEEE80211' => {
- 'Join Mode' => 'Automatic',
'Disconnect on Logout' => 'Yes',
+ 'Join Mode' => 'Automatic',
+ 'JoinModeFallback' => 'Prompt',
'PowerEnabled' => '1',
- 'RememberRecentNetworks' => {},
- 'RequireAdmin' => {},
'PreferredNetworks' => {
'Unique Network ID' => 'A628B3F5-DB6B-48A6-A3A4-17D33697041B',
'SecurityType' => 'Open',
'SSID_STR' => 'univ-paris1.fr'
},
- 'JoinModeFallback' => 'Prompt'
+ 'RememberRecentNetworks' => 0,
+ 'RequireAdmin' => 0,
}
}
},
@@ -2224,8 +2189,8 @@ my %system_profiler_tests = (
'Join Mode' => 'Automatic',
'Disconnect on Logout' => 'Yes',
'PowerEnabled' => '1',
- 'RememberRecentNetworks' => {},
- 'RequireAdmin' => {},
+ 'RememberRecentNetworks' => 0,
+ 'RequireAdmin' => 0,
'PreferredNetworks' => {
'Unique Network ID' => '963478B4-1AC3-4B35-A4BB-3510FEA2FEF2',
'SecurityType' => 'WPA2 Enterprise',
@@ -2321,8 +2286,8 @@ my %system_profiler_tests = (
'IEEE80211' => {
'Join Mode' => 'Automatic',
'Disconnect on Logout' => 'Yes',
- 'PowerEnabled' => {},
- 'RememberRecentNetworks' => {},
+ 'PowerEnabled' => 0,
+ 'RememberRecentNetworks' => 0,
'PreferredNetworks' => {
'Unique Network ID' => '46A33A68-7109-48AD-9255-900F0134903E',
'SecurityType' => 'WPA Personal',
@@ -2379,15 +2344,13 @@ my %system_profiler_tests = (
'ATA Bus' => {
'MATSHITACD-RW CW-8221' => {
'Revision' => 'GA0J',
- 'Serial Number' => {
- 'Detachable Drive' => 'No',
- 'Protocol' => 'ATAPI'
- },
- 'Unit Number' => {
- 'Low Power Polling' => 'Yes',
- 'Socket Type' => 'Internal',
- 'Power Off' => 'Yes'
- },
+ 'Serial Number' => undef,
+ 'Detachable Drive' => 'No',
+ 'Protocol' => 'ATAPI',
+ 'Unit Number' => 0,
+ 'Low Power Polling' => 'Yes',
+ 'Socket Type' => 'Internal',
+ 'Power Off' => 'Yes',
'Model' => 'MATSHITACD-RW CW-8221'
}
}
@@ -2431,12 +2394,10 @@ my %system_profiler_tests = (
'Apple Bluetooth Software Version' => '2.3.8f7',
'Outgoing Serial Ports' => {
'Serial Port 1' => {
- 'Address' => {
- 'Name' => 'Bluetooth-Modem'
- },
- 'RFCOMM Channel' => {
- 'Requires Authentication' => 'No'
- }
+ 'Address' => undef,
+ 'Name' => 'Bluetooth-Modem',
+ 'RFCOMM Channel' => 0,
+ 'Requires Authentication' => 'No'
}
},
'Services' => {
@@ -2479,19 +2440,18 @@ my %system_profiler_tests = (
},
'Battery Information' => {
'Charge Information' => {
- 'Full charge capacity (mAh)' => {},
- 'Charge remaining (mAh)' => {
- 'Fully charged' => 'No',
- 'Charging' => 'No'
- }
+ 'Full charge capacity (mAh)' => 0,
+ 'Charge remaining (mAh)' => 0,
+ 'Fully charged' => 'No',
+ 'Charging' => 'No'
},
'Health Information' => {
- 'Voltage (mV)' => '3908',
- 'Battery Installed' => 'Yes',
'Cycle count' => '5',
'Condition' => 'Replace Now',
- 'Amperage (mA)' => '74'
},
+ 'Voltage (mV)' => '3908',
+ 'Battery Installed' => 'Yes',
+ 'Amperage (mA)' => '74',
'Model Information' => {
'PCB Lot Code' => '0000',
'Firmware Version' => '102a',
@@ -2504,16 +2464,15 @@ my %system_profiler_tests = (
},
'System Power Settings' => {
'AC Power' => {
- 'System Sleep Timer (Minutes)' => {
- 'Display Sleep Timer (Minutes)' => '10',
- 'Disk Sleep Timer (Minutes)' => '10',
- 'Automatic Restart On Power Loss' => 'No',
- 'Wake On AC Change' => 'No',
- 'Current Power Source' => 'Yes',
- 'Wake On Clamshell Open' => 'Yes',
- 'Display Sleep Uses Dim' => 'Yes',
- 'Wake On LAN' => 'Yes'
- }
+ 'System Sleep Timer (Minutes)' => 0,
+ 'Display Sleep Timer (Minutes)' => '10',
+ 'Disk Sleep Timer (Minutes)' => '10',
+ 'Automatic Restart On Power Loss' => 'No',
+ 'Wake On AC Change' => 'No',
+ 'Current Power Source' => 'Yes',
+ 'Wake On Clamshell Open' => 'Yes',
+ 'Display Sleep Uses Dim' => 'Yes',
+ 'Wake On LAN' => 'Yes'
},
'Battery Power' => {
'Reduce Brightness' => 'Yes',
@@ -2580,9 +2539,9 @@ my %system_profiler_tests = (
'Hardware' => 'FireWire',
'Proxies' => {
'FTP Passive Mode' => 'Yes',
- 'Service Order' => '2',
'Exceptions List' => '*.local, 169.254/16'
- }
+ },
+ 'Service Order' => '2',
},
'Ethernet' => {
'Has IP Assigned' => 'Yes',
@@ -2609,12 +2568,11 @@ my %system_profiler_tests = (
'IPv4 Addresses' => '172.20.10.171',
'DHCP Server Responses' => {
'Domain Name' => 'univ-paris1.fr',
- 'Lease Duration (seconds)' => {
- 'Routers' => '172.20.10.72',
- 'Subnet Mask' => '255.255.254.0',
- 'Server Identifier' => '172.20.0.2',
- 'DHCP Message Type' => '0x05'
- },
+ 'Lease Duration (seconds)' => 0,
+ 'Routers' => '172.20.10.72',
+ 'Subnet Mask' => '255.255.254.0',
+ 'Server Identifier' => '172.20.0.2',
+ 'DHCP Message Type' => '0x05',
'Domain Name Servers' => '193.55.96.84,193.55.99.70,194.214.33.181'
},
'IPv4' => {
@@ -2634,12 +2592,12 @@ my %system_profiler_tests = (
'Portability' => '37',
'Type' => '50',
'Metric' => '503771',
- 'IPv6 Address' => '2001:0660:3305:0100:021b:63ff:fe36:1ec3',
'Marginal Power' => '71',
- 'Service Order' => '1',
'Total Power' => '72'
}
- }
+ },
+ 'IPv6 Address' => '2001:0660:3305:0100:021b:63ff:fe36:1ec3',
+ 'Service Order' => '1',
},
'Bluetooth' => {
'Has IP Assigned' => 'No',
@@ -2655,7 +2613,7 @@ my %system_profiler_tests = (
'Proxies' => {
'FTP Passive Mode' => 'Yes'
},
- 'Service Order' => {}
+ 'Service Order' => 0,
},
'AirPort' => {
'Has IP Assigned' => 'No',
@@ -2663,9 +2621,8 @@ my %system_profiler_tests = (
'BSD Device Name' => 'en1',
'Ethernet' => {
'MAC Address' => '00:1c:b3:c0:56:85',
- 'Media Options' => {
- 'Media Subtype' => 'Auto Select'
- }
+ 'Media Options' => undef,
+ 'Media Subtype' => 'Auto Select'
},
'IPv4' => {
'Configuration Method' => 'DHCP'
@@ -2673,9 +2630,9 @@ my %system_profiler_tests = (
'Hardware' => 'AirPort',
'Proxies' => {
'FTP Passive Mode' => 'Yes',
- 'Service Order' => '3',
'Exceptions List' => '*.local, 169.254/16'
- }
+ },
+ 'Service Order' => '3',
}
},
'Ethernet Cards' => {
@@ -2853,11 +2810,10 @@ my %system_profiler_tests = (
'Firmware Version' => 'Atheros 5416: 2.1.14.5',
'Locale' => 'ETSI',
'Card Type' => 'AirPort Extreme (0x168C, 0x87)',
- 'Country Code' => {
- 'Supported PHY Modes' => '802.11 a/b/g/n',
- 'Status' => 'Off',
- 'Supported Channels' => '1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140'
- }
+ 'Country Code' => undef,
+ 'Supported PHY Modes' => '802.11 a/b/g/n',
+ 'Status' => 'Off',
+ 'Supported Channels' => '1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140'
}
}
},
@@ -3047,6 +3003,7 @@ foreach my $test (keys %system_profiler_tests) {
my $file = "resources/macos/system_profiler/$test";
my $infos = getSystemProfilerInfos(file => $file);
is_deeply($infos, $system_profiler_tests{$test}, "$test system profiler parsing");
+ use Data::Dumper;
}
foreach my $test (keys %ioreg_tests) {
================================================================
Commit: a5899f02d0746d7605129d9ea60fa153fd347536
https://github.com/fusinv/fusioninventory-agent/commit/a5899f02d0746d7605129d9ea60fa153fd347536
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
M lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
Log Message:
-----------
move to operating system info section
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
index 2795421..afa52fa 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
@@ -54,11 +54,11 @@ sub doInventory {
OSCOMMENTS => $object->{CSDVersion},
SWAP => $object->{TotalSwapSpaceSize},
DESCRIPTION => $description,
- OSINSTALLDATE => $installDate
});
$inventory->setOperatingSystem({
NAME => "Windows",
+ INSTALL_DATE => $installDate
# VERSION => $OSVersion,
KERNEL_VERSION => $object->{Version},
FULL_NAME => $object->{Caption},
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
index df701fd..21273fb 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
@@ -246,7 +246,7 @@ sub setHardware {
PROCESSORT NAME PROCESSORS SWAP ETIME TYPE OSNAME IPADDR WORKGROUP
DESCRIPTION MEMORY UUID DNS LASTLOGGEDUSER USERDOMAIN
DATELASTLOGGEDUSER DEFAULTGATEWAY VMSYSTEM WINOWNER WINPRODID
- WINPRODKEY WINCOMPANY WINLANG CHASSIS_TYPE OSINSTALLDATE/) {
+ WINPRODKEY WINCOMPANY WINLANG CHASSIS_TYPE/) {
# WINLANG: Windows Language, see MSDN Win32_OperatingSystem documentation
if (exists $args->{$key}) {
my $string = getSanitizedString($args->{$key});
@@ -258,7 +258,7 @@ sub setHardware {
sub setOperatingSystem {
my ($self, $args) = @_;
- foreach my $key (qw/KERNEL_NAME KERNEL_VERSION NAME VERSION FULL_NAME SERVICE_PACK/) {
+ foreach my $key (qw/KERNEL_NAME KERNEL_VERSION NAME VERSION FULL_NAME SERVICE_PACK INSTALL_DATE/) {
next unless exists $args->{$key};
my $string = getSanitizedString($args->{$key});
@@ -887,6 +887,10 @@ deprecated in the future.
The Service Pack level reported by the operating system. This field is only
present on systems which use this notion.
+=item INSTALL_DATE
+
+The operating system installation date.
+
=back
=head2 MONITORS
================================================================
Commit: 015cce7624d42d0055a63118e3025ea098cdb4fc
https://github.com/fusinv/fusioninventory-agent/commit/015cce7624d42d0055a63118e3025ea098cdb4fc
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
Log Message:
-----------
oops
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
index afa52fa..7595ecd 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
@@ -58,7 +58,7 @@ sub doInventory {
$inventory->setOperatingSystem({
NAME => "Windows",
- INSTALL_DATE => $installDate
+ INSTALL_DATE => $installDate,
# VERSION => $OSVersion,
KERNEL_VERSION => $object->{Version},
FULL_NAME => $object->{Caption},
================================================================
Commit: 6aef703cc315e6f171f8f9e03b91a2ecbc324fc9
https://github.com/fusinv/fusioninventory-agent/commit/6aef703cc315e6f171f8f9e03b91a2ecbc324fc9
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
Log Message:
-----------
manage allowed field in a single place
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
index 21273fb..c0fd89b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
@@ -52,6 +52,19 @@ my %fields = (
PRINTERS => [ qw/COMMENT DESCRIPTION DRIVER NAME NETWORK PORT RESOLUTION
SHARED STATUS ERRSTATUS SERVERNAME SHARENAME
PRINTPROCESSOR SERIAL/ ],
+ BIOS => [ qw/SMODEL SMANUFACTURER SSN BDATE BVERSION
+ BMANUFACTURER MMANUFACTURER MSN MMODEL ASSETTAG
+ ENCLOSURESERIAL BASEBOARDSERIAL BIOSSERIAL
+ TYPE SKUNUMBER/ ],
+ HARDWARE => [ qw/USERID OSVERSION PROCESSORN OSCOMMENTS CHECKSUM
+ PROCESSORT NAME PROCESSORS SWAP ETIME TYPE OSNAME
+ IPADDR WORKGROUP DESCRIPTION MEMORY UUID DNS
+ LASTLOGGEDUSER USERDOMAIN DATELASTLOGGEDUSER
+ DEFAULTGATEWAY VMSYSTEM WINOWNER WINPRODID
+ WINPRODKEY WINCOMPANY WINLANG CHASSIS_TYPE/ ],
+ OPERATINGSYSTEM => [ qw/KERNEL_NAME KERNEL_VERSION NAME VERSION FULL_NAME
+ SERVICE_PACK INSTALL_DATE/ ],
+ ACCESSLOG => [ qw/USERID LOGDATE/ ],
VIRTUALMACHINES => [ qw/MEMORY NAME UUID STATUS SUBSYSTEM VMTYPE VCPU
VMID MAC COMMENT OWNER/ ],
LOGICAL_VOLUMES => [ qw/LV_NAME VGN_AME ATTR SIZE LV_UUID SEG_COUNT
@@ -60,7 +73,6 @@ my %fields = (
SIZE FREE PE_SIZE/ ],
VOLUME_GROUPS => [ qw/VG_NAME PV_COUNT LV_COUNT ATTR SIZE FREE VG_UUID
VG_EXTENT_SIZE/ ],
-
);
my %checks = (
@@ -242,52 +254,58 @@ sub computeLegacyValues {
sub setHardware {
my ($self, $args) = @_;
- foreach my $key (qw/USERID OSVERSION PROCESSORN OSCOMMENTS CHECKSUM
- PROCESSORT NAME PROCESSORS SWAP ETIME TYPE OSNAME IPADDR WORKGROUP
- DESCRIPTION MEMORY UUID DNS LASTLOGGEDUSER USERDOMAIN
- DATELASTLOGGEDUSER DEFAULTGATEWAY VMSYSTEM WINOWNER WINPRODID
- WINPRODKEY WINCOMPANY WINLANG CHASSIS_TYPE/) {
-# WINLANG: Windows Language, see MSDN Win32_OperatingSystem documentation
- if (exists $args->{$key}) {
- my $string = getSanitizedString($args->{$key});
- $self->{content}{HARDWARE}{$key} = $string;
+ foreach my $field (keys %$args) {
+ if (!$fields{HARDWARE}->{$field}) {
+ $self->{logger}->debug("unknown field $field for section HARDWARE");
+ next
}
+ $self->{content}->{HARDWARE}->{$field} =
+ getSanitizedString($args->{$field});
}
}
sub setOperatingSystem {
my ($self, $args) = @_;
- foreach my $key (qw/KERNEL_NAME KERNEL_VERSION NAME VERSION FULL_NAME SERVICE_PACK INSTALL_DATE/) {
- next unless exists $args->{$key};
-
- my $string = getSanitizedString($args->{$key});
- $self->{content}{OPERATINGSYSTEM}{$key} = $string;
+ foreach my $field (keys %$args) {
+ if (!$fields{OPERATINGSYSTEM}->{$field}) {
+ $self->{logger}->debug(
+ "unknown field $field for section OPERATINGSYSTEM"
+ );
+ next
+ }
+ $self->{content}->{OPERATINGSYSTEM}->{$field} =
+ getSanitizedString($args->{$field});
}
}
sub setBios {
my ($self, $args) = @_;
- foreach my $key (qw/SMODEL SMANUFACTURER SSN BDATE BVERSION BMANUFACTURER
- MMANUFACTURER MSN MMODEL ASSETTAG ENCLOSURESERIAL BASEBOARDSERIAL
- BIOSSERIAL TYPE SKUNUMBER/) {
-
- if (exists $args->{$key}) {
- my $string = getSanitizedString($args->{$key});
- $self->{content}{BIOS}{$key} = $string;
+ foreach my $field (keys %$args) {
+ if (!$fields{BIOS}->{$field}) {
+ $self->{logger}->debug("unknown field $field for section BIOS");
+ next
}
+
+ $self->{content}->{BIOS}->{$field} =
+ getSanitizedString($args->{$field});
}
}
sub setAccessLog {
my ($self, $args) = @_;
- foreach my $key (qw/USERID LOGDATE/) {
-
- if (exists $args->{$key}) {
- $self->{content}{ACCESSLOG}{$key} = $args->{$key};
+ foreach my $field (keys %$args) {
+ if (!$fields{ACCESSLOG}->{$field}) {
+ $self->{logger}->debug(
+ "unknown field $field for section ACCESSLOG"
+ );
+ next
}
+
+ $self->{content}->{ACCESSLOG}->{$field} =
+ getSanitizedString($args->{$field});
}
}
================================================================
Commit: 6330c52d151a999b167ef5587dfcb9e7b01fbb5d
https://github.com/fusinv/fusioninventory-agent/commit/6330c52d151a999b167ef5587dfcb9e7b01fbb5d
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
A resources/solaris/showrev-x86-3
Log Message:
-----------
initial import
diff --git a/resources/solaris/showrev-x86-3 b/resources/solaris/showrev-x86-3
new file mode 100644
index 0000000..5285802
--- /dev/null
+++ b/resources/solaris/showrev-x86-3
@@ -0,0 +1,8 @@
+Hostname: plop
+Hostid: 7c31a36
+Release: 5.10
+Kernel architecture: i86pc
+Application architecture: i386
+Hardware provider:
+Domain:
+Kernel version: SunOS 5.10 Generic_147441-09
================================================================
Commit: 213c33293b28b44fa9086f4f87ac4d89732b93a1
https://github.com/fusinv/fusioninventory-agent/commit/213c33293b28b44fa9086f4f87ac4d89732b93a1
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
Log Message:
-----------
change interface for testability
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
index 08de6b0..1967608 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
@@ -26,7 +26,7 @@ sub doInventory {
my $arch;
if (canRun('showrev')) {
- my $infos = _parseShowRev($logger);
+ my $infos = _parseShowRev(logger => $logger);
$SystemModel = $infos->{'Application architecture'};
$SystemManufacturer = $infos->{'Hardware provider'};
$arch = $infos->{'Application architecture'};
@@ -87,12 +87,12 @@ sub doInventory {
}
sub _parseShowRev {
- my ($logger) = @_;
-
- my $handle = getFileHandle(
- command => "showrev",
- logger => $logger
+ my (%params) = (
+ command => 'showrev',
+ @_
);
+
+ my $handle = getFileHandle(%params);
return unless $handle;
my $infos;
================================================================
Commit: a6119dcc14593f663e249f68cd8346bc91e0531e
https://github.com/fusinv/fusioninventory-agent/commit/a6119dcc14593f663e249f68cd8346bc91e0531e
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
A t/inventory/solaris/bios.t
Log Message:
-----------
initial import
diff --git a/t/inventory/solaris/bios.t b/t/inventory/solaris/bios.t
new file mode 100755
index 0000000..88d34ce
--- /dev/null
+++ b/t/inventory/solaris/bios.t
@@ -0,0 +1,82 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use FusionInventory::Agent::Task::Inventory::Input::Solaris::Bios;
+
+my %showrev_tests = (
+ 'SPARC-1' => {
+ ' breakpoint-trap' => '0000007f',
+ ' banner-name' => '\'Sun',
+ ' compatible' => '\'SUNW,Serengeti\'',
+ ' scsi-initiator-id' => '00000007',
+ 'Release' => '5.10',
+ ' name' => '\'SUNW,Sun-Fire\'',
+ 'Memory size' => '16384',
+ ' #size-cells' => '00000002',
+ 'System Configuration' => 'Sun',
+ 'Hostname' => '157501s021plc',
+ 'Kernel version' => 'SunOS',
+ 'Kernel architecture' => 'sun4u',
+ 'Hardware provider' => 'Sun_Microsystem',
+ ' node#' => '00000000',
+ ' newio-addr' => '00000001',
+ 'Domain' => 'be.cnamts.fr',
+ 'Application architecture' => 'sparc',
+ ' stick-frequency' => '00bebc20',
+ 'Hostid' => '83249bbf',
+ ' clock-frequency' => '08f0d180',
+ ' idprom' => '01840014.4f4162cb.45255cf4.4162cb16.55555555.55555555.55555555.55555555',
+ ' device_type' => '\'gptwo\''
+ },
+ 'SPARC-2' => {
+ 'Kernel version' => 'SunOS',
+ 'Release' => '5.10',
+ 'Hostname' => 'mysunserver',
+ 'Hardware provider' => 'Sun_Microsystems',
+ 'Kernel architecture' => 'sun4v',
+ 'Application architecture' => 'sparc',
+ 'Hostid' => 'mabox'
+ },
+ 'x86-1' => {
+ 'Kernel version' => 'SunOS',
+ 'Hostname' => 'stlaurent',
+ 'Kernel architecture' => 'i86pc',
+ ' Manufacturer' => 'Sun',
+ 'Application architecture' => 'i386',
+ ' Serial Number' => 'R00T34E0009',
+ ' Product' => 'Sun',
+ 'Hostid' => '403100b',
+ 'Release' => '5.10',
+ ' Wake-Up Event' => '0x6',
+ ' UUID' => 'be1630df-d130-41a4-be32-fd28bb4bd1ac',
+ ' Version' => '00'
+ },
+ 'x86-2' => {
+ 'Kernel version' => 'SunOS',
+ 'Release' => '5.10',
+ 'Hostname' => 'mamachine',
+ 'Kernel architecture' => 'i86pc',
+ 'Application architecture' => 'i386',
+ 'Hostid' => '7c31a88'
+ },
+ 'x86-3' => {
+ 'Kernel version' => 'SunOS',
+ 'Release' => '5.10',
+ 'Hostname' => 'plop',
+ 'Kernel architecture' => 'i86pc',
+ 'Application architecture' => 'i386',
+ 'Hostid' => '7c31a36'
+ }
+);
+
+plan tests => scalar keys %showrev_tests;
+
+foreach my $test (keys %showrev_tests) {
+ my $file = "resources/solaris/showrev-$test";
+ my $result = FusionInventory::Agent::Task::Inventory::Input::Solaris::Bios::_parseShowRev(file => $file);
+ is_deeply($result, $showrev_tests{$test}, "showrev parsing: $test");
+}
================================================================
Commit: 25c6dc36e42c0761f844c99d4f6b8bc83fd17d49
https://github.com/fusinv/fusioninventory-agent/commit/25c6dc36e42c0761f844c99d4f6b8bc83fd17d49
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
R resources/solaris/showrev-SPARC-1
R resources/solaris/showrev-SPARC-2
R resources/solaris/showrev-x86-1
R resources/solaris/showrev-x86-2
R resources/solaris/showrev-x86-3
A resources/solaris/showrev/SPARC-1
A resources/solaris/showrev/SPARC-2
A resources/solaris/showrev/x86-1
A resources/solaris/showrev/x86-2
A resources/solaris/showrev/x86-3
M t/inventory/solaris/bios.t
Log Message:
-----------
use a specific subdirectory
diff --git a/resources/solaris/showrev-SPARC-1 b/resources/solaris/showrev-SPARC-1
deleted file mode 100644
index 7019112..0000000
--- a/resources/solaris/showrev-SPARC-1
+++ /dev/null
@@ -1,27 +0,0 @@
-Hostname: 157501s021plc
-Hostid: 83249bbf
-Release: 5.10
-Kernel architecture: sun4u
-Application architecture: sparc
-Hardware provider: Sun_Microsystem
-Domain: be.cnamts.fr
-Kernel version: SunOS 5.10 Generic_118833-17
-
- $ prtconf -pv (-b would be great...but doesn't work before S10)
-System Configuration: Sun Microsystems sun4u
-Memory size: 16384 Megabyte
-System Peripherals (PROM Nodes):
-
-Node 0xf0819f00
- scsi-initiator-id: 00000007
- node#: 00000000
- #size-cells: 00000002
- stick-frequency: 00bebc20
- clock-frequency: 08f0d180
- idprom: 01840014.4f4162cb.45255cf4.4162cb16.55555555.55555555.55555555.55555555
- breakpoint-trap: 0000007f
- device_type: 'gptwo'
- banner-name: 'Sun Fire E6900'
- compatible: 'SUNW,Serengeti'
- newio-addr: 00000001
- name: 'SUNW,Sun-Fire'
diff --git a/resources/solaris/showrev-SPARC-2 b/resources/solaris/showrev-SPARC-2
deleted file mode 100644
index 2d3d320..0000000
--- a/resources/solaris/showrev-SPARC-2
+++ /dev/null
@@ -1,8 +0,0 @@
-Hostname: mysunserver
-Hostid: mabox
-Release: 5.10
-Kernel architecture: sun4v
-Application architecture: sparc
-Hardware provider: Sun_Microsystems
-Domain:
-Kernel version: SunOS 5.10 Generic_125100-06
diff --git a/resources/solaris/showrev-x86-1 b/resources/solaris/showrev-x86-1
deleted file mode 100644
index aabf729..0000000
--- a/resources/solaris/showrev-x86-1
+++ /dev/null
@@ -1,22 +0,0 @@
-Hostname: stlaurent
-Hostid: 403100b
-Release: 5.10
-Kernel architecture: i86pc
-Application architecture: i386
-Hardware provider:
-Domain:
-Kernel version: SunOS 5.10 Generic_127112-07
-
- $ smbios -t SMB_TYPE_SYSTEM
-ID SIZE TYPE
-1 76 SMB_TYPE_SYSTEM (system information)
-
- Manufacturer: Sun Microsystems, Inc.
- Product: Sun Fire V40z
- Version: 00
- Serial Number: R00T34E0009
-
- UUID: be1630df-d130-41a4-be32-fd28bb4bd1ac
- Wake-Up Event: 0x6 (power switch)
- SKU Number:
- Family:
diff --git a/resources/solaris/showrev-x86-2 b/resources/solaris/showrev-x86-2
deleted file mode 100644
index 4b8f705..0000000
--- a/resources/solaris/showrev-x86-2
+++ /dev/null
@@ -1,8 +0,0 @@
-Hostname: mamachine
-Hostid: 7c31a88
-Release: 5.10
-Kernel architecture: i86pc
-Application architecture: i386
-Hardware provider:
-Domain:
-Kernel version: SunOS 5.10 Generic_144489-03
diff --git a/resources/solaris/showrev-x86-3 b/resources/solaris/showrev-x86-3
deleted file mode 100644
index 5285802..0000000
--- a/resources/solaris/showrev-x86-3
+++ /dev/null
@@ -1,8 +0,0 @@
-Hostname: plop
-Hostid: 7c31a36
-Release: 5.10
-Kernel architecture: i86pc
-Application architecture: i386
-Hardware provider:
-Domain:
-Kernel version: SunOS 5.10 Generic_147441-09
diff --git a/resources/solaris/showrev/SPARC-1 b/resources/solaris/showrev/SPARC-1
new file mode 100644
index 0000000..7019112
--- /dev/null
+++ b/resources/solaris/showrev/SPARC-1
@@ -0,0 +1,27 @@
+Hostname: 157501s021plc
+Hostid: 83249bbf
+Release: 5.10
+Kernel architecture: sun4u
+Application architecture: sparc
+Hardware provider: Sun_Microsystem
+Domain: be.cnamts.fr
+Kernel version: SunOS 5.10 Generic_118833-17
+
+ $ prtconf -pv (-b would be great...but doesn't work before S10)
+System Configuration: Sun Microsystems sun4u
+Memory size: 16384 Megabyte
+System Peripherals (PROM Nodes):
+
+Node 0xf0819f00
+ scsi-initiator-id: 00000007
+ node#: 00000000
+ #size-cells: 00000002
+ stick-frequency: 00bebc20
+ clock-frequency: 08f0d180
+ idprom: 01840014.4f4162cb.45255cf4.4162cb16.55555555.55555555.55555555.55555555
+ breakpoint-trap: 0000007f
+ device_type: 'gptwo'
+ banner-name: 'Sun Fire E6900'
+ compatible: 'SUNW,Serengeti'
+ newio-addr: 00000001
+ name: 'SUNW,Sun-Fire'
diff --git a/resources/solaris/showrev/SPARC-2 b/resources/solaris/showrev/SPARC-2
new file mode 100644
index 0000000..2d3d320
--- /dev/null
+++ b/resources/solaris/showrev/SPARC-2
@@ -0,0 +1,8 @@
+Hostname: mysunserver
+Hostid: mabox
+Release: 5.10
+Kernel architecture: sun4v
+Application architecture: sparc
+Hardware provider: Sun_Microsystems
+Domain:
+Kernel version: SunOS 5.10 Generic_125100-06
diff --git a/resources/solaris/showrev/x86-1 b/resources/solaris/showrev/x86-1
new file mode 100644
index 0000000..aabf729
--- /dev/null
+++ b/resources/solaris/showrev/x86-1
@@ -0,0 +1,22 @@
+Hostname: stlaurent
+Hostid: 403100b
+Release: 5.10
+Kernel architecture: i86pc
+Application architecture: i386
+Hardware provider:
+Domain:
+Kernel version: SunOS 5.10 Generic_127112-07
+
+ $ smbios -t SMB_TYPE_SYSTEM
+ID SIZE TYPE
+1 76 SMB_TYPE_SYSTEM (system information)
+
+ Manufacturer: Sun Microsystems, Inc.
+ Product: Sun Fire V40z
+ Version: 00
+ Serial Number: R00T34E0009
+
+ UUID: be1630df-d130-41a4-be32-fd28bb4bd1ac
+ Wake-Up Event: 0x6 (power switch)
+ SKU Number:
+ Family:
diff --git a/resources/solaris/showrev/x86-2 b/resources/solaris/showrev/x86-2
new file mode 100644
index 0000000..4b8f705
--- /dev/null
+++ b/resources/solaris/showrev/x86-2
@@ -0,0 +1,8 @@
+Hostname: mamachine
+Hostid: 7c31a88
+Release: 5.10
+Kernel architecture: i86pc
+Application architecture: i386
+Hardware provider:
+Domain:
+Kernel version: SunOS 5.10 Generic_144489-03
diff --git a/resources/solaris/showrev/x86-3 b/resources/solaris/showrev/x86-3
new file mode 100644
index 0000000..5285802
--- /dev/null
+++ b/resources/solaris/showrev/x86-3
@@ -0,0 +1,8 @@
+Hostname: plop
+Hostid: 7c31a36
+Release: 5.10
+Kernel architecture: i86pc
+Application architecture: i386
+Hardware provider:
+Domain:
+Kernel version: SunOS 5.10 Generic_147441-09
diff --git a/t/inventory/solaris/bios.t b/t/inventory/solaris/bios.t
index 88d34ce..828435c 100755
--- a/t/inventory/solaris/bios.t
+++ b/t/inventory/solaris/bios.t
@@ -76,7 +76,7 @@ my %showrev_tests = (
plan tests => scalar keys %showrev_tests;
foreach my $test (keys %showrev_tests) {
- my $file = "resources/solaris/showrev-$test";
+ my $file = "resources/solaris/showrev/$test";
my $result = FusionInventory::Agent::Task::Inventory::Input::Solaris::Bios::_parseShowRev(file => $file);
is_deeply($result, $showrev_tests{$test}, "showrev parsing: $test");
}
================================================================
Commit: 59daa627d09eacd58387de92e69ea8f33037c868
https://github.com/fusinv/fusioninventory-agent/commit/59daa627d09eacd58387de92e69ea8f33037c868
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
A resources/solaris/prtconf/SPARC-1
M resources/solaris/showrev/SPARC-1
M resources/solaris/showrev/x86-1
A resources/solaris/smbios/x86-1
M t/inventory/solaris/bios.t
Log Message:
-----------
extract unrelated content
diff --git a/resources/solaris/prtconf/SPARC-1 b/resources/solaris/prtconf/SPARC-1
new file mode 100644
index 0000000..8229c44
--- /dev/null
+++ b/resources/solaris/prtconf/SPARC-1
@@ -0,0 +1,17 @@
+System Configuration: Sun Microsystems sun4u
+Memory size: 16384 Megabyte
+System Peripherals (PROM Nodes):
+
+Node 0xf0819f00
+ scsi-initiator-id: 00000007
+ node#: 00000000
+ #size-cells: 00000002
+ stick-frequency: 00bebc20
+ clock-frequency: 08f0d180
+ idprom: 01840014.4f4162cb.45255cf4.4162cb16.55555555.55555555.55555555.55555555
+ breakpoint-trap: 0000007f
+ device_type: 'gptwo'
+ banner-name: 'Sun Fire E6900'
+ compatible: 'SUNW,Serengeti'
+ newio-addr: 00000001
+ name: 'SUNW,Sun-Fire'
diff --git a/resources/solaris/showrev/SPARC-1 b/resources/solaris/showrev/SPARC-1
index 7019112..2e37a0a 100644
--- a/resources/solaris/showrev/SPARC-1
+++ b/resources/solaris/showrev/SPARC-1
@@ -6,22 +6,3 @@ Application architecture: sparc
Hardware provider: Sun_Microsystem
Domain: be.cnamts.fr
Kernel version: SunOS 5.10 Generic_118833-17
-
- $ prtconf -pv (-b would be great...but doesn't work before S10)
-System Configuration: Sun Microsystems sun4u
-Memory size: 16384 Megabyte
-System Peripherals (PROM Nodes):
-
-Node 0xf0819f00
- scsi-initiator-id: 00000007
- node#: 00000000
- #size-cells: 00000002
- stick-frequency: 00bebc20
- clock-frequency: 08f0d180
- idprom: 01840014.4f4162cb.45255cf4.4162cb16.55555555.55555555.55555555.55555555
- breakpoint-trap: 0000007f
- device_type: 'gptwo'
- banner-name: 'Sun Fire E6900'
- compatible: 'SUNW,Serengeti'
- newio-addr: 00000001
- name: 'SUNW,Sun-Fire'
diff --git a/resources/solaris/showrev/x86-1 b/resources/solaris/showrev/x86-1
index aabf729..0365490 100644
--- a/resources/solaris/showrev/x86-1
+++ b/resources/solaris/showrev/x86-1
@@ -6,17 +6,3 @@ Application architecture: i386
Hardware provider:
Domain:
Kernel version: SunOS 5.10 Generic_127112-07
-
- $ smbios -t SMB_TYPE_SYSTEM
-ID SIZE TYPE
-1 76 SMB_TYPE_SYSTEM (system information)
-
- Manufacturer: Sun Microsystems, Inc.
- Product: Sun Fire V40z
- Version: 00
- Serial Number: R00T34E0009
-
- UUID: be1630df-d130-41a4-be32-fd28bb4bd1ac
- Wake-Up Event: 0x6 (power switch)
- SKU Number:
- Family:
diff --git a/resources/solaris/smbios/x86-1 b/resources/solaris/smbios/x86-1
new file mode 100644
index 0000000..a9fbe69
--- /dev/null
+++ b/resources/solaris/smbios/x86-1
@@ -0,0 +1,12 @@
+ID SIZE TYPE
+1 76 SMB_TYPE_SYSTEM (system information)
+
+ Manufacturer: Sun Microsystems, Inc.
+ Product: Sun Fire V40z
+ Version: 00
+ Serial Number: R00T34E0009
+
+ UUID: be1630df-d130-41a4-be32-fd28bb4bd1ac
+ Wake-Up Event: 0x6 (power switch)
+ SKU Number:
+ Family:
diff --git a/t/inventory/solaris/bios.t b/t/inventory/solaris/bios.t
index 828435c..e6c8344 100755
--- a/t/inventory/solaris/bios.t
+++ b/t/inventory/solaris/bios.t
@@ -9,28 +9,14 @@ use FusionInventory::Agent::Task::Inventory::Input::Solaris::Bios;
my %showrev_tests = (
'SPARC-1' => {
- ' breakpoint-trap' => '0000007f',
- ' banner-name' => '\'Sun',
- ' compatible' => '\'SUNW,Serengeti\'',
- ' scsi-initiator-id' => '00000007',
'Release' => '5.10',
- ' name' => '\'SUNW,Sun-Fire\'',
- 'Memory size' => '16384',
- ' #size-cells' => '00000002',
- 'System Configuration' => 'Sun',
'Hostname' => '157501s021plc',
'Kernel version' => 'SunOS',
'Kernel architecture' => 'sun4u',
'Hardware provider' => 'Sun_Microsystem',
- ' node#' => '00000000',
- ' newio-addr' => '00000001',
'Domain' => 'be.cnamts.fr',
'Application architecture' => 'sparc',
- ' stick-frequency' => '00bebc20',
'Hostid' => '83249bbf',
- ' clock-frequency' => '08f0d180',
- ' idprom' => '01840014.4f4162cb.45255cf4.4162cb16.55555555.55555555.55555555.55555555',
- ' device_type' => '\'gptwo\''
},
'SPARC-2' => {
'Kernel version' => 'SunOS',
@@ -45,15 +31,9 @@ my %showrev_tests = (
'Kernel version' => 'SunOS',
'Hostname' => 'stlaurent',
'Kernel architecture' => 'i86pc',
- ' Manufacturer' => 'Sun',
'Application architecture' => 'i386',
- ' Serial Number' => 'R00T34E0009',
- ' Product' => 'Sun',
'Hostid' => '403100b',
'Release' => '5.10',
- ' Wake-Up Event' => '0x6',
- ' UUID' => 'be1630df-d130-41a4-be32-fd28bb4bd1ac',
- ' Version' => '00'
},
'x86-2' => {
'Kernel version' => 'SunOS',
================================================================
Commit: 9ef7e0e2cede70088af10d96113f5d5447534b45
https://github.com/fusinv/fusioninventory-agent/commit/9ef7e0e2cede70088af10d96113f5d5447534b45
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
Log Message:
-----------
change interface for testability
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
index 1967608..2791296 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
@@ -106,12 +106,12 @@ sub _parseShowRev {
}
sub _parseSmbios {
- my ($logger) = @_;
-
- my $handle = getFileHandle(
- command => "/usr/sbin/smbios",
- logger => $logger
+ my (%params) = (
+ command => '/usr/sbin/smbios',
+ @_
);
+
+ my $handle = getFileHandle(%params);
return unless $handle;
my $infos;
================================================================
Commit: c6583f321c61ccc718be6a1b8ac9df429894d6dd
https://github.com/fusinv/fusioninventory-agent/commit/c6583f321c61ccc718be6a1b8ac9df429894d6dd
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
Log Message:
-----------
change interface for testability
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
index 2791296..4895ef3 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
@@ -125,12 +125,12 @@ sub _parseSmbios {
}
sub _parsePrtconf {
- my ($logger) = @_;
-
- my $handle = getFileHandle(
- command => "/usr/sbin/prtconf -pv",
- logger => $logger
+ my (%params) = (
+ command => '/usr/sbin/prtconf -pv',
+ @_
);
+
+ my $handle = getFileHandle(%params);
return unless $handle;
my $infos;
================================================================
Commit: 39251254c305a84a060dc9e49e26e2f6c87deb9c
https://github.com/fusinv/fusioninventory-agent/commit/39251254c305a84a060dc9e49e26e2f6c87deb9c
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
Log Message:
-----------
fix method calls
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
index 4895ef3..995816e 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
@@ -36,7 +36,7 @@ sub doInventory {
}
if ($arch eq "i386") {
- my $infos = _parseSmbios($logger);
+ my $infos = _parseSmbios(logger => $logger);
$SystemManufacturer = $infos->{'Manufacturer'};
$SystemSerial = $infos->{'Serial Number'};
$SystemModel = $infos->{'Product'};
@@ -45,7 +45,7 @@ sub doInventory {
$BiosDate = $infos->{'Release Date'};
$uuid = $infos->{'UUID'};
} elsif ($arch =~ /sparc/i) {
- my $infos = _parsePrtconf($logger);
+ my $infos = _parsePrtconf(logger => $logger);
$SystemModel = $infos->{'banner-name'};
$SystemModel .= " ($infos->{name})" if $infos->{name};
@@ -67,7 +67,7 @@ sub doInventory {
);
}
} else {
- my $infos = _parseShowRev($logger);
+ my $infos = _parseShowRev(logger => $logger);
$SystemManufacturer = $infos->{'Hardware provider'};
$SystemModel = "Solaris Containers";
}
================================================================
Commit: a083e5342afafeaa43f01408453eb8d0d486c10b
https://github.com/fusinv/fusioninventory-agent/commit/a083e5342afafeaa43f01408453eb8d0d486c10b
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
M t/inventory/solaris/bios.t
Log Message:
-----------
add prtconf and smbios parsing tests
diff --git a/t/inventory/solaris/bios.t b/t/inventory/solaris/bios.t
index e6c8344..c2ccc34 100755
--- a/t/inventory/solaris/bios.t
+++ b/t/inventory/solaris/bios.t
@@ -53,10 +53,87 @@ my %showrev_tests = (
}
);
-plan tests => scalar keys %showrev_tests;
+my %smbios_tests = (
+ 'x86-1' => {
+ 'Version' => '00',
+ 'SKU Number' => ' ',
+ 'Serial Number' => 'R00T34E0009',
+ 'Product' => 'Sun Fire V40z',
+ 'Manufacturer' => 'Sun Microsystems, Inc.',
+ 'UUID' => 'be1630df-d130-41a4-be32-fd28bb4bd1ac',
+ 'Wake-Up Event' => '0x6 (power switch)'
+ },
+ 'x86-3' => {
+ 'Flags' => '0x9',
+ 'Serial Number' => 'QSDH1234567',
+ 'Family' => ' ',
+ 'Type' => '1 (KCS: Keyboard Controller Style)',
+ 'ROM Size' => '8388608 bytes',
+ 'Release Date' => '07/12/2009',
+ 'Product' => 'S7000FC4UR',
+ 'Manufacturer' => 'TRANSTEC',
+ 'Characteristics' => '0x15c099a80',
+ 'Version Number' => '0.0',
+ 'Chassis Height' => '1u',
+ 'Power Supply State' => '0x3 (safe)',
+ 'Lock Present' => 'N',
+ 'Interrupt Number' => '0',
+ 'Version' => 'E10476-011',
+ 'Version String' => 'SFC4UR.86B.01.00.0029.071220092126',
+ 'Board Type' => '0xa (motherboard)',
+ 'i2c Bus Slave Address' => '0x20',
+ 'SKU Number' => '6I012345TF',
+ 'Vendor' => 'Intel Corporation',
+ 'Image Size' => '98304 bytes',
+ 'Chassis Type' => '0x17 (rack mount chassis)',
+ 'Power Cords' => '1',
+ 'Address Segment' => '0xe800',
+ 'BMC Base Address' => '0xca2',
+ 'Boot-Up State' => '0x3 (safe)',
+ 'UUID' => '4b713db6-6d40-11dd-b32c-000123456789',
+ 'Chassis' => '0',
+ 'NV Storage Device Bus ID' => '0xffffffff',
+ 'BMC IPMI Version' => '2.0',
+ 'Element Records' => '0',
+ 'Thermal State' => '0x3 (safe)',
+ 'Register Spacing' => '1',
+ 'Asset Tag' => '6I012345TF',
+ 'Characteristics Extension Byte 2' => '0x7',
+ 'Characteristics Extension Byte 1' => '0x33',
+ 'Embedded Ctlr Firmware Version Number' => '0.0',
+ 'OEM Data' => '0x81581cf8',
+ 'Wake-Up Event' => '0x6 (power switch)'
+ }
+);
+
+my %prtconf_tests = (
+ 'SPARC-1' => {
+ 'compatible' => 'SUNW,Serengeti',
+ 'device_type' => 'gptwo',
+ 'banner-name' => 'Sun Fire E6900',
+ 'name' => 'SUNW,Sun-Fire'
+ }
+);
+
+plan tests =>
+ (scalar keys %showrev_tests) +
+ (scalar keys %smbios_tests) +
+ (scalar keys %prtconf_tests);
foreach my $test (keys %showrev_tests) {
my $file = "resources/solaris/showrev/$test";
my $result = FusionInventory::Agent::Task::Inventory::Input::Solaris::Bios::_parseShowRev(file => $file);
is_deeply($result, $showrev_tests{$test}, "showrev parsing: $test");
}
+
+foreach my $test (keys %smbios_tests) {
+ my $file = "resources/solaris/smbios/$test";
+ my $result = FusionInventory::Agent::Task::Inventory::Input::Solaris::Bios::_parseSmbios(file => $file);
+ is_deeply($result, $smbios_tests{$test}, "smbios parsing: $test");
+}
+
+foreach my $test (keys %prtconf_tests) {
+ my $file = "resources/solaris/prtconf/$test";
+ my $result = FusionInventory::Agent::Task::Inventory::Input::Solaris::Bios::_parsePrtconf(file => $file);
+ is_deeply($result, $prtconf_tests{$test}, "prtconf parsing: $test");
+}
================================================================
Commit: 792cdbb4a667422206aa7f6380cc78a071ad1e78
https://github.com/fusinv/fusioninventory-agent/commit/792cdbb4a667422206aa7f6380cc78a071ad1e78
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
Log Message:
-----------
read the productid from DigitalProductId4
WinProductId is collected from
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/DigitalProductId
Some time the value returned is empty or invalid (BBBB-BBBB-...)
In such cases, we failback on
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/DigitalProductId4
closes: #582
Reported-by: David Durieux <d.durieux at siprossii.com>
Reported-by: Ionut Bujor <ionut_bujor at hotmail.com>
Reported-by: Xavier Caillaud <tsmr at thetsmr.fr>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
index 2795421..6350989 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
@@ -28,7 +28,10 @@ sub doInventory {
/ ]
)) {
- my $key = _getXPkey();
+ my $key = _getXPkey(path => 'HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/DigitalProductId');
+ if (!$key) { # 582
+ $key = _getXPkey(path => 'HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/DigitalProductId4');
+ }
my $description = encodeFromRegistry(getRegistryValue(
path => 'HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/lanmanserver/Parameters/srvcomment',
logger => $logger
@@ -119,10 +122,9 @@ sub doInventory {
#http://www.perlmonks.org/?node_id=497616
# Thanks William Gannon && Charles Clarkson
sub _getXPkey {
- my $key = getRegistryValue(
- path => 'HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/DigitalProductId',
- );
+ my $key = getRegistryValue(@_);
return unless $key;
+
my @encoded = ( unpack 'C*', $key )[ reverse 52 .. 66 ];
# Get indices
@@ -147,6 +149,7 @@ sub _getXPkey {
join '-',
$cd_key =~ /(.{5})/g;
+ return if $cd_key =~ /^[B-]*$/;
return $cd_key;
}
================================================================
Commit: 61b4de3228182397f433102cb5f0f7c7892bcdeb
https://github.com/fusinv/fusioninventory-agent/commit/61b4de3228182397f433102cb5f0f7c7892bcdeb
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
M t/inventory/solaris/bios.t
Log Message:
-----------
rework smbios parser
information is actually hierarchized in sections
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
index 995816e..074d414 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
@@ -114,10 +114,17 @@ sub _parseSmbios {
my $handle = getFileHandle(%params);
return unless $handle;
- my $infos;
+ my ($infos, $current);
while (my $line = <$handle>) {
- next unless $line =~ /^ \s* ([^:]+) : \s* (.+) $/x;
- $infos->{$1} = $2;
+ if ($line =~ /^ \d+ \s+ \d+ \s+ (\S+)/x) {
+ $current = $1;
+ next;
+ }
+
+ if ($line =~ /^ \s* ([^:]+) : \s* (.+) $/x) {
+ $infos->{$current}->{$1} = $2;
+ next;
+ }
}
close $handle;
diff --git a/t/inventory/solaris/bios.t b/t/inventory/solaris/bios.t
index c2ccc34..b649dbd 100755
--- a/t/inventory/solaris/bios.t
+++ b/t/inventory/solaris/bios.t
@@ -55,55 +55,73 @@ my %showrev_tests = (
my %smbios_tests = (
'x86-1' => {
- 'Version' => '00',
- 'SKU Number' => ' ',
- 'Serial Number' => 'R00T34E0009',
- 'Product' => 'Sun Fire V40z',
- 'Manufacturer' => 'Sun Microsystems, Inc.',
- 'UUID' => 'be1630df-d130-41a4-be32-fd28bb4bd1ac',
- 'Wake-Up Event' => '0x6 (power switch)'
+ 'SMB_TYPE_SYSTEM' => {
+ 'Version' => '00',
+ 'SKU Number' => ' ',
+ 'Serial Number' => 'R00T34E0009',
+ 'Product' => 'Sun Fire V40z',
+ 'Manufacturer' => 'Sun Microsystems, Inc.',
+ 'UUID' => 'be1630df-d130-41a4-be32-fd28bb4bd1ac',
+ 'Wake-Up Event' => '0x6 (power switch)'
+ }
},
'x86-3' => {
- 'Flags' => '0x9',
- 'Serial Number' => 'QSDH1234567',
- 'Family' => ' ',
- 'Type' => '1 (KCS: Keyboard Controller Style)',
- 'ROM Size' => '8388608 bytes',
- 'Release Date' => '07/12/2009',
- 'Product' => 'S7000FC4UR',
- 'Manufacturer' => 'TRANSTEC',
- 'Characteristics' => '0x15c099a80',
- 'Version Number' => '0.0',
- 'Chassis Height' => '1u',
- 'Power Supply State' => '0x3 (safe)',
- 'Lock Present' => 'N',
- 'Interrupt Number' => '0',
- 'Version' => 'E10476-011',
- 'Version String' => 'SFC4UR.86B.01.00.0029.071220092126',
- 'Board Type' => '0xa (motherboard)',
- 'i2c Bus Slave Address' => '0x20',
- 'SKU Number' => '6I012345TF',
- 'Vendor' => 'Intel Corporation',
- 'Image Size' => '98304 bytes',
- 'Chassis Type' => '0x17 (rack mount chassis)',
- 'Power Cords' => '1',
- 'Address Segment' => '0xe800',
- 'BMC Base Address' => '0xca2',
- 'Boot-Up State' => '0x3 (safe)',
- 'UUID' => '4b713db6-6d40-11dd-b32c-000123456789',
- 'Chassis' => '0',
- 'NV Storage Device Bus ID' => '0xffffffff',
- 'BMC IPMI Version' => '2.0',
- 'Element Records' => '0',
- 'Thermal State' => '0x3 (safe)',
- 'Register Spacing' => '1',
- 'Asset Tag' => '6I012345TF',
- 'Characteristics Extension Byte 2' => '0x7',
- 'Characteristics Extension Byte 1' => '0x33',
- 'Embedded Ctlr Firmware Version Number' => '0.0',
- 'OEM Data' => '0x81581cf8',
- 'Wake-Up Event' => '0x6 (power switch)'
- }
+ SMB_TYPE_CHASSIS => {
+ 'Chassis Height' => '1u',
+ 'Power Supply State' => '0x3 (safe)',
+ 'Element Records' => '0',
+ 'Serial Number' => 'QSDH1234567',
+ 'Thermal State' => '0x3 (safe)',
+ 'Lock Present' => 'N',
+ 'Asset Tag' => '6I012345TF',
+ 'Chassis Type' => '0x17 (rack mount chassis)',
+ 'Power Cords' => '1',
+ 'Version' => 'E10476-011',
+ 'OEM Data' => '0x81581cf8',
+ 'Boot-Up State' => '0x3 (safe)',
+ 'Manufacturer' => 'TRANSTEC'
+ },
+ SMB_TYPE_BIOS => {
+ 'Characteristics' => '0x15c099a80',
+ 'Version Number' => '0.0',
+ 'Vendor' => 'Intel Corporation',
+ 'Image Size' => '98304 bytes',
+ 'Characteristics Extension Byte 2' => '0x7',
+ 'Characteristics Extension Byte 1' => '0x33',
+ 'Address Segment' => '0xe800',
+ 'Version String' => 'SFC4UR.86B.01.00.0029.071220092126',
+ 'Embedded Ctlr Firmware Version Number' => '0.0',
+ 'Release Date' => '07/12/2009',
+ 'ROM Size' => '8388608 bytes'
+ },
+ SMB_TYPE_IPMIDEV => {
+ 'Flags' => '0x9',
+ 'NV Storage Device Bus ID' => '0xffffffff',
+ 'BMC IPMI Version' => '2.0',
+ 'Register Spacing' => '1',
+ 'Interrupt Number' => '0',
+ 'Type' => '1 (KCS: Keyboard Controller Style)',
+ 'i2c Bus Slave Address' => '0x20',
+ 'BMC Base Address' => '0xca2'
+ },
+ SMB_TYPE_BASEBOARD => {
+ 'Board Type' => '0xa (motherboard)',
+ 'Flags' => '0x9',
+ 'Serial Number' => 'QSFX12345678',
+ 'Product' => 'S7000FC4UR',
+ 'Manufacturer' => 'Intel',
+ 'Chassis' => '0',
+ 'Asset Tag' => '6I012345TF'
+ },
+ SMB_TYPE_SYSTEM => {
+ 'Family' => ' ',
+ 'SKU Number' => '6I012345TF',
+ 'Product' => 'MP Server',
+ 'Manufacturer' => 'Intel',
+ 'UUID' => '4b713db6-6d40-11dd-b32c-000123456789',
+ 'Wake-Up Event' => '0x6 (power switch)'
+ }
+ }
);
my %prtconf_tests = (
================================================================
Commit: f3c6757dcb70f5b8851c0f57b3c5b039d556b723
https://github.com/fusinv/fusioninventory-agent/commit/f3c6757dcb70f5b8851c0f57b3c5b039d556b723
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
Log Message:
-----------
Win32/softwares: various fixes
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index e65d362..a0a89c6 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -27,6 +27,7 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
+ my $logger = $params{logger};
if (is64bit()) {
@@ -43,10 +44,9 @@ sub doInventory {
foreach my $software (_getSoftwares(
softwares => $softwares64,
- is64bit => 1,
- logger => $logger
+ is64bit => 1
)) {
- _addSoftware(inventory => $inventory, entry => $software, logger => $logger);
+ _addSoftware(inventory => $inventory, entry => $software);
}
_processMSIE(
machKey => $machKey64,
@@ -66,7 +66,7 @@ sub doInventory {
is64bit => 0,
logger => $logger
)) {
- _addSoftware(inventory => $inventory, entry => $software, logger => $logger);
+ _addSoftware(inventory => $inventory, entry => $software);
}
_processMSIE(
machKey => $machKey32,
@@ -87,7 +87,7 @@ sub doInventory {
softwares => $softwares,
is64bit => 0
)) {
- _addSoftware(inventory => $inventory, entry => $software, logger => $logger);
+ _addSoftware(inventory => $inventory, entry => $software);
}
_processMSIE(
machKey => $machKey,
@@ -167,7 +167,6 @@ sub _addSoftware {
my $entry = $params{entry};
- $params{logger}->debug("_addSoftware() begin") if $params{logger};
# avoid duplicates
return if $seen->{$entry->{NAME}}->{$entry->{IS64BIT}}{$entry->{VERSION} || '_undef_'}++;
================================================================
Commit: 3ab8e5cf2205f7e75876f941df1ed8f657a6b88d
https://github.com/fusinv/fusioninventory-agent/commit/3ab8e5cf2205f7e75876f941df1ed8f657a6b88d
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
Log Message:
-----------
do not disable the module if dmidecode is avalaible
We don't use dmidecode directly to collect the CPU.
The $runMeIfTheseChecksFailed value was false but
$runMeIfTheseChecksFailed itself was broken.
That's why the problem append only now.
see:334935af3019d47304c1556ca4e0675a2c7e7ecb
closes: #1470
Reported-by: Olivier Moron <olivier.moron at raynet-it.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
index 8f1d49c..57d4e95 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
@@ -15,9 +15,6 @@ use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Win32;
use FusionInventory::Agent::Tools::Generic;
-our $runMeIfTheseChecksFailed =
- ["FusionInventory::Agent::Task::Inventory::Input::Generic::Dmidecode"];
-
sub isEnabled {
return 1;
}
================================================================
Commit: 688289d74d2e60213d65421e3724a046115083c6
https://github.com/fusinv/fusioninventory-agent/commit/688289d74d2e60213d65421e3724a046115083c6
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
Log Message:
-----------
no more BASEBOARDSERIAL
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
index c0fd89b..1242d90 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
@@ -54,7 +54,7 @@ my %fields = (
PRINTPROCESSOR SERIAL/ ],
BIOS => [ qw/SMODEL SMANUFACTURER SSN BDATE BVERSION
BMANUFACTURER MMANUFACTURER MSN MMODEL ASSETTAG
- ENCLOSURESERIAL BASEBOARDSERIAL BIOSSERIAL
+ ENCLOSURESERIAL BIOSSERIAL
TYPE SKUNUMBER/ ],
HARDWARE => [ qw/USERID OSVERSION PROCESSORN OSCOMMENTS CHECKSUM
PROCESSORT NAME PROCESSORS SWAP ETIME TYPE OSNAME
================================================================
Commit: ec5722d864771ef14d488057a55d620a35397f81
https://github.com/fusinv/fusioninventory-agent/commit/ec5722d864771ef14d488057a55d620a35397f81
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
Log Message:
-----------
use structured smbios information
- fix confusion between system, bios and motherboard information (close
#1315)
- add SKU number, motherboard model, manufacturer and serial
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
index 074d414..404ea2d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
@@ -19,7 +19,8 @@ sub doInventory {
my $logger = $params{logger};
my ($SystemSerial, $SystemModel, $SystemManufacturer, $BiosManufacturer,
- $BiosVersion, $BiosDate, $uuid);
+ $BiosVersion, $BiosDate, $uuid, $sku, $MotherboardSerial,
+ $MotherboardManufacturer, $MotherboardModel);
my $zone = getZone();
if ($zone) {
@@ -37,13 +38,20 @@ sub doInventory {
if ($arch eq "i386") {
my $infos = _parseSmbios(logger => $logger);
- $SystemManufacturer = $infos->{'Manufacturer'};
- $SystemSerial = $infos->{'Serial Number'};
- $SystemModel = $infos->{'Product'};
- $BiosManufacturer = $infos->{'Vendor'};
- $BiosVersion = $infos->{'Version String'};
- $BiosDate = $infos->{'Release Date'};
- $uuid = $infos->{'UUID'};
+ my $motherboardInfos = $infos->{SMB_TYPE_BASEBOARD};
+ my $systemInfos = $infos->{SMB_TYPE_SYSTEM};
+ my $biosInfos = $infos->{SMB_TYPE_BIOS};
+
+ $BiosManufacturer = $biosInfos->{'Vendor'};
+ $BiosVersion = $biosInfos->{'Version String'};
+ $BiosDate = $biosInfos->{'Release Date'};
+ $SystemManufacturer = $systemInfos->{'Manufacturer'};
+ $SystemModel = $systemInfos->{'Product'};
+ $uuid = $systemInfos->{'UUID'};
+ $sku = $systemInfos->{'SKU Number'};
+ $MotherboardModel = $motherboardInfos->{'Product'};
+ $MotherboardSerial = $motherboardInfos->{'Serial Number'};
+ $MotherboardManufacturer = $motherboardInfos->{'Manufacturer'};
} elsif ($arch =~ /sparc/i) {
my $infos = _parsePrtconf(logger => $logger);
$SystemModel = $infos->{'banner-name'};
@@ -78,7 +86,11 @@ sub doInventory {
BMANUFACTURER => $BiosManufacturer,
SMANUFACTURER => $SystemManufacturer,
SMODEL => $SystemModel,
- SSN => $SystemSerial
+ SSN => $SystemSerial,
+ SKUNUMBER => $sku,
+ MSN => $MotherboardSerial,
+ MMANUFACTURER => $MotherboardManufacturer,
+ MMODEL => $MotherboardModel
});
$inventory->setHardware({
================================================================
Commit: f4c93290f600fa3cdf8ae9cea9ede69604f134c2
https://github.com/fusinv/fusioninventory-agent/commit/f4c93290f600fa3cdf8ae9cea9ede69604f134c2
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
Log Message:
-----------
less intermediate variables
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
index 404ea2d..65c1546 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
@@ -18,9 +18,7 @@ sub doInventory {
my $inventory = $params{inventory};
my $logger = $params{logger};
- my ($SystemSerial, $SystemModel, $SystemManufacturer, $BiosManufacturer,
- $BiosVersion, $BiosDate, $uuid, $sku, $MotherboardSerial,
- $MotherboardManufacturer, $MotherboardModel);
+ my ($bios, $hardware);
my $zone = getZone();
if ($zone) {
@@ -28,8 +26,8 @@ sub doInventory {
my $arch;
if (canRun('showrev')) {
my $infos = _parseShowRev(logger => $logger);
- $SystemModel = $infos->{'Application architecture'};
- $SystemManufacturer = $infos->{'Hardware provider'};
+ $bios->{SMODEL} = $infos->{'Application architecture'};
+ $bios->{SMANUFACTURER} = $infos->{'Hardware provider'};
$arch = $infos->{'Application architecture'};
} else {
$arch =
@@ -38,64 +36,52 @@ sub doInventory {
if ($arch eq "i386") {
my $infos = _parseSmbios(logger => $logger);
- my $motherboardInfos = $infos->{SMB_TYPE_BASEBOARD};
- my $systemInfos = $infos->{SMB_TYPE_SYSTEM};
+
my $biosInfos = $infos->{SMB_TYPE_BIOS};
+ $bios->{BMANUFACTURER} = $biosInfos->{'Vendor'};
+ $bios->{BVERSION} = $biosInfos->{'Version String'};
+ $bios->{BDATE} = $biosInfos->{'Release Date'};
- $BiosManufacturer = $biosInfos->{'Vendor'};
- $BiosVersion = $biosInfos->{'Version String'};
- $BiosDate = $biosInfos->{'Release Date'};
- $SystemManufacturer = $systemInfos->{'Manufacturer'};
- $SystemModel = $systemInfos->{'Product'};
- $uuid = $systemInfos->{'UUID'};
- $sku = $systemInfos->{'SKU Number'};
- $MotherboardModel = $motherboardInfos->{'Product'};
- $MotherboardSerial = $motherboardInfos->{'Serial Number'};
- $MotherboardManufacturer = $motherboardInfos->{'Manufacturer'};
+ my $systemInfos = $infos->{SMB_TYPE_SYSTEM};
+ $bios->{SMANUFACTURER} = $systemInfos->{'Manufacturer'};
+ $bios->{SMODEL} = $systemInfos->{'Product'};
+ $bios->{SKUNUMBER} = $systemInfos->{'SKU Number'};
+ $hardware->{UUID} = $systemInfos->{'UUID'};
+
+ my $motherboardInfos = $infos->{SMB_TYPE_BASEBOARD};
+ $bios->{MMODEL} = $motherboardInfos->{'Product'};
+ $bios->{MSN} = $motherboardInfos->{'Serial Number'};
+ $bios->{MMANUFACTURER} = $motherboardInfos->{'Manufacturer'};
} elsif ($arch =~ /sparc/i) {
my $infos = _parsePrtconf(logger => $logger);
- $SystemModel = $infos->{'banner-name'};
- $SystemModel .= " ($infos->{name})" if $infos->{name};
+ $bios->{SMODEL} = $infos->{'banner-name'};
+ $bios->{SMODEL} .= " ($infos->{name})" if $infos->{name};
# looks like : "OBP 4.16.4 2004/12/18 05:18"
# with further informations sometime
if ($infos->{version} =~ m{OBP\s+([\d|\.]+)\s+(\d+)/(\d+)/(\d+)}) {
- $BiosVersion = "OBP $1";
- $BiosDate = "$2/$3/$4";
+ $bios->{BVERSION} = "OBP $1";
+ $bios->{BDATE} = "$2/$3/$4";
} else {
- $BiosVersion = $infos->{version};
+ $bios->{BVERSION} = $infos->{version};
}
my $command = -x '/opt/SUNWsneep/bin/sneep' ?
'/opt/SUNWsneep/bin/sneep' : 'sneep';
- $SystemSerial = getFirstLine(
+ $bios->{SSN} = getFirstLine(
command => $command,
logger => $logger
);
}
} else {
my $infos = _parseShowRev(logger => $logger);
- $SystemManufacturer = $infos->{'Hardware provider'};
- $SystemModel = "Solaris Containers";
+ $bios->{SMANUFACTURER} = $infos->{'Hardware provider'};
+ $bios->{SMODEL} = "Solaris Containers";
}
- $inventory->setBios({
- BVERSION => $BiosVersion,
- BDATE => $BiosDate,
- BMANUFACTURER => $BiosManufacturer,
- SMANUFACTURER => $SystemManufacturer,
- SMODEL => $SystemModel,
- SSN => $SystemSerial,
- SKUNUMBER => $sku,
- MSN => $MotherboardSerial,
- MMANUFACTURER => $MotherboardManufacturer,
- MMODEL => $MotherboardModel
- });
-
- $inventory->setHardware({
- UUID => $uuid
- });
+ $inventory->setBios($bios);
+ $inventory->setHardware($hardware);
}
sub _parseShowRev {
================================================================
Commit: d36d3570cf7ce387710b1153653fc654d555163e
https://github.com/fusinv/fusioninventory-agent/commit/d36d3570cf7ce387710b1153653fc654d555163e
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-01 (Thu, 01 Mar 2012)
Changed paths:
M Changes
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
Log Message:
-----------
Merge remote-tracking branch 'forge/2.2.x' into 2.2.x
diff --git a/Changes b/Changes
index 73837f2..a6da7ba 100644
--- a/Changes
+++ b/Changes
@@ -59,7 +59,41 @@ Minor changes:
* Linux: Use /sbin/ip to get the interface IP addresses (#854)
* HPUX: don't report unoccupied memory slots
-2.1.12 Wed, 14 Dec 2011 13:06:44 +0100
+2.1.14 Wed, 22 Feb 2012 14:56:51 -0000
+
+LINUX
+ ✔ Detected OS is "RedHat" for CentOS servers if lsb_release not available
+ commit:d3a252
+ http://forge.fusioninventory.org/issues/1193
+ thanks: Jonathan Clarke
+
+MACOSX
+ ✔ no-software option doesn't work as advertised
+ commit:18dfaf
+ http://forge.fusioninventory.org/issues/1476
+ thanks: Ronan Mejecaze
+ ✔ syntax error in Video module
+ thanks: Walid Nouh
+
+WINDOWS
+ ✔ No 2007 Microsoft Office system into XML
+ commit:39f3c7
+ http://forge.fusioninventory.org/issues/1065
+ thanks: Walid Nouh, Xavier Caillaud, jerome slayer
+ ✔ On Windows Vista Office 2007 is not correctly gathered
+ commit:39f3c7
+ http://forge.fusioninventory.org/issues/1425
+ thanks: Walid Nouh, Xavier Caillaud
+ ✔ VM System incorrect
+ commit:259996
+ http://forge.fusioninventory.org/issues/1436
+ thanks: Mario Gzuk
+ ✔ Inventory Internet Explorer when it's not present in Add/remove programs
+ commit:39f3c7
+ http://forge.fusioninventory.org/issues/1441
+ thanks: Walid Nouh, Xavier Caillaud, jerome slayer
+
+2.1.13 Wed, 14 Dec 2011 13:06:44 +0100
TEST-SUITE
✔ 2.1.10 Test suite fails
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
index 7595ecd..794b4cd 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
@@ -28,7 +28,10 @@ sub doInventory {
/ ]
)) {
- my $key = _getXPkey();
+ my $key = _getXPkey(path => 'HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/DigitalProductId');
+ if (!$key) { # 582
+ $key = _getXPkey(path => 'HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/DigitalProductId4');
+ }
my $description = encodeFromRegistry(getRegistryValue(
path => 'HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/lanmanserver/Parameters/srvcomment',
logger => $logger
@@ -119,10 +122,9 @@ sub doInventory {
#http://www.perlmonks.org/?node_id=497616
# Thanks William Gannon && Charles Clarkson
sub _getXPkey {
- my $key = getRegistryValue(
- path => 'HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/DigitalProductId',
- );
+ my $key = getRegistryValue(@_);
return unless $key;
+
my @encoded = ( unpack 'C*', $key )[ reverse 52 .. 66 ];
# Get indices
@@ -147,6 +149,7 @@ sub _getXPkey {
join '-',
$cd_key =~ /(.{5})/g;
+ return if $cd_key =~ /^[B-]*$/;
return $cd_key;
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index 6b11a72..e65d362 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -15,7 +15,7 @@ use Win32::TieRegistry (
use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Win32;
-my $seen;
+my $seen = {};
sub isEnabled {
my (%params) = @_;
@@ -36,16 +36,17 @@ sub doInventory {
my $machKey64 = $Registry->Open('LMachine', {
Access => KEY_READ | KEY_WOW64_64 ## no critic (ProhibitBitwise)
- }) or die "Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR";
+ }) or $logger->error("Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR");
my $softwares64 =
$machKey64->{"SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall"};
foreach my $software (_getSoftwares(
softwares => $softwares64,
- is64bit => 1
+ is64bit => 1,
+ logger => $logger
)) {
- _addSoftware(inventory => $inventory, entry => $software);
+ _addSoftware(inventory => $inventory, entry => $software, logger => $logger);
}
_processMSIE(
machKey => $machKey64,
@@ -55,16 +56,17 @@ sub doInventory {
my $machKey32 = $Registry->Open('LMachine', {
Access => KEY_READ | KEY_WOW64_32 ## no critic (ProhibitBitwise)
- }) or die "Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR";
+ }) or $logger->error("Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR");
my $softwares32 =
$machKey32->{"SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall"};
foreach my $software (_getSoftwares(
softwares => $softwares32,
- is64bit => 0
+ is64bit => 0,
+ logger => $logger
)) {
- _addSoftware(inventory => $inventory, entry => $software);
+ _addSoftware(inventory => $inventory, entry => $software, logger => $logger);
}
_processMSIE(
machKey => $machKey32,
@@ -76,7 +78,7 @@ sub doInventory {
} else {
my $machKey = $Registry->Open('LMachine', {
Access => KEY_READ
- }) or die "Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR";
+ }) or $logger->error("Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR");
my $softwares =
$machKey->{"SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall"};
@@ -85,7 +87,7 @@ sub doInventory {
softwares => $softwares,
is64bit => 0
)) {
- _addSoftware(inventory => $inventory, entry => $software);
+ _addSoftware(inventory => $inventory, entry => $software, logger => $logger);
}
_processMSIE(
machKey => $machKey,
@@ -96,7 +98,7 @@ sub doInventory {
}
sub _dateFormat {
- my ($date) = @_;
+ my ($date) = @_;
## no critic (ExplicitReturnUndef)
return undef unless $date;
@@ -119,13 +121,18 @@ sub _getSoftwares {
my @softwares;
+ return unless $softwares;
+
foreach my $rawGuid (keys %$softwares) {
my $data = $softwares->{$rawGuid};
+
+ next unless $data;
+
# odd, found on Win2003
next unless keys %$data > 2;
my $guid = $rawGuid;
- $guid =~ s/\/$//; # drop the tailing /
+ $guid =~ s/\/$//; # drop the tailing /
my $software = {
FROM => "registry",
@@ -160,6 +167,7 @@ sub _addSoftware {
my $entry = $params{entry};
+ $params{logger}->debug("_addSoftware() begin") if $params{logger};
# avoid duplicates
return if $seen->{$entry->{NAME}}->{$entry->{IS64BIT}}{$entry->{VERSION} || '_undef_'}++;
@@ -174,6 +182,8 @@ sub _processMSIE {
my $version =
$params{machKey}->{"SOFTWARE/Microsoft/Internet Explorer/Version"};
+ return unless $version; # Not installed
+
_addSoftware(
inventory => $params{inventory},
entry => {
================================================================
Commit: 1b2636c27b62d7fd7e6f237c514c38a90b9f3ea4
https://github.com/fusinv/fusioninventory-agent/commit/1b2636c27b62d7fd7e6f237c514c38a90b9f3ea4
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-02 (Fri, 02 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Bios.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/PowerPC.pm
Log Message:
-----------
less intermediate variables
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Bios.pm
index 245c73b..00dc9ee 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Bios.pm
@@ -22,30 +22,26 @@ sub doInventory {
my $inventory = $params{inventory};
my $logger = $params{logger};
- my ($serial, $model, $version, $date);
+ my $bios = {
+ BMANUFACTURER => 'IBM',
+ SMANUFACTURER => 'IBM',
+ };
my @infos = getLsvpdInfos(logger => $logger);
my $system = first { $_->{DS} eq 'System Firmware' } @infos;
- $version = $system->{RM} if $system;
+ $bios->{BVERSION} = $system->{RM} if $system;
my $platform = first { $_->{DS} eq 'Platform Firmware' } @infos;
- $version .= "(Firmware : $platform->{RM})" if $platform;
+ $bios->{BVERSION} .= "(Firmware : $platform->{RM})" if $platform;
my $vpd = first { $_->{DS} eq 'System VPD' } @infos;
if ($vpd) {
- $model = $vpd->{TM};
- $serial = $vpd->{SE};
+ $bios->{SMODEL} = $vpd->{TM};
+ $bios->{SSN} = $vpd->{SE};
}
- $inventory->setBios({
- BVERSION => $version,
- BDATE => $date,
- BMANUFACTURER => 'IBM',
- SMANUFACTURER => 'IBM',
- SMODEL => $model,
- SSN => $serial,
- });
+ $inventory->setBios($bios);
}
1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
index b9d5d21..f83dc0b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
@@ -16,10 +16,14 @@ sub doInventory {
my $inventory = $params{inventory};
+ my $bios = {
+ SMANUFACTURER => 'DEC',
+ };
+
# sysctl infos
# example on *BSD: AlphaStation 255 4/232
- my $SystemModel = getFirstLine(command => 'sysctl -n hw.model');
+ $bios->{SMODEL} = getFirstLine(command => 'sysctl -n hw.model');
my $processorn = getFirstLine(command => 'sysctl -n hw.ncpu');
@@ -37,14 +41,11 @@ sub doInventory {
my ($processort, $processors);
foreach my $line (getAllLines(command => 'dmesg')) {
- if ($line =~ /$SystemModel,\s*(\S+)\s*MHz/) { $processors = $1; }
+ if ($line =~ /$bios->{SMODEL},\s*(\S+)\s*MHz/) { $processors = $1; }
if ($line =~ /^cpu[^:]*:\s*(.*)$/i) { $processort = $1; }
}
- $inventory->setBios({
- SMANUFACTURER => 'DEC',
- SMODEL => $SystemModel,
- });
+ $inventory->setBios($bios);
for my $i (1 .. $processorn) {
$inventory->addEntry(
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
index e79dbd0..4109b5e 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
@@ -15,12 +15,16 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
+
+ my $bios = {
+ SMANUFACTURER => 'SGI',
+ };
# sysctl infos
# example on NetBSD: SGI-IP22
# example on OpenBSD: SGI-O2 (IP32)
- my $SystemModel = getFirstLine(command => 'sysctl -n hw.model');
+ $bios->{SMODEL} = getFirstLine(command => 'sysctl -n hw.model');
my $processorn = getFirstLine(command => 'sysctl -n hw.ncpu');
@@ -41,18 +45,14 @@ sub doInventory {
# cpu0 at mainbus0: MIPS R5000 CPU rev 2.1 180 MHz with R5000 based FPC rev 1.0
# cpu0: cache L1-I 32KB D 32KB 2 way, L2 512KB direct
- my ($SystemSerial, $processort, $processors);
+ my ($processort, $processors);
foreach my $line (getAllLines(command => 'dmesg')) {
- if ($line =~ /$SystemModel\s*\[\S*\s*(\S*)\]/) { $SystemSerial = $1; }
- if ($line =~ /cpu0 at mainbus0:\s*(.*)$/) { $processort = $1; }
- if ($line =~ /CPU\s*.*\D(\d+)\s*MHz/) { $processors = $1; }
+ if ($line =~ /$bios->{SMODEL}\s*\[\S*\s*(\S*)\]/) { $bios->{SSN} = $1; }
+ if ($line =~ /cpu0 at mainbus0:\s*(.*)$/) { $processort = $1; }
+ if ($line =~ /CPU\s*.*\D(\d+)\s*MHz/) { $processors = $1; }
}
- $inventory->setBios({
- SMANUFACTURER => 'SGI',
- SMODEL => $SystemModel,
- SSN => $SystemSerial,
- });
+ $inventory->setBios($bios);
for my $i (1 .. $processorn) {
$inventory->addEntry(
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
index 9cb1786..7fbdf3b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
@@ -16,17 +16,21 @@ sub doInventory {
my $inventory = $params{inventory};
+ my $bios = {
+ SMANUFACTURER => 'SUN',
+ };
+
# sysctl infos
# it gives only the CPU on OpenBSD/sparc64
- my $SystemModel = getFirstLine(command => 'sysctl -n hw.model');
+ $bios->{SMODEL} = getFirstLine(command => 'sysctl -n hw.model');
# example on NetBSD: 0x807b65c
# example on OpenBSD: 2155570635
- my $SystemSerial = getFirstLine(command => 'sysctl -n kern.hostid');
+ $bios->{SSN} = getFirstLine(command => 'sysctl -n kern.hostid');
# force hexadecimal, but remove 0x to make it appear as in the firmware
- $SystemSerial = dec2hex($SystemSerial);
- $SystemSerial =~ s/^0x//;
+ $bios->{SSN} = dec2hex($bios->{SSN});
+ $bios->{SSN} =~ s/^0x//;
my $processorn = getFirstLine(command => 'sysctl -n hw.ncpu');
@@ -52,14 +56,14 @@ sub doInventory {
my $processort;
foreach my $line (getAllLines(command => 'dmesg')) {
- if ($line=~ /^mainbus0 \(root\):\s*(.*)$/) { $SystemModel = $1; }
+ if ($line=~ /^mainbus0 \(root\):\s*(.*)$/) { $bios->{SMODEL} = $1; }
if ($line =~ /^cpu[^:]*:\s*(.*)$/i) { $processort = $1; }
}
- $SystemModel =~ s/SUNW,//;
- $SystemModel =~ s/[:\(].*$//;
- $SystemModel =~ s/^\s*//;
- $SystemModel =~ s/\s*$//;
+ $bios->{SMODEL} =~ s/SUNW,//;
+ $bios->{SMODEL} =~ s/[:\(].*$//;
+ $bios->{SMODEL} =~ s/^\s*//;
+ $bios->{SMODEL} =~ s/\s*$//;
$processort =~ s/SUNW,//;
$processort =~ s/^\s*//;
@@ -71,11 +75,7 @@ sub doInventory {
$processors = sprintf("%.0f", "$1$2"); # round number
}
- $inventory->setBios({
- SMANUFACTURER => 'SUN',
- SMODEL => $SystemModel,
- SSN => $SystemSerial,
- });
+ $inventory->setBios($bios);
for my $i (1 .. $processorn) {
$inventory->addEntry(
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/PowerPC.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/PowerPC.pm
index b8c4fc0..50433f3 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/PowerPC.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/PowerPC.pm
@@ -44,35 +44,30 @@ sub doInventory {
);
}
- my $SystemSerial = getFirstLine(file => '/proc/device-tree/serial-number');
- $SystemSerial =~ s/[^\,^\.^\w^\ ]//g; # I remove some unprintable char
+ my $bios;
- my $SystemModel = getFirstLine(file => '/proc/device-tree/model');
- $SystemModel =~ s/[^\,^\.^\w^\ ]//g;
+ $bios->{SSN} = getFirstLine(file => '/proc/device-tree/serial-number');
+ $bios->{SSN} =~ s/[^\,^\.^\w^\ ]//g; # I remove some unprintable char
+
+ $bios->{SMODEL} = getFirstLine(file => '/proc/device-tree/model');
+ $bios->{SMODEL} =~ s/[^\,^\.^\w^\ ]//g;
my $colorCode = getFirstLine(file => '/proc/device-tree/color-code');
my ($color) = unpack "h7" , $colorCode;
- $SystemModel .= " color: $color" if $color;
+ $bios->{SMODEL} .= " color: $color" if $color;
- my $BiosVersion = getFirstLine(file => '/proc/device-tree/openprom/model');
- $BiosVersion =~ s/[^\,^\.^\w^\ ]//g;
+ $bios->{BVERSION} =
+ getFirstLine(file => '/proc/device-tree/openprom/model');
+ $bios->{BVERSION} =~ s/[^\,^\.^\w^\ ]//g;
- my ($BiosManufacturer, $SystemManufacturer);
my $copyright = getFirstLine(file => '/proc/device-tree/copyright');
if ($copyright && $copyright =~ /Apple/) {
# What about the Apple clone?
- $BiosManufacturer = "Apple Computer, Inc.";
- $SystemManufacturer = "Apple Computer, Inc."
+ $bios->{BMANUFACTURER} = "Apple Computer, Inc.";
+ $bios->{SMANUFACTURER} = "Apple Computer, Inc."
}
- $inventory->setBios({
- SMANUFACTURER => $SystemManufacturer,
- SMODEL => $SystemModel,
- SSN => $SystemSerial,
- BMANUFACTURER => $BiosManufacturer,
- BVERSION => $BiosVersion,
- });
-
+ $inventory->setBios($bios);
}
sub _getCPUsFromProc {
================================================================
Commit: c73bc5a565023734735cef9f171098b0d81bd07f
https://github.com/fusinv/fusioninventory-agent/commit/c73bc5a565023734735cef9f171098b0d81bd07f
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-02 (Fri, 02 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
Log Message:
-----------
move additional parsing into another function
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
index f8c6bc0..3bb8c7f 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
@@ -76,19 +76,37 @@ sub _getLogicalVolume {
}
close $handle;
- my $size;
- foreach (`lslv $volume->{LV_NAME}`) {
- if (/.*PP SIZE:\s+(\d+) .*/) {
+ my ($size, $uuid) = _getVolumeInfo(
+ name => $volume->{LV_NAME},
+ logger => $logger
+ );
+ $volume->{SIZE} = int($volume->{SEG_COUNT} * $size);
+ $volume->{LV_UUID} = $uuid;
+
+ return $volume;
+}
+
+sub _getVolumeInfo {
+ my (%params) = @_;
+
+ my $handle = getFileHandle(
+ command => "lslv $params{name}",
+ logger => $params{logger}
+ );
+ return unless $handle;
+
+ my ($size, $uuid);
+ while (my $line = <$handle>) {
+ if ($line =~ /.*PP SIZE:\s+(\d+) .*/) {
$size = $1;
}
- if (/LV IDENTIFIER:\s+(\S+)/) {
- $volume->{LV_UUID} = $1;
+ if ($line =~ /LV IDENTIFIER:\s+(\S+)/) {
+ $uuid = $1;
}
}
+ close $handle;
- $volume->{SIZE} = int($volume->{SEG_COUNT} * $size);
-
- return $volume;
+ return ($size, $uuid);
}
sub _getPhysicalVolumes {
================================================================
Commit: 178f31f17a5f1c4ea03717a0581f0ac12df79792
https://github.com/fusinv/fusioninventory-agent/commit/178f31f17a5f1c4ea03717a0581f0ac12df79792
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-02 (Fri, 02 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
Log Message:
-----------
isolate parsing for testing purposes
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
index ee3b03b..aaa93a4 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
@@ -25,13 +25,7 @@ sub doInventory {
# fallback on generic method
if (!$count) {
- foreach (`psrinfo -v`) {
- if (/^\s+The\s(\w+)\sprocessor\soperates\sat\s(\d+)\sMHz,/) {
- $cpu->{NAME} = $1;
- $cpu->{SPEED} = $2;
- $count++;
- }
- }
+ ($count, $cpu->{NAME}, $cpu->{SPEED}) = _parsePsrinfo();
}
$cpu->{MANUFACTURER} = "SPARC";
@@ -172,6 +166,30 @@ sub _parseSpec {
}
+sub _parsePsrinfo {
+ my (%params) = (
+ command => 'psrinfo -v',
+ @_
+ );
+
+ my $handle = getFileHandle(%params);
+ return unless $handle;
+
+ my $count = 0;
+ my ($name, $speed);
+ while (my $line = <$handle>) {
+ next unless $line =~
+ /^\s+The\s(\w+)\sprocessor\soperates\sat\s(\d+)\sMHz,/;
+
+ $name = $1;
+ $speed = $2;
+ $count++;
+ }
+ close $handle;
+
+ return ($count, $name, $speed);
+}
+
sub _getCPUFromPrtcl {
my ($count, $cpu);
================================================================
Commit: 51d89e2757a8b6dbdd665899aa54f18ebd681648
https://github.com/fusinv/fusioninventory-agent/commit/51d89e2757a8b6dbdd665899aa54f18ebd681648
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-02 (Fri, 02 Mar 2012)
Changed paths:
A resources/generic/dmidecode/windows-xppro
M t/tools/generic.t
Log Message:
-----------
add new windows xp sample
diff --git a/resources/generic/dmidecode/windows-xppro b/resources/generic/dmidecode/windows-xppro
new file mode 100644
index 0000000..6b999c7
--- /dev/null
+++ b/resources/generic/dmidecode/windows-xppro
@@ -0,0 +1,586 @@
+# dmidecode 2.11
+SMBIOS 2.4 present.
+57 structures occupying 2822 bytes.
+Table at 0x000F6570.
+
+Handle 0xDA00, DMI type 218, 251 bytes
+OEM-specific Type
+ Header and Data:
+ DA FB 00 DA B2 00 0D 5F 1F 37 40 7D 00 00 00 00
+ 00 40 00 02 00 01 00 41 00 02 00 00 00 65 00 03
+ 00 00 00 66 00 03 00 01 00 F1 00 04 00 00 00 F2
+ 00 04 00 01 00 F3 00 04 00 02 00 0F 00 05 00 00
+ 00 11 00 05 00 01 00 05 00 05 00 02 00 12 00 05
+ 00 03 00 06 00 05 00 04 00 07 00 06 00 00 00 0B
+ 00 06 00 01 00 0C 00 06 00 02 00 0D 00 06 00 03
+ 00 89 01 07 00 00 00 8A 01 07 00 01 00 42 00 08
+ 00 01 00 43 00 08 00 00 00 55 00 09 00 00 00 6D
+ 00 09 00 01 00 16 02 09 00 02 00 98 01 09 00 03
+ 00 0A 01 0A 00 01 00 0B 01 0A 00 00 00 2D 00 0B
+ 00 02 00 6E 00 0B 00 01 00 2E 00 0B 00 00 00 11
+ 01 0C 00 00 00 10 01 0C 00 01 00 F0 00 0D 00 01
+ 00 ED 00 0D 00 00 00 41 01 0E 00 01 00 40 01 0E
+ 00 00 00 47 01 0F 00 01 00 46 01 0F 00 00 00 4A
+ 01 10 00 00 00 FF FF 00 00 00 00
+
+Handle 0xDA01, DMI type 218, 251 bytes
+OEM-specific Type
+ Header and Data:
+ DA FB 01 DA B2 00 0D 5F 1F 37 40 4B 01 10 00 01
+ 00 04 02 11 00 00 00 05 02 11 00 01 00 02 02 12
+ 00 00 00 03 02 12 00 01 00 52 01 13 00 01 00 53
+ 01 13 00 00 00 80 01 14 00 01 00 7F 01 14 00 00
+ 00 7C 01 15 00 01 00 7B 01 15 00 00 00 E8 02 16
+ 00 00 00 E9 02 16 00 01 00 7E 01 17 00 01 00 7D
+ 01 17 00 00 00 92 01 18 00 00 00 91 01 18 00 01
+ 00 94 01 19 00 00 00 93 01 19 00 01 00 86 01 1A
+ 00 01 00 85 01 1A 00 00 00 82 01 1B 00 01 00 81
+ 01 1B 00 00 00 84 01 1C 00 01 00 83 01 1C 00 00
+ 00 9B 01 1D 00 00 00 9C 01 1D 00 01 00 9D 01 1D
+ 00 02 00 9E 01 1D 00 03 00 8D 01 1E 00 00 00 8E
+ 01 1E 00 01 00 85 02 1F 00 00 00 86 02 1F 00 01
+ 00 EA 00 20 00 00 00 EB 00 20 00 01 00 EC 00 20
+ 00 02 00 A1 00 21 00 00 00 A3 00 21 00 01 00 28
+ 00 22 00 00 00 FF FF 00 00 00 00
+
+Handle 0xDA02, DMI type 218, 251 bytes
+OEM-specific Type
+ Header and Data:
+ DA FB 02 DA B2 00 0D 5F 1F 37 40 29 00 22 00 01
+ 00 2A 00 22 00 02 00 2B 00 23 00 00 00 2C 00 24
+ 00 00 00 0E 01 25 00 01 00 0F 01 25 00 00 00 9B
+ 00 26 00 01 00 9C 00 26 00 00 00 4D 01 27 00 01
+ 00 4C 01 27 00 00 00 87 01 28 00 00 00 88 01 28
+ 00 01 00 35 01 29 00 03 00 37 01 29 00 00 00 38
+ 01 29 00 01 00 39 01 29 00 02 00 D9 01 2A 00 01
+ 00 D8 01 2A 00 00 00 DF 01 2B 00 01 00 DE 01 2B
+ 00 00 00 45 02 2C 00 00 00 44 02 2C 00 01 00 49
+ 02 2D 00 00 00 48 02 2D 00 01 00 45 01 45 01 01
+ 00 44 01 44 01 00 00 76 01 76 01 01 00 75 01 75
+ 01 01 00 9F 00 9F 00 00 00 A0 00 A0 00 01 00 E1
+ 01 E1 01 00 00 E3 01 E3 01 01 00 E2 01 E2 01 02
+ 00 29 02 29 02 01 00 28 02 28 02 02 00 2A 02 2A
+ 02 03 00 30 02 30 02 01 00 2F 02 2F 02 00 00 35
+ 02 35 02 01 00 FF FF 00 00 00 00
+
+Handle 0xDA03, DMI type 218, 77 bytes
+OEM-specific Type
+ Header and Data:
+ DA 4D 03 DA B2 00 0D 5F 1F 37 40 36 02 36 02 00
+ 00 37 02 37 02 02 00 4A 02 4A 02 01 00 0C 80 0C
+ 80 01 00 6C 02 6C 02 01 00 6D 02 6D 02 00 00 01
+ F0 01 F0 00 00 02 F0 02 F0 00 00 03 F0 03 F0 00
+ 00 04 F0 04 F0 00 00 FF FF 00 00 00 00
+
+Handle 0x0000, DMI type 0, 24 bytes
+BIOS Information
+ Vendor: Dell Inc.
+ Version: A24
+ Release Date: 08/19/2010
+ Address: 0xF0000
+ Runtime Size: 64 kB
+ ROM Size: 1728 kB
+ Characteristics:
+ ISA is supported
+ PCI is supported
+ PC Card (PCMCIA) is supported
+ PNP is supported
+ BIOS is upgradeable
+ BIOS shadowing is allowed
+ Boot from CD is supported
+ Selectable boot is supported
+ 3.5"/720 kB floppy services are supported (int 13h)
+ Print screen service is supported (int 5h)
+ 8042 keyboard services are supported (int 9h)
+ Serial services are supported (int 14h)
+ Printer services are supported (int 17h)
+ CGA/mono video services are supported (int 10h)
+ ACPI is supported
+ USB legacy is supported
+ AGP is supported
+ Smart battery is supported
+ BIOS boot specification is supported
+ Function key-initiated network boot is supported
+ Targeted content distribution is supported
+ BIOS Revision: 2.4
+ Firmware Revision: 2.4
+
+Handle 0x0100, DMI type 1, 27 bytes
+System Information
+ Manufacturer: Dell Inc.
+ Product Name: Precision M4400
+ Version: Not Specified
+ Serial Number: HLG964J
+ UUID: 44454C4C-4C00-1047-8039-C8C04F36344A
+ Wake-up Type: Power Switch
+ SKU Number: Not Specified
+ Family:
+
+Handle 0x0200, DMI type 2, 9 bytes
+Base Board Information
+ Manufacturer: Dell Inc.
+ Product Name: 0P019G
+ Version:
+ Serial Number: .HLG964J.CN129618C52450.
+ Asset Tag:
+
+Handle 0x0300, DMI type 3, 13 bytes
+Chassis Information
+ Manufacturer: Dell Inc.
+ Type: Portable
+ Lock: Not Present
+ Version: Not Specified
+ Serial Number: HLG964J
+ Asset Tag: Not Specified
+ Boot-up State: Safe
+ Power Supply State: Safe
+ Thermal State: Safe
+ Security Status: None
+
+Handle 0x0400, DMI type 4, 40 bytes
+Processor Information
+ Socket Designation: Microprocessor
+ Type: Central Processor
+ Family: Core 2 Duo
+ Manufacturer: Intel
+ ID: 76 06 01 00 FF FB EB BF
+ Signature: Type 0, Family 6, Model 23, Stepping 6
+ Flags:
+ FPU (Floating-point unit on-chip)
+ VME (Virtual mode extension)
+ DE (Debugging extension)
+ PSE (Page size extension)
+ TSC (Time stamp counter)
+ MSR (Model specific registers)
+ PAE (Physical address extension)
+ MCE (Machine check exception)
+ CX8 (CMPXCHG8 instruction supported)
+ APIC (On-chip APIC hardware supported)
+ SEP (Fast system call)
+ MTRR (Memory type range registers)
+ PGE (Page global enable)
+ MCA (Machine check architecture)
+ CMOV (Conditional move instruction supported)
+ PAT (Page attribute table)
+ PSE-36 (36-bit page size extension)
+ CLFSH (CLFLUSH instruction supported)
+ DS (Debug store)
+ ACPI (ACPI supported)
+ MMX (MMX technology supported)
+ FXSR (FXSAVE and FXSTOR instructions supported)
+ SSE (Streaming SIMD extensions)
+ SSE2 (Streaming SIMD extensions 2)
+ SS (Self-snoop)
+ HTT (Multi-threading)
+ TM (Thermal monitor supported)
+ PBE (Pending break enabled)
+ Version: Not Specified
+ Voltage: 3.3 V
+ External Clock: 266 MHz
+ Max Speed: 2534 MHz
+ Current Speed: 2534 MHz
+ Status: Populated, Enabled
+ Upgrade: None
+ L1 Cache Handle: 0x0700
+ L2 Cache Handle: 0x0701
+ L3 Cache Handle: Not Provided
+ Serial Number: Not Specified
+ Asset Tag: Not Specified
+ Part Number: Not Specified
+ Core Count: 2
+ Core Enabled: 2
+ Thread Count: 2
+ Characteristics:
+ 64-bit capable
+
+Handle 0x0700, DMI type 7, 19 bytes
+Cache Information
+ Socket Designation: Not Specified
+ Configuration: Enabled, Not Socketed, Level 1
+ Operational Mode: Write Back
+ Location: Internal
+ Installed Size: 128 kB
+ Maximum Size: 128 kB
+ Supported SRAM Types:
+ Unknown
+ Installed SRAM Type: Unknown
+ Speed: Unknown
+ Error Correction Type: None
+ System Type: Data
+ Associativity: 4-way Set-associative
+
+Handle 0x0701, DMI type 7, 19 bytes
+Cache Information
+ Socket Designation: Not Specified
+ Configuration: Enabled, Not Socketed, Level 2
+ Operational Mode: Varies With Memory Address
+ Location: Internal
+ Installed Size: 6144 kB
+ Maximum Size: 6144 kB
+ Supported SRAM Types:
+ Pipeline Burst
+ Installed SRAM Type: Pipeline Burst
+ Speed: 15 ns
+ Error Correction Type: None
+ System Type: Unified
+ Associativity: Other
+
+Handle 0x0800, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: PARALLEL
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: DB-25 female
+ Port Type: Parallel Port PS/2
+
+Handle 0x0801, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: SERIAL1
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: DB-9 male
+ Port Type: Serial Port 16550A Compatible
+
+Handle 0x0804, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: USB
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: Access Bus (USB)
+ Port Type: USB
+
+Handle 0x0806, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: MONITOR
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: DB-15 female
+ Port Type: Video Port
+
+Handle 0x080B, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: FireWire
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: IEEE 1394
+ Port Type: Firewire (IEEE P1394)
+
+Handle 0x080C, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: Modem
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: RJ-11
+ Port Type: Modem Port
+
+Handle 0x080D, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: Ethernet
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: RJ-45
+ Port Type: Network Port
+
+Handle 0x0900, DMI type 9, 13 bytes
+System Slot Information
+ Designation: PCMCIA 0
+ Type: 32-bit PC Card (PCMCIA)
+ Current Usage: Available
+ Length: Other
+ ID: Adapter 0, Socket 0
+ Characteristics:
+ 5.0 V is provided
+ 3.3 V is provided
+ PC Card-16 is supported
+ Cardbus is supported
+ Zoom Video is supported
+ Modem ring resume is supported
+
+Handle 0x0A00, DMI type 10, 6 bytes
+On Board Device Information
+ Type: Video
+ Status: Enabled
+ Description: NVIDIA Quadro FX 1700M
+
+Handle 0x0A01, DMI type 10, 6 bytes
+On Board Device Information
+ Type: Sound
+ Status: Enabled
+ Description: IDT 92HD71
+
+Handle 0x0B00, DMI type 11, 5 bytes
+OEM Strings
+ String 1: Dell System
+ String 2: 5[0003]
+ String 3: 13[PP04X]
+
+Handle 0x0D00, DMI type 13, 22 bytes
+BIOS Language Information
+ Language Description Format: Long
+ Installable Languages: 1
+ en|US|iso8859-1
+ Currently Installed Language: en|US|iso8859-1
+
+Handle 0x1000, DMI type 16, 15 bytes
+Physical Memory Array
+ Location: System Board Or Motherboard
+ Use: System Memory
+ Error Correction Type: None
+ Maximum Capacity: 8 GB
+ Error Information Handle: Not Provided
+ Number Of Devices: 2
+
+Handle 0x1100, DMI type 17, 27 bytes
+Memory Device
+ Array Handle: 0x1000
+ Error Information Handle: Not Provided
+ Total Width: 64 bits
+ Data Width: 64 bits
+ Size: 2048 MB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM_A
+ Bank Locator: Not Specified
+ Type: DDR2
+ Type Detail: Synchronous
+ Speed: 800 MHz
+ Manufacturer: 7F7FFE0000000000
+ Serial Number: 14FA6621
+ Asset Tag: 200840
+ Part Number: EBE21UE8ACUA-8G-E
+
+Handle 0x1101, DMI type 17, 27 bytes
+Memory Device
+ Array Handle: 0x1000
+ Error Information Handle: Not Provided
+ Total Width: 64 bits
+ Data Width: 64 bits
+ Size: 2048 MB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM_B
+ Bank Locator: Not Specified
+ Type: DDR2
+ Type Detail: Synchronous
+ Speed: 800 MHz
+ Manufacturer: 7F7FFE0000000000
+ Serial Number: AEF96621
+ Asset Tag: 200840
+ Part Number: EBE21UE8ACUA-8G-E
+
+Handle 0x1301, DMI type 19, 15 bytes
+Memory Array Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x000FFFFFFFF
+ Range Size: 4 GB
+ Physical Array Handle: 0x1000
+ Partition Width: 1
+
+Handle 0x1401, DMI type 20, 19 bytes
+Memory Device Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x000FFFFFFFF
+ Range Size: 4 GB
+ Physical Device Handle: 0x1100
+ Memory Array Mapped Address Handle: 0x1301
+ Partition Row Position: 1
+ Interleave Position: 1
+ Interleaved Data Depth: 8
+
+Handle 0x1411, DMI type 126, 19 bytes
+Inactive
+
+Handle 0x1402, DMI type 20, 19 bytes
+Memory Device Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x000FFFFFFFF
+ Range Size: 4 GB
+ Physical Device Handle: 0x1101
+ Memory Array Mapped Address Handle: 0x1301
+ Partition Row Position: 1
+ Interleave Position: 2
+ Interleaved Data Depth: 8
+
+Handle 0x1412, DMI type 126, 19 bytes
+Inactive
+
+Handle 0x1500, DMI type 21, 7 bytes
+Built-in Pointing Device
+ Type: Touch Pad
+ Interface: Bus Mouse
+ Buttons: 2
+
+Handle 0x1600, DMI type 22, 26 bytes
+Portable Battery
+ Location: Sys. Battery Bay
+ Manufacturer: SMP
+ Name: DELL HJ59008
+ Design Capacity: 84000 mWh
+ Design Voltage: 11100 mV
+ SBDS Version: 1.0
+ Maximum Error: 3%
+ SBDS Serial Number: 02C7
+ SBDS Manufacture Date: 2010-08-31
+ SBDS Chemistry: LION
+ OEM-specific Information: 0x00000001
+
+Handle 0x1601, DMI type 126, 26 bytes
+Inactive
+
+Handle 0x1B00, DMI type 27, 12 bytes
+Cooling Device
+ Type: Fan
+ Status: OK
+ OEM-specific Information: 0x0000DD00
+
+Handle 0x1C00, DMI type 28, 20 bytes
+Temperature Probe
+ Description: CPU Internal Temperature
+ Location: Processor
+ Status: OK
+ Maximum Value: 127.0 deg C
+ Minimum Value: 0.0 deg C
+ Resolution: 1.000 deg C
+ Tolerance: 0.5 deg C
+ Accuracy: Unknown
+ OEM-specific Information: 0x0000DC00
+
+Handle 0x2000, DMI type 32, 11 bytes
+System Boot Information
+ Status: No errors detected
+
+Handle 0xB000, DMI type 176, 5 bytes
+OEM-specific Type
+ Header and Data:
+ B0 05 00 B0 3A
+
+Handle 0xB100, DMI type 177, 12 bytes
+OEM-specific Type
+ Header and Data:
+ B1 0C 00 B1 82 00 00 00 00 00 00 00
+
+Handle 0xB200, DMI type 178, 96 bytes
+OEM-specific Type
+ Header and Data:
+ B2 60 00 B2 07 01 0C 00 08 01 0A 00 09 01 0B 00
+ 0A 01 12 00 3B 00 20 00 3C 00 1F 00 3D 00 0E 00
+ 41 00 12 00 42 00 18 00 00 02 FF FF 4B 00 15 00
+ 48 00 14 00 50 00 13 00 10 00 FF 00 11 00 FF 00
+ 12 00 FF 00 13 00 FF 00 14 00 FF 00 1E 00 FF 00
+ 1F 00 FF 00 20 00 FF 00 21 00 FF 00 22 00 FF 00
+
+Handle 0xD000, DMI type 208, 10 bytes
+OEM-specific Type
+ Header and Data:
+ D0 0A 00 D0 01 04 FE 00 50 02
+
+Handle 0xD100, DMI type 209, 12 bytes
+OEM-specific Type
+ Header and Data:
+ D1 0C 00 D1 00 00 00 03 04 07 80 05
+
+Handle 0xD200, DMI type 210, 12 bytes
+OEM-specific Type
+ Header and Data:
+ D2 0C 00 D2 00 00 06 03 06 80 04 05
+
+Handle 0xD800, DMI type 216, 9 bytes
+OEM-specific Type
+ Header and Data:
+ D8 09 00 D8 01 03 01 F0 03
+ Strings:
+ NVidia Corp.
+
+ 62.94.8F.00.04
+
+
+Handle 0xD900, DMI type 217, 8 bytes
+OEM-specific Type
+ Header and Data:
+ D9 08 00 D9 01 02 01 03
+ Strings:
+ US-101
+ Proprietary
+
+Handle 0xDB00, DMI type 219, 9 bytes
+OEM-specific Type
+ Header and Data:
+ DB 09 00 DB 03 01 02 03 FF
+ Strings:
+ System Device Bay
+ Battery, CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
+ DVD+/-RW
+
+Handle 0xDB01, DMI type 219, 9 bytes
+OEM-specific Type
+ Header and Data:
+ DB 09 01 DB 03 01 02 03 FF
+ Strings:
+ System eSATA Bay
+ CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
+ EMPTY
+
+Handle 0xDB02, DMI type 219, 9 bytes
+OEM-specific Type
+ Header and Data:
+ DB 09 02 DB 03 01 02 03 FF
+ Strings:
+ System eSATA Dock Bay
+ CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
+ EMPTY
+
+Handle 0x8100, DMI type 129, 8 bytes
+OEM-specific Type
+ Header and Data:
+ 81 08 00 81 01 01 02 01
+ Strings:
+ Intel_ASF
+ Intel_ASF_001
+
+Handle 0x8200, DMI type 130, 20 bytes
+OEM-specific Type
+ Header and Data:
+ 82 14 00 82 24 41 4D 54 01 00 00 00 01 A5 0B 02
+ 00 00 00 00
+
+Handle 0x8300, DMI type 131, 64 bytes
+OEM-specific Type
+ Header and Data:
+ 83 40 00 83 35 00 00 00 00 00 40 2A 0F 00 00 00
+ F8 00 17 29 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 03 00 01 02 C8 00 F5 10 00 00 00 0C
+ 00 00 00 00 28 00 00 00 76 50 72 6F 00 00 00 00
+
+Handle 0xDC00, DMI type 220, 22 bytes
+OEM-specific Type
+ Header and Data:
+ DC 16 00 DC 01 F0 00 00 02 F0 00 00 00 00 03 F0
+ 04 F0 00 00 00 00
+
+Handle 0xDD00, DMI type 221, 19 bytes
+OEM-specific Type
+ Header and Data:
+ DD 13 00 DD 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00
+
+Handle 0xD400, DMI type 212, 47 bytes
+OEM-specific Type
+ Header and Data:
+ D4 2F 00 D4 74 00 75 00 00 10 2D 2E 5C 00 78 BF
+ 40 5D 00 78 BF 00 2D 01 1D EF 10 2E 01 1D EF 00
+ 08 00 1D DF 00 03 00 1D DF 00 FF FF 00 00 00
+
+Handle 0xD401, DMI type 212, 17 bytes
+OEM-specific Type
+ Header and Data:
+ D4 11 01 D4 74 00 75 00 03 40 49 4A FF FF 00 00
+ 00
+
+Handle 0xDE00, DMI type 222, 16 bytes
+OEM-specific Type
+ Header and Data:
+ DE 10 00 DE 01 02 FF FF 00 00 00 00 00 00 00 01
+
+Handle 0x7F00, DMI type 127, 4 bytes
+End Of Table
+
diff --git a/t/tools/generic.t b/t/tools/generic.t
index 55ac597..6961deb 100755
--- a/t/tools/generic.t
+++ b/t/tools/generic.t
@@ -4513,6 +4513,298 @@ my %dmidecode_tests = (
'Ending Address' => '0x000400003FF'
}
]
+ },
+ 'windows-xppro' => {
+ '32' => [
+ {
+ 'Status' => 'No errors detected'
+ }
+ ],
+ '11' => [
+ {
+ 'String 1' => 'Dell System',
+ 'String 3' => '13[PP04X]',
+ 'String 2' => '5[0003]'
+ }
+ ],
+ '21' => [
+ {
+ 'Type' => 'Touch Pad',
+ 'Buttons' => '2',
+ 'Interface' => 'Bus Mouse'
+ }
+ ],
+ '7' => [
+ {
+ 'Error Correction Type' => 'None',
+ 'Installed Size' => '128 kB',
+ 'Operational Mode' => 'Write Back',
+ 'Configuration' => 'Enabled, Not Socketed, Level 1',
+ 'Installed SRAM Type' => 'Unknown',
+ 'System Type' => 'Data',
+ 'Speed' => 'Unknown',
+ 'Associativity' => '4-way Set-associative',
+ 'Location' => 'Internal',
+ 'Maximum Size' => '128 kB'
+ },
+ {
+ 'Error Correction Type' => 'None',
+ 'Installed Size' => '6144 kB',
+ 'Operational Mode' => 'Varies With Memory Address',
+ 'Configuration' => 'Enabled, Not Socketed, Level 2',
+ 'Installed SRAM Type' => 'Pipeline Burst',
+ 'System Type' => 'Unified',
+ 'Speed' => '15 ns',
+ 'Associativity' => 'Other',
+ 'Location' => 'Internal',
+ 'Maximum Size' => '6144 kB'
+ }
+ ],
+ '17' => [
+ {
+ 'Part Number' => 'EBE21UE8ACUA-8G-E',
+ 'Serial Number' => '14FA6621',
+ 'Data Width' => '64 bits',
+ 'Array Handle' => '0x1000',
+ 'Type Detail' => 'Synchronous',
+ 'Set' => 'None',
+ 'Asset Tag' => '200840',
+ 'Total Width' => '64 bits',
+ 'Type' => 'DDR2',
+ 'Speed' => '800 MHz',
+ 'Size' => '2048 MB',
+ 'Error Information Handle' => 'Not Provided',
+ 'Locator' => 'DIMM_A',
+ 'Manufacturer' => '7F7FFE0000000000',
+ 'Form Factor' => 'DIMM'
+ },
+ {
+ 'Part Number' => 'EBE21UE8ACUA-8G-E',
+ 'Serial Number' => 'AEF96621',
+ 'Data Width' => '64 bits',
+ 'Array Handle' => '0x1000',
+ 'Type Detail' => 'Synchronous',
+ 'Set' => 'None',
+ 'Asset Tag' => '200840',
+ 'Total Width' => '64 bits',
+ 'Type' => 'DDR2',
+ 'Speed' => '800 MHz',
+ 'Size' => '2048 MB',
+ 'Error Information Handle' => 'Not Provided',
+ 'Locator' => 'DIMM_B',
+ 'Manufacturer' => '7F7FFE0000000000',
+ 'Form Factor' => 'DIMM'
+ }
+ ],
+ '2' => [
+ {
+ 'Product Name' => '0P019G',
+ 'Serial Number' => '.HLG964J.CN129618C52450.',
+ 'Manufacturer' => 'Dell Inc.'
+ }
+ ],
+ '22' => [
+ {
+ 'Design Capacity' => '84000 mWh',
+ 'Maximum Error' => '3%',
+ 'OEM-specific Information' => '0x00000001',
+ 'Design Voltage' => '11100 mV',
+ 'SBDS Manufacture Date' => '2010-08-31',
+ 'SBDS Chemistry' => 'LION',
+ 'Location' => 'Sys. Battery Bay',
+ 'Manufacturer' => 'SMP',
+ 'Name' => 'DELL HJ59008',
+ 'SBDS Version' => '1.0',
+ 'SBDS Serial Number' => '02C7'
+ }
+ ],
+ '1' => [
+ {
+ 'Wake-up Type' => 'Power Switch',
+ 'Product Name' => 'Precision M4400',
+ 'Serial Number' => 'HLG964J',
+ 'Manufacturer' => 'Dell Inc.',
+ 'UUID' => '44454C4C-4C00-1047-8039-C8C04F36344A'
+ }
+ ],
+ '0' => [
+ {
+ 'BIOS Revision' => '2.4',
+ 'Address' => '0xF0000',
+ 'Vendor' => 'Dell Inc.',
+ 'Version' => 'A24',
+ 'Runtime Size' => '64 kB',
+ 'Firmware Revision' => '2.4',
+ 'Release Date' => '08/19/2010',
+ 'ROM Size' => '1728 kB'
+ }
+ ],
+ '16' => [
+ {
+ 'Number Of Devices' => '2',
+ 'Error Correction Type' => 'None',
+ 'Error Information Handle' => 'Not Provided',
+ 'Location' => 'System Board Or Motherboard',
+ 'Maximum Capacity' => '8 GB',
+ 'Use' => 'System Memory'
+ }
+ ],
+ '13' => [
+ {
+ 'Language Description Format' => 'Long',
+ 'Installable Languages' => '1',
+ 'Currently Installed Language' => 'en|US|iso8859-1'
+ }
+ ],
+ '27' => [
+ {
+ 'Type' => 'Fan',
+ 'Status' => 'OK',
+ 'OEM-specific Information' => '0x0000DD00'
+ }
+ ],
+ '28' => [
+ {
+ 'Status' => 'OK',
+ 'Minimum Value' => '0.0 deg C',
+ 'OEM-specific Information' => '0x0000DC00',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => '127.0 deg C',
+ 'Resolution' => '1.000 deg C',
+ 'Location' => 'Processor',
+ 'Tolerance' => '0.5 deg C',
+ 'Description' => 'CPU Internal Temperature'
+ }
+ ],
+ '3' => [
+ {
+ 'Type' => 'Portable',
+ 'Power Supply State' => 'Safe',
+ 'Security Status' => 'None',
+ 'Serial Number' => 'HLG964J',
+ 'Thermal State' => 'Safe',
+ 'Boot-up State' => 'Safe',
+ 'Manufacturer' => 'Dell Inc.'
+ }
+ ],
+ '9' => [
+ {
+ 'ID' => 'Adapter 0, Socket 0',
+ 'Length' => 'Other',
+ 'Designation' => 'PCMCIA 0',
+ 'Type' => '32-bit PC Card (PCMCIA)',
+ 'Current Usage' => 'Available'
+ }
+ ],
+ '20' => [
+ {
+ 'Range Size' => '4 GB',
+ 'Partition Row Position' => '1',
+ 'Starting Address' => '0x00000000000',
+ 'Memory Array Mapped Address Handle' => '0x1301',
+ 'Physical Device Handle' => '0x1100',
+ 'Interleaved Data Depth' => '8',
+ 'Interleave Position' => '1',
+ 'Ending Address' => '0x000FFFFFFFF'
+ },
+ {
+ 'Range Size' => '4 GB',
+ 'Partition Row Position' => '1',
+ 'Starting Address' => '0x00000000000',
+ 'Memory Array Mapped Address Handle' => '0x1301',
+ 'Physical Device Handle' => '0x1101',
+ 'Interleaved Data Depth' => '8',
+ 'Interleave Position' => '2',
+ 'Ending Address' => '0x000FFFFFFFF'
+ }
+ ],
+ '8' => [
+ {
+ 'Port Type' => 'Parallel Port PS/2',
+ 'External Connector Type' => 'DB-25 female',
+ 'Internal Reference Designator' => 'PARALLEL',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'Port Type' => 'Serial Port 16550A Compatible',
+ 'External Connector Type' => 'DB-9 male',
+ 'Internal Reference Designator' => 'SERIAL1',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'Port Type' => 'USB',
+ 'External Connector Type' => 'Access Bus (USB)',
+ 'Internal Reference Designator' => 'USB',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'Port Type' => 'Video Port',
+ 'External Connector Type' => 'DB-15 female',
+ 'Internal Reference Designator' => 'MONITOR',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'Port Type' => 'Firewire (IEEE P1394)',
+ 'External Connector Type' => 'IEEE 1394',
+ 'Internal Reference Designator' => 'FireWire',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'Port Type' => 'Modem Port',
+ 'External Connector Type' => 'RJ-11',
+ 'Internal Reference Designator' => 'Modem',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'Port Type' => 'Network Port',
+ 'External Connector Type' => 'RJ-45',
+ 'Internal Reference Designator' => 'Ethernet',
+ 'Internal Connector Type' => 'None'
+ }
+ ],
+ '4' => [
+ {
+ 'ID' => '76 06 01 00 FF FB EB BF',
+ 'Socket Designation' => 'Microprocessor',
+ 'Status' => 'Populated, Enabled',
+ 'Max Speed' => '2534 MHz',
+ 'Family' => 'Core 2 Duo',
+ 'Thread Count' => '2',
+ 'Current Speed' => '2534 MHz',
+ 'L2 Cache Handle' => '0x0701',
+ 'Type' => 'Central Processor',
+ 'Signature' => 'Type 0, Family 6, Model 23, Stepping 6',
+ 'L1 Cache Handle' => '0x0700',
+ 'Manufacturer' => 'Intel',
+ 'Core Enabled' => '2',
+ 'External Clock' => '266 MHz',
+ 'Upgrade' => 'None',
+ 'Core Count' => '2',
+ 'Voltage' => '3.3 V',
+ 'L3 Cache Handle' => 'Not Provided'
+ }
+ ],
+ '10' => [
+ {
+ 'Type' => 'Video',
+ 'Status' => 'Enabled',
+ 'Description' => 'NVIDIA Quadro FX 1700M'
+ },
+ {
+ 'Type' => 'Sound',
+ 'Status' => 'Enabled',
+ 'Description' => 'IDT 92HD71'
+ }
+ ],
+ '19' => [
+ {
+ 'Range Size' => '4 GB',
+ 'Partition Width' => '1',
+ 'Starting Address' => '0x00000000000',
+ 'Physical Array Handle' => '0x1000',
+ 'Ending Address' => '0x000FFFFFFFF'
+ }
+ ]
}
);
================================================================
Commit: dbbda17c554648c3079702dda169471cfeda0984
https://github.com/fusinv/fusioninventory-agent/commit/dbbda17c554648c3079702dda169471cfeda0984
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-02 (Fri, 02 Mar 2012)
Changed paths:
R resources/solaris/psrinfo/sample-1
M t/inventory/solaris/cpu.t
Log Message:
-----------
test psrinfo parsing
diff --git a/resources/solaris/psrinfo/sample-1 b/resources/solaris/psrinfo/sample-1
deleted file mode 100644
index a3394c3..0000000
--- a/resources/solaris/psrinfo/sample-1
+++ /dev/null
@@ -1,32 +0,0 @@
-Status of virtual processor 0 as of: 08/10/2011 11:48:03
- on-line since 08/02/2011 11:06:56.
- The i386 processor operates at 2133 MHz,
- and has an i387 compatible floating point processor.
-Status of virtual processor 1 as of: 08/10/2011 11:48:03
- on-line since 08/02/2011 11:07:02.
- The i386 processor operates at 2133 MHz,
- and has an i387 compatible floating point processor.
-Status of virtual processor 2 as of: 08/10/2011 11:48:03
- on-line since 08/02/2011 11:07:02.
- The i386 processor operates at 2133 MHz,
- and has an i387 compatible floating point processor.
-Status of virtual processor 3 as of: 08/10/2011 11:48:03
- on-line since 08/02/2011 11:07:02.
- The i386 processor operates at 2133 MHz,
- and has an i387 compatible floating point processor.
-Status of virtual processor 4 as of: 08/10/2011 11:48:03
- on-line since 08/02/2011 11:07:02.
- The i386 processor operates at 2133 MHz,
- and has an i387 compatible floating point processor.
-Status of virtual processor 5 as of: 08/10/2011 11:48:03
- on-line since 08/02/2011 11:07:02.
- The i386 processor operates at 2133 MHz,
- and has an i387 compatible floating point processor.
-Status of virtual processor 6 as of: 08/10/2011 11:48:03
- on-line since 08/02/2011 11:07:03.
- The i386 processor operates at 2133 MHz,
- and has an i387 compatible floating point processor.
-Status of virtual processor 7 as of: 08/10/2011 11:48:03
- on-line since 08/02/2011 11:07:03.
- The i386 processor operates at 2133 MHz,
- and has an i387 compatible floating point processor.
diff --git a/t/inventory/solaris/cpu.t b/t/inventory/solaris/cpu.t
index 44f3e3c..2dab52a 100755
--- a/t/inventory/solaris/cpu.t
+++ b/t/inventory/solaris/cpu.t
@@ -37,6 +37,10 @@ my %memconf_tests = (
]
);
+my %psrinfo_tests = (
+ sample1 => [ 8, 'i386', 2133 ]
+);
+
my %spec_tests = (
'Sun Microsystems, Inc. Sun-Fire-T200 (Sun Fire T2000) (8-core quad-thread UltraSPARC-T1 1000MHz)' => [
1,
@@ -140,6 +144,7 @@ my %spec_tests = (
plan tests =>
(scalar keys %memconf_tests) +
+ (scalar keys %psrinfo_tests) +
(scalar keys %spec_tests) ;
foreach my $test (keys %memconf_tests) {
@@ -148,6 +153,12 @@ foreach my $test (keys %memconf_tests) {
is_deeply(\@results, $memconf_tests{$test}, "memconf parsing: $test" );
}
+foreach my $test (keys %psrinfo_tests) {
+ my $file = "resources/solaris/psrinfo/$test";
+ my @results = FusionInventory::Agent::Task::Inventory::Input::Solaris::CPU::_parsePsrinfo(file => $file);
+ is_deeply(\@results, $psrinfo_tests{$test}, "psrinfo parsing: $test" );
+}
+
foreach my $test (keys %spec_tests) {
my @results = FusionInventory::Agent::Task::Inventory::Input::Solaris::CPU::_parseSpec($test);
is_deeply(\@results, $spec_tests{$test}, "spec parsing: $test" );
================================================================
Commit: 6ad78f6f27154f5bceb9ffcc5ca61c52fab4f59c
https://github.com/fusinv/fusioninventory-agent/commit/6ad78f6f27154f5bceb9ffcc5ca61c52fab4f59c
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-02 (Fri, 02 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
Log Message:
-----------
more compact version
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
index aaa93a4..e32d6be 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
@@ -62,22 +62,13 @@ sub _getCPUFromMemconf {
sub _parseCoreString {
my ($v) = @_;
- if ($v =~ /Dual/i) {
- return 2;
- } elsif ($v =~ /Quad/i) {
- return 4;
- } elsif ($v =~ /(\d+)-(core|thread)/) {
- return $1;
- }elsif ($v =~ /^dual/) {
- return 2;
- } elsif ($v =~ /^quad/) {
- return 4;
- }
-
- return $v;
+ return
+ $v =~ /dual/i ? 2 :
+ $v =~ /quad/i ? 4 :
+ $v =~ /(\d+)-(core|thread)/ ? $1 :
+ $v;
}
-
sub _parseSpec {
my ($spec) = @_;
================================================================
Commit: 3652d8658479d2ea8102737a776eb43c88c5e7e0
https://github.com/fusinv/fusioninventory-agent/commit/3652d8658479d2ea8102737a776eb43c88c5e7e0
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-02 (Fri, 02 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
Log Message:
-----------
fix prototype and use getFileHandle
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
index e32d6be..8847a47 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
@@ -182,11 +182,18 @@ sub _parsePsrinfo {
}
sub _getCPUFromPrtcl {
- my ($count, $cpu);
+ my (%params) = (
+ command => "prctl -n zone.cpu-shares $$",
+ @_
+ );
+
+ my $handle = getFileHandle(%params);
+ return unless $handle;
- foreach (`prctl -n zone.cpu-shares $$`) {
- $cpu->{NAME} = $1 if /^zone.(\S+)$/;
- $cpu->{NAME} .= " " . $1 if /^\s*privileged+\s*(\d+)/;
+ my ($count, $cpu);
+ while (my $line = <$handle>) {
+ $cpu->{NAME} = $1 if $line =~ /^zone.(\S+)$/;
+ $cpu->{NAME} .= " " . $1 if $line =~ /^\s*privileged+\s*(\d+)/;
#$count = 1 if /^\s*privileged+\s*(\d+)/;
foreach (`memconf 2>&1`) {
if(/\s+\((\d+).*\s+(\d+)MHz/) {
@@ -195,6 +202,7 @@ sub _getCPUFromPrtcl {
}
}
}
+ close $handle;
return ($count, $cpu);
}
================================================================
Commit: 4d23261b484cb392b01ba1d65524124e75010bec
https://github.com/fusinv/fusioninventory-agent/commit/4d23261b484cb392b01ba1d65524124e75010bec
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-02 (Fri, 02 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
M t/inventory/solaris/cpu.t
Log Message:
-----------
use consistent interface and function name
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
index 8847a47..10bff38 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
@@ -24,9 +24,7 @@ sub doInventory {
_getCPUFromMemconf(logger => $logger);
# fallback on generic method
- if (!$count) {
- ($count, $cpu->{NAME}, $cpu->{SPEED}) = _parsePsrinfo();
- }
+ ($count, $cpu) = _getCPUFromPrsinfo(logger => $logger) if !$count;
$cpu->{MANUFACTURER} = "SPARC";
@@ -157,7 +155,7 @@ sub _parseSpec {
}
-sub _parsePsrinfo {
+sub _getCPUFromPsrinfo {
my (%params) = (
command => 'psrinfo -v',
@_
@@ -167,18 +165,18 @@ sub _parsePsrinfo {
return unless $handle;
my $count = 0;
- my ($name, $speed);
+ my $cpu;
while (my $line = <$handle>) {
next unless $line =~
/^\s+The\s(\w+)\sprocessor\soperates\sat\s(\d+)\sMHz,/;
- $name = $1;
- $speed = $2;
+ $cpu->{NAME} = $1;
+ $cpu->{SPEED} = $2;
$count++;
}
close $handle;
- return ($count, $name, $speed);
+ return ($count, $cpu);
}
sub _getCPUFromPrtcl {
diff --git a/t/inventory/solaris/cpu.t b/t/inventory/solaris/cpu.t
index 2dab52a..c71b4ea 100755
--- a/t/inventory/solaris/cpu.t
+++ b/t/inventory/solaris/cpu.t
@@ -38,7 +38,13 @@ my %memconf_tests = (
);
my %psrinfo_tests = (
- sample1 => [ 8, 'i386', 2133 ]
+ sample1 => [
+ 8,
+ {
+ NAME => 'i386',
+ SPEED => 2133
+ }
+ ]
);
my %spec_tests = (
@@ -155,7 +161,7 @@ foreach my $test (keys %memconf_tests) {
foreach my $test (keys %psrinfo_tests) {
my $file = "resources/solaris/psrinfo/$test";
- my @results = FusionInventory::Agent::Task::Inventory::Input::Solaris::CPU::_parsePsrinfo(file => $file);
+ my @results = FusionInventory::Agent::Task::Inventory::Input::Solaris::CPU::_getCPUFromPsrinfo(file => $file);
is_deeply(\@results, $psrinfo_tests{$test}, "psrinfo parsing: $test" );
}
================================================================
Commit: a1872280832b20cff6ecc502dd8365af706c06d3
https://github.com/fusinv/fusioninventory-agent/commit/a1872280832b20cff6ecc502dd8365af706c06d3
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-02 (Fri, 02 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
Log Message:
-----------
use explicit name for magic variables
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
index 10bff38..6fc0d9f 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
@@ -3,6 +3,8 @@ package FusionInventory::Agent::Task::Inventory::Input::Solaris::CPU;
use strict;
use warnings;
+use English qw(-no_match_vars);
+
use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Solaris;
@@ -181,7 +183,7 @@ sub _getCPUFromPsrinfo {
sub _getCPUFromPrtcl {
my (%params) = (
- command => "prctl -n zone.cpu-shares $$",
+ command => "prctl -n zone.cpu-shares $PID",
@_
);
================================================================
Commit: 7a77d621bbdc533c6f2c86eb12cae7abb1aac188
https://github.com/fusinv/fusioninventory-agent/commit/7a77d621bbdc533c6f2c86eb12cae7abb1aac188
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-02 (Fri, 02 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
Log Message:
-----------
fix compilation
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index e65d362..d845e9d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -27,6 +27,7 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
+ my $logger = $params{logger};
if (is64bit()) {
================================================================
Commit: 3a2bc1e884bd7e8212650c36fd5ed781231a040d
https://github.com/fusinv/fusioninventory-agent/commit/3a2bc1e884bd7e8212650c36fd5ed781231a040d
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-02 (Fri, 02 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/i386.pm
Log Message:
-----------
use less intermediate variables
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
index f83dc0b..f89f671 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
@@ -25,7 +25,7 @@ sub doInventory {
# example on *BSD: AlphaStation 255 4/232
$bios->{SMODEL} = getFirstLine(command => 'sysctl -n hw.model');
- my $processorn = getFirstLine(command => 'sysctl -n hw.ncpu');
+ my $count = getFirstLine(command => 'sysctl -n hw.ncpu');
# dmesg infos
@@ -39,21 +39,18 @@ sub doInventory {
# AlphaStation 255 4/232, 232MHz
# CPU: EV45 (21064A) major=6 minor=2
- my ($processort, $processors);
+ my $cpu;
foreach my $line (getAllLines(command => 'dmesg')) {
- if ($line =~ /$bios->{SMODEL},\s*(\S+)\s*MHz/) { $processors = $1; }
- if ($line =~ /^cpu[^:]*:\s*(.*)$/i) { $processort = $1; }
+ if ($line =~ /$bios->{SMODEL},\s*(\S+)\s*MHz/) { $cpu->{SPEED} = $1; }
+ if ($line =~ /^cpu[^:]*:\s*(.*)$/i) { $cpu->{NAME} = $1; }
}
$inventory->setBios($bios);
- for my $i (1 .. $processorn) {
+ while ($count--) {
$inventory->addEntry(
section => 'CPUS',
- entry => {
- NAME => $processort,
- SPEED => $processors,
- }
+ entry => $cpu
);
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
index 4109b5e..00a7464 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
@@ -26,7 +26,7 @@ sub doInventory {
# example on OpenBSD: SGI-O2 (IP32)
$bios->{SMODEL} = getFirstLine(command => 'sysctl -n hw.model');
- my $processorn = getFirstLine(command => 'sysctl -n hw.ncpu');
+ my $count = getFirstLine(command => 'sysctl -n hw.ncpu');
# dmesg infos
@@ -45,22 +45,19 @@ sub doInventory {
# cpu0 at mainbus0: MIPS R5000 CPU rev 2.1 180 MHz with R5000 based FPC rev 1.0
# cpu0: cache L1-I 32KB D 32KB 2 way, L2 512KB direct
- my ($processort, $processors);
+ my $cpu;
foreach my $line (getAllLines(command => 'dmesg')) {
if ($line =~ /$bios->{SMODEL}\s*\[\S*\s*(\S*)\]/) { $bios->{SSN} = $1; }
- if ($line =~ /cpu0 at mainbus0:\s*(.*)$/) { $processort = $1; }
- if ($line =~ /CPU\s*.*\D(\d+)\s*MHz/) { $processors = $1; }
+ if ($line =~ /cpu0 at mainbus0:\s*(.*)$/) { $cpu->{NAME} = $1; }
+ if ($line =~ /CPU\s*.*\D(\d+)\s*MHz/) { $cpu->{SPEED} = $1; }
}
$inventory->setBios($bios);
- for my $i (1 .. $processorn) {
+ while ($count--) {
$inventory->addEntry(
section => 'CPUS',
- entry => {
- NAME => $processort,
- SPEED => $processors,
- }
+ entry => $cpu
);
}
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
index 7fbdf3b..e467769 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
@@ -32,7 +32,7 @@ sub doInventory {
$bios->{SSN} = dec2hex($bios->{SSN});
$bios->{SSN} =~ s/^0x//;
- my $processorn = getFirstLine(command => 'sysctl -n hw.ncpu');
+ my $count = getFirstLine(command => 'sysctl -n hw.ncpu');
# dmesg infos
@@ -54,10 +54,10 @@ sub doInventory {
# FreeBSD:
# cpu0: Sun Microsystems UltraSparc-I Processor (167.00 MHz CPU)
- my $processort;
+ my $cpu;
foreach my $line (getAllLines(command => 'dmesg')) {
if ($line=~ /^mainbus0 \(root\):\s*(.*)$/) { $bios->{SMODEL} = $1; }
- if ($line =~ /^cpu[^:]*:\s*(.*)$/i) { $processort = $1; }
+ if ($line =~ /^cpu[^:]*:\s*(.*)$/i) { $cpu->{NAME} = $1; }
}
$bios->{SMODEL} =~ s/SUNW,//;
@@ -65,25 +65,21 @@ sub doInventory {
$bios->{SMODEL} =~ s/^\s*//;
$bios->{SMODEL} =~ s/\s*$//;
- $processort =~ s/SUNW,//;
- $processort =~ s/^\s*//;
- $processort =~ s/\s*$//;
+ $cpu->{NAME} =~ s/SUNW,//;
+ $cpu->{NAME} =~ s/^\s*//;
+ $cpu->{NAME} =~ s/\s*$//;
- my $processors;
# XXX quick and dirty _attempt_ to get proc speed
- if ( $processort =~ /(\d+)(\.\d+|)\s*mhz/i ) { # possible decimal point
- $processors = sprintf("%.0f", "$1$2"); # round number
+ if ($cpu->{NAME} =~ /(\d+)(\.\d+|)\s*mhz/i ) { # possible decimal point
+ $cpu->{SPEED} = sprintf("%.0f", "$1$2"); # round number
}
$inventory->setBios($bios);
- for my $i (1 .. $processorn) {
+ while ($count--) {
$inventory->addEntry(
section => 'CPUS',
- entry => {
- NAME => $processort,
- SPEED => $processors,
- }
+ entry => $cpu
);
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/i386.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/i386.pm
index 3cfefbf..bfa8b96 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/i386.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/i386.pm
@@ -24,29 +24,25 @@ sub doInventory {
my $logger = $params{logger};
# sysctl infos
+ my $bios = {
+ SMODEL => getFirstLine(command => 'sysctl -n hw.model')
+ };
+ my $cpu = {
+ NAME => getFirstLine(command => 'sysctl -n hw.machine'),
+ SPEED => (getCanonicalSpeed(split(/\s+/, $bios->{SMODEL})))[-1]
+ };
+ my $count = getFirstLine(command => 'sysctl -n hw.ncpu');
- my $SystemModel = getFirstLine(command => 'sysctl -n hw.model');
- my $processorn = getFirstLine(command => 'sysctl -n hw.ncpu');
- my $processort = getFirstLine(command => 'sysctl -n hw.machine');
- my $processors = getCanonicalSpeed(
- (split(/\s+/, $SystemModel))[-1]
- );
-
- $inventory->setBios({
- SMODEL => $SystemModel,
- });
+ $inventory->setBios($bios);
# don't deal with CPUs if information can be computed from dmidecode
my $infos = getInfosFromDmidecode(logger => $logger);
return if $infos->{4};
- for my $i (1 .. $processorn) {
+ while ($count--) {
$inventory->addEntry(
section => 'CPUS',
- entry => {
- NAME => $processort,
- SPEED => $processors,
- }
+ entry => $cpu
);
}
================================================================
Commit: cbe4585b928fe8ac9ed985c7c40940d2e3b440ee
https://github.com/fusinv/fusioninventory-agent/commit/cbe4585b928fe8ac9ed985c7c40940d2e3b440ee
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-02 (Fri, 02 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
Log Message:
-----------
Merge remote-tracking branch 'forge/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
index 8f1d49c..57d4e95 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
@@ -15,9 +15,6 @@ use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Win32;
use FusionInventory::Agent::Tools::Generic;
-our $runMeIfTheseChecksFailed =
- ["FusionInventory::Agent::Task::Inventory::Input::Generic::Dmidecode"];
-
sub isEnabled {
return 1;
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index d845e9d..5b182ee 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -27,7 +27,7 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
- my $logger = $params{logger};
+ my $logger = $params{logger};
if (is64bit()) {
@@ -44,10 +44,9 @@ sub doInventory {
foreach my $software (_getSoftwares(
softwares => $softwares64,
- is64bit => 1,
- logger => $logger
+ is64bit => 1
)) {
- _addSoftware(inventory => $inventory, entry => $software, logger => $logger);
+ _addSoftware(inventory => $inventory, entry => $software);
}
_processMSIE(
machKey => $machKey64,
@@ -67,7 +66,7 @@ sub doInventory {
is64bit => 0,
logger => $logger
)) {
- _addSoftware(inventory => $inventory, entry => $software, logger => $logger);
+ _addSoftware(inventory => $inventory, entry => $software);
}
_processMSIE(
machKey => $machKey32,
@@ -88,7 +87,7 @@ sub doInventory {
softwares => $softwares,
is64bit => 0
)) {
- _addSoftware(inventory => $inventory, entry => $software, logger => $logger);
+ _addSoftware(inventory => $inventory, entry => $software);
}
_processMSIE(
machKey => $machKey,
@@ -168,7 +167,6 @@ sub _addSoftware {
my $entry = $params{entry};
- $params{logger}->debug("_addSoftware() begin") if $params{logger};
# avoid duplicates
return if $seen->{$entry->{NAME}}->{$entry->{IS64BIT}}{$entry->{VERSION} || '_undef_'}++;
================================================================
Commit: 08278ee3311bd3d1bcf1769c81ef5bfd4a3e10d6
https://github.com/fusinv/fusioninventory-agent/commit/08278ee3311bd3d1bcf1769c81ef5bfd4a3e10d6
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-02 (Fri, 02 Mar 2012)
Changed paths:
A resources/win32/registry/2003-CentralProcessor.reg
A resources/win32/registry/2003SP2-CentralProcessor.reg
A resources/win32/registry/xp-CentralProcessor.reg
A resources/win32/wmi/2003-Win32_PhysicalMemory.wmi
A resources/win32/wmi/2003-Win32_Processor.wmi
A resources/win32/wmi/2003SP2-Win32_PhysicalMemory.wmi
A resources/win32/wmi/2003SP2-Win32_Processor.wmi
A resources/win32/wmi/xp-Win32_PhysicalMemory.wmi
A resources/win32/wmi/xp-Win32_Processor.wmi
Log Message:
-----------
new bunch of windows resources
diff --git a/resources/win32/registry/2003-CentralProcessor.reg b/resources/win32/registry/2003-CentralProcessor.reg
new file mode 100644
index 0000000..f96533d
Binary files /dev/null and b/resources/win32/registry/2003-CentralProcessor.reg differ
diff --git a/resources/win32/registry/2003SP2-CentralProcessor.reg b/resources/win32/registry/2003SP2-CentralProcessor.reg
new file mode 100644
index 0000000..48818d3
Binary files /dev/null and b/resources/win32/registry/2003SP2-CentralProcessor.reg differ
diff --git a/resources/win32/registry/xp-CentralProcessor.reg b/resources/win32/registry/xp-CentralProcessor.reg
new file mode 100644
index 0000000..2de1ab6
Binary files /dev/null and b/resources/win32/registry/xp-CentralProcessor.reg differ
diff --git a/resources/win32/wmi/2003-Win32_PhysicalMemory.wmi b/resources/win32/wmi/2003-Win32_PhysicalMemory.wmi
new file mode 100644
index 0000000..0e86608
Binary files /dev/null and b/resources/win32/wmi/2003-Win32_PhysicalMemory.wmi differ
diff --git a/resources/win32/wmi/2003-Win32_Processor.wmi b/resources/win32/wmi/2003-Win32_Processor.wmi
new file mode 100644
index 0000000..56c6d71
Binary files /dev/null and b/resources/win32/wmi/2003-Win32_Processor.wmi differ
diff --git a/resources/win32/wmi/2003SP2-Win32_PhysicalMemory.wmi b/resources/win32/wmi/2003SP2-Win32_PhysicalMemory.wmi
new file mode 100644
index 0000000..87b20cc
Binary files /dev/null and b/resources/win32/wmi/2003SP2-Win32_PhysicalMemory.wmi differ
diff --git a/resources/win32/wmi/2003SP2-Win32_Processor.wmi b/resources/win32/wmi/2003SP2-Win32_Processor.wmi
new file mode 100644
index 0000000..4c32dac
Binary files /dev/null and b/resources/win32/wmi/2003SP2-Win32_Processor.wmi differ
diff --git a/resources/win32/wmi/xp-Win32_PhysicalMemory.wmi b/resources/win32/wmi/xp-Win32_PhysicalMemory.wmi
new file mode 100644
index 0000000..63775de
Binary files /dev/null and b/resources/win32/wmi/xp-Win32_PhysicalMemory.wmi differ
diff --git a/resources/win32/wmi/xp-Win32_Processor.wmi b/resources/win32/wmi/xp-Win32_Processor.wmi
new file mode 100644
index 0000000..68ba953
Binary files /dev/null and b/resources/win32/wmi/xp-Win32_Processor.wmi differ
================================================================
Commit: fe77c9eb22b9a8e5aba2a102bbf0e29eb6ce1cff
https://github.com/fusinv/fusioninventory-agent/commit/fe77c9eb22b9a8e5aba2a102bbf0e29eb6ce1cff
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-02 (Fri, 02 Mar 2012)
Changed paths:
M t/inventory/generic/dmidecode/memory.t
Log Message:
-----------
add windows xp sample
diff --git a/t/inventory/generic/dmidecode/memory.t b/t/inventory/generic/dmidecode/memory.t
index 025453f..41ab935 100755
--- a/t/inventory/generic/dmidecode/memory.t
+++ b/t/inventory/generic/dmidecode/memory.t
@@ -908,6 +908,28 @@ my %tests = (
MEMORYCORRECTION => 'None'
}
],
+ 'windows-xppro' => [
+ {
+ NUMSLOTS => 1,
+ SERIALNUMBER => '14FA6621',
+ TYPE => 'DDR2',
+ SPEED => '800 MHz',
+ CAPTION => 'DIMM_A',
+ MEMORYCORRECTION => 'None',
+ DESCRIPTION => 'DIMM (None)',
+ CAPACITY => '2048'
+ },
+ {
+ NUMSLOTS => 2,
+ SERIALNUMBER => 'AEF96621',
+ TYPE => 'DDR2',
+ SPEED => '800 MHz',
+ CAPTION => 'DIMM_B',
+ MEMORYCORRECTION => 'None',
+ DESCRIPTION => 'DIMM (None)',
+ CAPACITY => '2048'
+ }
+ ],
'windows-hyperV' => [
{
NUMSLOTS => 1,
================================================================
Commit: dd7bc22e22c10fc5e155137c8c5b010575ed5b22
https://github.com/fusinv/fusioninventory-agent/commit/dd7bc22e22c10fc5e155137c8c5b010575ed5b22
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-02 (Fri, 02 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Memory.pm
Log Message:
-----------
split parsing for testing purposes
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Memory.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Memory.pm
index 4d74c2e..b2799b8 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Memory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Memory.pm
@@ -80,6 +80,16 @@ sub doInventory {
my $inventory = $params{inventory};
+ foreach my $memory (_getMemories()) {
+ $inventory->addEntry(
+ section => 'MEMORIES',
+ entry => $memory
+ );
+ }
+}
+
+sub _getMemories {
+
my $cpt = 0;
my @memories;
@@ -134,13 +144,7 @@ sub doInventory {
}
}
- foreach my $memory (@memories) {
- $inventory->addEntry(
- section => 'MEMORIES',
- entry => $memory
- );
- }
-
+ return @memories;
}
1;
================================================================
Commit: e5249140d7654a3e7921f9d062d912fd9ac8dddb
https://github.com/fusinv/fusioninventory-agent/commit/e5249140d7654a3e7921f9d062d912fd9ac8dddb
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-03 (Sat, 03 Mar 2012)
Changed paths:
A resources/win32/wmi/7-Win32_PhysicalMemory.wmi
A resources/win32/wmi/7-Win32_PhysicalMemoryArray.wmi
A resources/win32/wmi/7-Win32_Processor.wmi
Log Message:
-----------
more wmi queries results
diff --git a/resources/win32/wmi/7-Win32_PhysicalMemory.wmi b/resources/win32/wmi/7-Win32_PhysicalMemory.wmi
new file mode 100644
index 0000000..e5aad73
Binary files /dev/null and b/resources/win32/wmi/7-Win32_PhysicalMemory.wmi differ
diff --git a/resources/win32/wmi/7-Win32_PhysicalMemoryArray.wmi b/resources/win32/wmi/7-Win32_PhysicalMemoryArray.wmi
new file mode 100644
index 0000000..d4a7646
Binary files /dev/null and b/resources/win32/wmi/7-Win32_PhysicalMemoryArray.wmi differ
diff --git a/resources/win32/wmi/7-Win32_Processor.wmi b/resources/win32/wmi/7-Win32_Processor.wmi
new file mode 100644
index 0000000..ba554d1
Binary files /dev/null and b/resources/win32/wmi/7-Win32_Processor.wmi differ
================================================================
Commit: 6e43cafd6aa0cf88350e365a5e2db4acc0e643b6
https://github.com/fusinv/fusioninventory-agent/commit/6e43cafd6aa0cf88350e365a5e2db4acc0e643b6
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-03 (Sat, 03 Mar 2012)
Changed paths:
A t/inventory/windows/memory.t
Log Message:
-----------
initial import
diff --git a/t/inventory/windows/memory.t b/t/inventory/windows/memory.t
new file mode 100755
index 0000000..6a42f78
--- /dev/null
+++ b/t/inventory/windows/memory.t
@@ -0,0 +1,100 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use utf8;
+
+use English qw(-no_match_vars);
+use Test::More;
+use Test::MockModule;
+
+BEGIN {
+ # use mock modules for non-available ones
+ push @INC, 't/fake/windows' if $OSNAME ne 'MSWin32';
+}
+
+use FusionInventory::Agent::Task::Inventory::Input::Win32::Memory;
+
+my %tests = (
+ 7 => [
+ {
+ NUMSLOTS => 0,
+ FORMFACTOR => 'DIMM',
+ SERIALNUMBER => '0000000',
+ TYPE => 'Unknown',
+ SPEED => '1600',
+ CAPTION => "Mémoire physique",
+ REMOVABLE => 0,
+ DESCRIPTION => "Mémoire physique",
+ CAPACITY => '2048'
+ },
+ {
+ NUMSLOTS => 1,
+ FORMFACTOR => 'DIMM',
+ SERIALNUMBER => '0000000',
+ TYPE => 'Unknown',
+ SPEED => '1600',
+ CAPTION => "Mémoire physique",
+ REMOVABLE => 0,
+ DESCRIPTION => "Mémoire physique",
+ CAPACITY => '2048'
+ }
+ ]
+);
+
+plan tests => scalar keys %tests;
+
+my $module = Test::MockModule->new(
+ 'FusionInventory::Agent::Task::Inventory::Input::Win32::Memory'
+);
+
+foreach my $test (keys %tests) {
+ # redefine getWmiObjects function
+ $module->mock(
+ 'getWmiObjects',
+ sub {
+ my (%params) = @_;
+
+ my $file = "resources/win32/wmi/$test-$params{class}.wmi";
+ open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
+
+ # this is a windows file
+ binmode $handle, ':encoding(UTF-16LE)';
+ local $INPUT_RECORD_SEPARATOR="\r\n";
+
+ # build a list of desired properties indexes
+ my %properties = map { $_ => 1 } @{$params{properties}};
+
+ my @objects;
+ my $object;
+ while (my $line = <$handle>) {
+ chomp $line;
+
+ if ($line =~ /^ (\w+) = (.+) $/x) {
+ my $key = $1;
+ my $value = $2;
+ next unless $properties{$key};
+ $value =~ s/&/&/g;
+ $object->{$key} = $value;
+ next;
+ }
+
+ if ($line =~ /^$/) {
+ push @objects, $object if $object;
+ undef $object;
+ next;
+ }
+ }
+ close $handle;
+
+ return @objects;
+ }
+ );
+
+ my @memories = FusionInventory::Agent::Task::Inventory::Input::Win32::Memory::_getMemories();
+ is_deeply(
+ \@memories,
+ $tests{$test},
+ "$test memory"
+ );
+}
================================================================
Commit: f22286f7f0693aa3baece545d98f0f6f782f0fb2
https://github.com/fusinv/fusioninventory-agent/commit/f22286f7f0693aa3baece545d98f0f6f782f0fb2
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-03 (Sat, 03 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
Log Message:
-----------
less intermediate variables
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
index 57d4e95..117bc09 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
@@ -38,66 +38,60 @@ sub doInventory {
# the CPU description in WMI is false, we use the registry instead
# Hardware\Description\System\CentralProcessor\1
# thank you Nicolas Richard
- my $info = getRegistryValue(
+ my $registryInfo = getRegistryValue(
path => "HKEY_LOCAL_MACHINE/Hardware/Description/System/CentralProcessor/$cpuId",
logger => $logger
);
-# my $cache = $object->{L2CacheSize}+$object->{L3CacheSize};
- my $core = $dmidecodeCpu[$cpuId]->{CORE} || $object->{NumberOfCores};
- my $thread = $dmidecodeCpu[$cpuId]->{THREAD};
- my $description = $info->{Identifier};
- my $name = $info->{ProcessorNameString};
- my $manufacturer = $info->{VendorIdentifier};
- my $id = $dmidecodeCpu[$cpuId]->{ID} || $object->{ProcessorId};
- my $speed = $dmidecodeCpu[$cpuId]->{SPEED} || $object->{MaxClockSpeed};
- my $serial = $dmidecodeCpu[$cpuId]->{SERIAL};
+ my $dmidecodeInfo = $dmidecodeCpu[$cpuId];
+
+ my $cpu = {
+ CORE => $dmidecodeInfo->{CORE} || $object->{NumberOfCores},
+ THREAD => $dmidecodeInfo->{THREAD},
+ DESCRIPTION => $registryInfo->{Identifier},
+ NAME => $registryInfo->{ProcessorNameString},
+ MANUFACTURER => $registryInfo->{VendorIdentifier},
+ SERIAL => $dmidecodeInfo->{SERIAL},
+ SPEED => $dmidecodeInfo->{SPEED} || $object->{MaxClockSpeed},
+ ID => $dmidecodeInfo->{ID} || $object->{ProcessorId}
+ };
# Some information are missing on Win2000
- if (!$name) {
- $name = $ENV{PROCESSOR_IDENTIFIER};
- if ($name =~ s/,\s(\S+)$//) {
- $manufacturer = $1;
+ if (!$cpu->{NAME}) {
+ $cpu->{NAME} = $ENV{PROCESSOR_IDENTIFIER};
+ if ($cpu->{NAME} =~ s/,\s(\S+)$//) {
+ $cpu->{MANUFACTURER} = $1;
}
}
- if ($manufacturer) {
- $manufacturer =~ s/Genuine//;
- $manufacturer =~ s/(TMx86|TransmetaCPU)/Transmeta/;
- $manufacturer =~ s/CyrixInstead/Cyrix/;
- $manufacturer=~ s/CentaurHauls/VIA/;
+ if ($cpu->{MANUFACTURER}) {
+ $cpu->{MANUFACTURER} =~ s/Genuine//;
+ $cpu->{MANUFACTURER} =~ s/(TMx86|TransmetaCPU)/Transmeta/;
+ $cpu->{MANUFACTURER} =~ s/CyrixInstead/Cyrix/;
+ $cpu->{MANUFACTURER} =~ s/CentaurHauls/VIA/;
}
- if ($serial) {
- $serial =~ s/\s//g;
+
+ if ($cpu->{SERIAL}) {
+ $cpu->{SERIAL} =~ s/\s//g;
}
- if ($name) {
- $name =~ s/^\s+//;
- $name =~ s/\s+$//;
+ if ($cpu->{NAME}) {
+ $cpu->{NAME} =~ s/^\s+//;
+ $cpu->{NAME} =~ s/\s+$//;
- $vmsystem = "QEMU"if $name =~ /QEMU/i;
+ $vmsystem = "QEMU" if $cpu->{NAME} =~ /QEMU/i;
- if ($name =~ /([\d\.]+)s*(GHZ)/i) {
- $speed = {
+ if ($cpu->{NAME} =~ /([\d\.]+)s*(GHZ)/i) {
+ $cpu->{SPEED} = {
ghz => 1000,
mhz => 1,
- }->{lc($2)}*$1;
+ }->{lc($2)} * $1;
}
-
}
$inventory->addEntry(
section => 'CPUS',
- entry => {
- CORE => $core,
- THREAD => $thread,
- DESCRIPTION => $description,
- NAME => $name,
- MANUFACTURER => $manufacturer,
- SERIAL => $serial,
- SPEED => $speed,
- ID => $id
- }
+ entry => $cpu
);
$cpuId++;
================================================================
Commit: 619bfd9e276e7cfc788c40f70dfeb1bb5f7bd0c0
https://github.com/fusinv/fusioninventory-agent/commit/619bfd9e276e7cfc788c40f70dfeb1bb5f7bd0c0
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M t/FusionInventory/Test/Utils.pm
M t/inventory/windows/memory.t
M t/inventory/windows/usb.t
Log Message:
-----------
code factorisation
diff --git a/t/FusionInventory/Test/Utils.pm b/t/FusionInventory/Test/Utils.pm
index 8d1cb0a..9041766 100644
--- a/t/FusionInventory/Test/Utils.pm
+++ b/t/FusionInventory/Test/Utils.pm
@@ -4,10 +4,12 @@ use strict;
use warnings;
use base 'Exporter';
+use English qw(-no_match_vars);
use Socket;
our @EXPORT = qw(
test_port
+ mockGetWmiObjects
);
sub test_port {
@@ -25,3 +27,45 @@ sub test_port {
return 0;
}
+
+sub mockGetWmiObjects {
+ my ($test) = @_;
+
+ return sub {
+ my (%params) = @_;
+
+ my $file = "resources/win32/wmi/$test-$params{class}.wmi";
+ open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
+
+ # this is a windows file
+ binmode $handle, ':encoding(UTF-16LE)';
+ local $INPUT_RECORD_SEPARATOR="\r\n";
+
+ # build a list of desired properties indexes
+ my %properties = map { $_ => 1 } @{$params{properties}};
+
+ my @objects;
+ my $object;
+ while (my $line = <$handle>) {
+ chomp $line;
+
+ if ($line =~ /^ (\w+) = (.+) $/x) {
+ my $key = $1;
+ my $value = $2;
+ next unless $properties{$key};
+ $value =~ s/&/&/g;
+ $object->{$key} = $value;
+ next;
+ }
+
+ if ($line =~ /^$/) {
+ push @objects, $object if $object;
+ undef $object;
+ next;
+ }
+ }
+ close $handle;
+
+ return @objects;
+ };
+}
diff --git a/t/inventory/windows/memory.t b/t/inventory/windows/memory.t
index 6a42f78..4192e95 100755
--- a/t/inventory/windows/memory.t
+++ b/t/inventory/windows/memory.t
@@ -3,11 +3,14 @@
use strict;
use warnings;
use utf8;
+use lib 't';
use English qw(-no_match_vars);
use Test::More;
use Test::MockModule;
+use FusionInventory::Test::Utils;
+
BEGIN {
# use mock modules for non-available ones
push @INC, 't/fake/windows' if $OSNAME ne 'MSWin32';
@@ -52,43 +55,7 @@ foreach my $test (keys %tests) {
# redefine getWmiObjects function
$module->mock(
'getWmiObjects',
- sub {
- my (%params) = @_;
-
- my $file = "resources/win32/wmi/$test-$params{class}.wmi";
- open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
-
- # this is a windows file
- binmode $handle, ':encoding(UTF-16LE)';
- local $INPUT_RECORD_SEPARATOR="\r\n";
-
- # build a list of desired properties indexes
- my %properties = map { $_ => 1 } @{$params{properties}};
-
- my @objects;
- my $object;
- while (my $line = <$handle>) {
- chomp $line;
-
- if ($line =~ /^ (\w+) = (.+) $/x) {
- my $key = $1;
- my $value = $2;
- next unless $properties{$key};
- $value =~ s/&/&/g;
- $object->{$key} = $value;
- next;
- }
-
- if ($line =~ /^$/) {
- push @objects, $object if $object;
- undef $object;
- next;
- }
- }
- close $handle;
-
- return @objects;
- }
+ mockGetWmiObjects($test)
);
my @memories = FusionInventory::Agent::Task::Inventory::Input::Win32::Memory::_getMemories();
diff --git a/t/inventory/windows/usb.t b/t/inventory/windows/usb.t
index f8a5147..85300c7 100755
--- a/t/inventory/windows/usb.t
+++ b/t/inventory/windows/usb.t
@@ -3,11 +3,14 @@
use strict;
use warnings;
use utf8;
+use lib 't';
use English qw(-no_match_vars);
use Test::More;
use Test::MockModule;
+use FusionInventory::Test::Utils;
+
BEGIN {
# use mock modules for non-available ones
push @INC, 't/fake/windows' if $OSNAME ne 'MSWin32';
@@ -96,43 +99,7 @@ foreach my $test (keys %tests) {
# redefine getWmiObjects function
$module->mock(
'getWmiObjects',
- sub {
- my (%params) = @_;
-
- my $file = "resources/win32/wmi/$test-$params{class}.wmi";
- open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
-
- # this is a windows file
- binmode $handle, ':encoding(UTF-16LE)';
- local $INPUT_RECORD_SEPARATOR="\r\n";
-
- # build a list of desired properties indexes
- my %properties = map { $_ => 1 } @{$params{properties}};
-
- my @objects;
- my $object;
- while (my $line = <$handle>) {
- chomp $line;
-
- if ($line =~ /^ (\w+) = (.+) $/x) {
- my $key = $1;
- my $value = $2;
- next unless $properties{$key};
- $value =~ s/&/&/g;
- $object->{$key} = $value;
- next;
- }
-
- if ($line =~ /^$/) {
- push @objects, $object if $object;
- undef $object;
- next;
- }
- }
- close $handle;
-
- return @objects;
- }
+ mockGetWmiObjects($test)
);
my @devices = FusionInventory::Agent::Task::Inventory::Input::Win32::USB::_getUSBDevices();
================================================================
Commit: 27827f100995e98b2ebd65494f0aa467aa64cef8
https://github.com/fusinv/fusioninventory-agent/commit/27827f100995e98b2ebd65494f0aa467aa64cef8
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
A resources/generic/dmidecode/windows-7
M t/inventory/generic/dmidecode/memory.t
M t/tools/generic.t
Log Message:
-----------
add windows 7 sample
diff --git a/resources/generic/dmidecode/windows-7 b/resources/generic/dmidecode/windows-7
new file mode 100644
index 0000000..3ff0578
--- /dev/null
+++ b/resources/generic/dmidecode/windows-7
@@ -0,0 +1,1034 @@
+# dmidecode 2.10
+SMBIOS 2.6 present.
+101 structures occupying 3552 bytes.
+Table at 0x003B3688.
+
+Handle 0x0000, DMI type 0, 24 bytes
+BIOS Information
+ Vendor: American Megatrends Inc.
+ Version: 1503
+ Release Date: 03/10/2011
+ Address: 0xF0000
+ Runtime Size: 64 kB
+ ROM Size: 4096 kB
+ Characteristics:
+ PCI is supported
+ BIOS is upgradeable
+ BIOS shadowing is allowed
+ Boot from CD is supported
+ Selectable boot is supported
+ BIOS ROM is socketed
+ EDD is supported
+ 5.25"/1.2 MB floppy services are supported (int 13h)
+ 3.5"/720 kB floppy services are supported (int 13h)
+ 3.5"/2.88 MB floppy services are supported (int 13h)
+ Print screen service is supported (int 5h)
+ 8042 keyboard services are supported (int 9h)
+ Serial services are supported (int 14h)
+ Printer services are supported (int 17h)
+ ACPI is supported
+ USB legacy is supported
+ BIOS boot specification is supported
+ Targeted content distribution is supported
+ BIOS Revision: 4.6
+
+Handle 0x0001, DMI type 1, 27 bytes
+System Information
+ Manufacturer: System manufacturer
+ Product Name: System Product Name
+ Version: System Version
+ Serial Number: System Serial Number
+ UUID: 1E00E6E0-008C-4400-9AAD-F46D04972D3E
+ Wake-up Type: Power Switch
+ SKU Number: To be filled by O.E.M.
+ Family: To be filled by O.E.M.
+
+Handle 0x0002, DMI type 2, 15 bytes
+Base Board Information
+ Manufacturer: ASUSTeK Computer INC.
+ Product Name: P8P67
+ Version: Rev 1.xx
+ Serial Number: MT7013K30709271
+ Asset Tag: To be filled by O.E.M.
+ Features:
+ Board is a hosting board
+ Board is replaceable
+ Location In Chassis: To be filled by O.E.M.
+ Chassis Handle: 0x0003
+ Type: Motherboard
+ Contained Object Handles: 0
+
+Handle 0x0003, DMI type 3, 21 bytes
+Chassis Information
+ Manufacturer: Chassis Manufacture
+ Type: Desktop
+ Lock: Not Present
+ Version: Chassis Version
+ Serial Number: Chassis Serial Number
+ Asset Tag: Asset-1234567890
+ Boot-up State: Safe
+ Power Supply State: Safe
+ Thermal State: Safe
+ Security Status: None
+ OEM Information: 0x00000000
+ Height: Unspecified
+ Number Of Power Cords: 1
+ Contained Elements: 0
+
+Handle 0x0004, DMI type 4, 42 bytes
+Processor Information
+ Socket Designation: LGA1155
+ Type: Central Processor
+ Family: Core 2 Duo
+ Manufacturer: Intel
+ ID: A7 06 02 00 FF FB EB BF
+ Signature: Type 0, Family 6, Model 42, Stepping 7
+ Flags:
+ FPU (Floating-point unit on-chip)
+ VME (Virtual mode extension)
+ DE (Debugging extension)
+ PSE (Page size extension)
+ TSC (Time stamp counter)
+ MSR (Model specific registers)
+ PAE (Physical address extension)
+ MCE (Machine check exception)
+ CX8 (CMPXCHG8 instruction supported)
+ APIC (On-chip APIC hardware supported)
+ SEP (Fast system call)
+ MTRR (Memory type range registers)
+ PGE (Page global enable)
+ MCA (Machine check architecture)
+ CMOV (Conditional move instruction supported)
+ PAT (Page attribute table)
+ PSE-36 (36-bit page size extension)
+ CLFSH (CLFLUSH instruction supported)
+ DS (Debug store)
+ ACPI (ACPI supported)
+ MMX (MMX technology supported)
+ FXSR (Fast floating-point save and restore)
+ SSE (Streaming SIMD extensions)
+ SSE2 (Streaming SIMD extensions 2)
+ SS (Self-snoop)
+ HTT (Hyper-threading technology)
+ TM (Thermal monitor supported)
+ PBE (Pending break enabled)
+ Version: Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz
+ Voltage: 1.0 V
+ External Clock: 100 MHz
+ Max Speed: 3800 MHz
+ Current Speed: 2800 MHz
+ Status: Populated, Enabled
+ Upgrade: Other
+ L1 Cache Handle: 0x0005
+ L2 Cache Handle: 0x0006
+ L3 Cache Handle: 0x0007
+ Serial Number: To Be Filled By O.E.M.
+ Asset Tag: To Be Filled By O.E.M.
+ Part Number: To Be Filled By O.E.M.
+ Core Count: 4
+ Core Enabled: 1
+ Characteristics:
+ 64-bit capable
+
+Handle 0x0005, DMI type 7, 19 bytes
+Cache Information
+ Socket Designation: L1-Cache
+ Configuration: Enabled, Not Socketed, Level 1
+ Operational Mode: Write Back
+ Location: Internal
+ Installed Size: 256 kB
+ Maximum Size: 256 kB
+ Supported SRAM Types:
+ Other
+ Installed SRAM Type: Other
+ Speed: Unknown
+ Error Correction Type: None
+ System Type: Unified
+ Associativity: 8-way Set-associative
+
+Handle 0x0006, DMI type 7, 19 bytes
+Cache Information
+ Socket Designation: L2-Cache
+ Configuration: Enabled, Not Socketed, Level 2
+ Operational Mode: Varies With Memory Address
+ Location: Internal
+ Installed Size: 1024 kB
+ Maximum Size: 1024 kB
+ Supported SRAM Types:
+ Other
+ Installed SRAM Type: Other
+ Speed: Unknown
+ Error Correction Type: None
+ System Type: Unified
+ Associativity: 8-way Set-associative
+
+Handle 0x0007, DMI type 7, 19 bytes
+Cache Information
+ Socket Designation: L3-Cache
+ Configuration: Disabled, Not Socketed, Level 3
+ Operational Mode: Unknown
+ Location: Internal
+ Installed Size: 6144 kB
+ Maximum Size: 6144 kB
+ Supported SRAM Types:
+ Other
+ Installed SRAM Type: Other
+ Speed: Unknown
+ Error Correction Type: None
+ System Type: Unified
+ Associativity: Other
+
+Handle 0x0008, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: PS/2 Keyboard
+ Internal Connector Type: None
+ External Reference Designator: PS/2 Keyboard
+ External Connector Type: PS/2
+ Port Type: Keyboard Port
+
+Handle 0x0009, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: USB9_10
+ Internal Connector Type: None
+ External Reference Designator: USB9_10
+ External Connector Type: Access Bus (USB)
+ Port Type: USB
+
+Handle 0x000A, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: USB11_12
+ Internal Connector Type: None
+ External Reference Designator: USB11_12
+ External Connector Type: Access Bus (USB)
+ Port Type: USB
+
+Handle 0x000B, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: GbE LAN
+ Internal Connector Type: None
+ External Reference Designator: GbE LAN
+ External Connector Type: RJ-45
+ Port Type: Network Port
+
+Handle 0x000C, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: AUDIO
+ Internal Connector Type: None
+ External Reference Designator: AUDIO
+ External Connector Type: Other
+ Port Type: Audio Port
+
+Handle 0x000D, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: SATA1
+ Internal Connector Type: SAS/SATA Plug Receptacle
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: SATA
+
+Handle 0x000E, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: SATA2
+ Internal Connector Type: SAS/SATA Plug Receptacle
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: SATA
+
+Handle 0x000F, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: SATA3
+ Internal Connector Type: SAS/SATA Plug Receptacle
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: SATA
+
+Handle 0x0010, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: SATA4
+ Internal Connector Type: SAS/SATA Plug Receptacle
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: SATA
+
+Handle 0x0011, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: SATA5
+ Internal Connector Type: SAS/SATA Plug Receptacle
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: SATA
+
+Handle 0x0012, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: SATA6
+ Internal Connector Type: SAS/SATA Plug Receptacle
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: SATA
+
+Handle 0x0013, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: USB1_2
+ Internal Connector Type: Access Bus (USB)
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: USB
+
+Handle 0x0014, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: USB3_4
+ Internal Connector Type: Access Bus (USB)
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: USB
+
+Handle 0x0015, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: USB5_6
+ Internal Connector Type: Access Bus (USB)
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: USB
+
+Handle 0x0016, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: USB7_8
+ Internal Connector Type: Access Bus (USB)
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: USB
+
+Handle 0x0017, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: AAFP
+ Internal Connector Type: Mini Jack (headphones)
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: Audio Port
+
+Handle 0x0018, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: CPU_FAN
+ Internal Connector Type: Other
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: Other
+
+Handle 0x0019, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: CHA_FAN1
+ Internal Connector Type: Other
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: Other
+
+Handle 0x001A, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: PWR_FAN
+ Internal Connector Type: Other
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: Other
+
+Handle 0x001B, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: PATA_IDE
+ Internal Connector Type: On Board IDE
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: Other
+
+Handle 0x001C, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: F_ESATA
+ Internal Connector Type: SAS/SATA Plug Receptacle
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: SATA
+
+Handle 0x001D, DMI type 9, 17 bytes
+System Slot Information
+ Designation: PCIEX16_1
+ Type: 32-bit PCI Express
+ Current Usage: In Use
+ Length: Short
+ ID: 1
+ Characteristics:
+ 3.3 V is provided
+ Opening is shared
+ PME signal is supported
+ Bus Address: 0000:00:01.0
+
+Handle 0x001E, DMI type 9, 17 bytes
+System Slot Information
+ Designation: PCIEX1_1
+ Type: 32-bit PCI Express
+ Current Usage: In Use
+ Length: Short
+ ID: 2
+ Characteristics:
+ 3.3 V is provided
+ Opening is shared
+ PME signal is supported
+ Bus Address: 0000:00:1c.3
+
+Handle 0x001F, DMI type 9, 17 bytes
+System Slot Information
+ Designation: PCIEX1_2
+ Type: 32-bit PCI Express
+ Current Usage: In Use
+ Length: Short
+ ID: 3
+ Characteristics:
+ 3.3 V is provided
+ Opening is shared
+ PME signal is supported
+ Bus Address: 0000:00:1c.4
+
+Handle 0x0020, DMI type 9, 17 bytes
+System Slot Information
+ Designation: PCI1
+ Type: 32-bit PCI
+ Current Usage: In Use
+ Length: Short
+ ID: 4
+ Characteristics:
+ 3.3 V is provided
+ Opening is shared
+ PME signal is supported
+ Bus Address: 0000:00:1c.6
+
+Handle 0x0021, DMI type 10, 6 bytes
+On Board Device Information
+ Type: Ethernet
+ Status: Enabled
+ Description: Onboard Ethernet
+
+Handle 0x0022, DMI type 11, 5 bytes
+OEM Strings
+ String 1: To Be Filled By O.E.M.
+
+Handle 0x0023, DMI type 12, 5 bytes
+System Configuration Options
+ Option 1: To Be Filled By O.E.M.
+
+Handle 0x0024, DMI type 16, 15 bytes
+Physical Memory Array
+ Location: System Board Or Motherboard
+ Use: System Memory
+ Error Correction Type: None
+ Maximum Capacity: 32 GB
+ Error Information Handle: No Error
+ Number Of Devices: 4
+
+Handle 0x0025, DMI type 18, 23 bytes
+32-bit Memory Error Information
+ Type: OK
+ Granularity: Unknown
+ Operation: Unknown
+ Vendor Syndrome: Unknown
+ Memory Array Address: Unknown
+ Device Address: Unknown
+ Resolution: Unknown
+
+Handle 0x0026, DMI type 19, 15 bytes
+Memory Array Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x000FFFFFFFF
+ Range Size: 4 GB
+ Physical Array Handle: 0x0024
+ Partition Width: 0
+
+Handle 0x0027, DMI type 17, 28 bytes
+Memory Device
+ Array Handle: 0x0024
+ Error Information Handle: No Error
+ Total Width: 64 bits
+ Data Width: 64 bits
+ Size: No Module Installed
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM0
+ Bank Locator: BANK0
+ Type: Unknown
+ Type Detail: Synchronous
+ Speed: Unknown
+ Manufacturer: Manufacturer0
+ Serial Number: SerNum0
+ Asset Tag: AssetTagNum0
+ Part Number: Array1_PartNumber0
+ Rank: Unknown
+
+Handle 0x0028, DMI type 18, 23 bytes
+32-bit Memory Error Information
+ Type: OK
+ Granularity: Unknown
+ Operation: Unknown
+ Vendor Syndrome: Unknown
+ Memory Array Address: Unknown
+ Device Address: Unknown
+ Resolution: Unknown
+
+Handle 0x0029, DMI type 126, 19 bytes
+Inactive
+
+Handle 0x002A, DMI type 17, 28 bytes
+Memory Device
+ Array Handle: 0x0024
+ Error Information Handle: No Error
+ Total Width: 64 bits
+ Data Width: 64 bits
+ Size: 2048 MB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM1
+ Bank Locator: BANK1
+ Type: <OUT OF SPEC>
+ Type Detail: Synchronous
+ Speed: 1600 MHz
+ Manufacturer: Undefined
+ Serial Number: 0000000
+ Asset Tag: AssetTagNum1
+ Part Number: F3-12800CL9-2GBXL
+ Rank: 2
+
+Handle 0x002B, DMI type 18, 23 bytes
+32-bit Memory Error Information
+ Type: OK
+ Granularity: Unknown
+ Operation: Unknown
+ Vendor Syndrome: Unknown
+ Memory Array Address: Unknown
+ Device Address: Unknown
+ Resolution: Unknown
+
+Handle 0x002C, DMI type 20, 19 bytes
+Memory Device Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x0007FFFFFFF
+ Range Size: 2 GB
+ Physical Device Handle: 0x002A
+ Memory Array Mapped Address Handle: 0x0026
+ Partition Row Position: 1
+
+Handle 0x002D, DMI type 17, 28 bytes
+Memory Device
+ Array Handle: 0x0024
+ Error Information Handle: No Error
+ Total Width: 64 bits
+ Data Width: 64 bits
+ Size: No Module Installed
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM2
+ Bank Locator: BANK2
+ Type: Unknown
+ Type Detail: Synchronous
+ Speed: Unknown
+ Manufacturer: Manufacturer2
+ Serial Number: SerNum2
+ Asset Tag: AssetTagNum2
+ Part Number: Array1_PartNumber2
+ Rank: Unknown
+
+Handle 0x002E, DMI type 18, 23 bytes
+32-bit Memory Error Information
+ Type: OK
+ Granularity: Unknown
+ Operation: Unknown
+ Vendor Syndrome: Unknown
+ Memory Array Address: Unknown
+ Device Address: Unknown
+ Resolution: Unknown
+
+Handle 0x002F, DMI type 126, 19 bytes
+Inactive
+
+Handle 0x0030, DMI type 17, 28 bytes
+Memory Device
+ Array Handle: 0x0024
+ Error Information Handle: No Error
+ Total Width: 64 bits
+ Data Width: 64 bits
+ Size: 2048 MB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM3
+ Bank Locator: BANK3
+ Type: <OUT OF SPEC>
+ Type Detail: Synchronous
+ Speed: 1600 MHz
+ Manufacturer: Undefined
+ Serial Number: 0000000
+ Asset Tag: AssetTagNum3
+ Part Number: F3-12800CL9-2GBXL
+ Rank: 2
+
+Handle 0x0031, DMI type 18, 23 bytes
+32-bit Memory Error Information
+ Type: OK
+ Granularity: Unknown
+ Operation: Unknown
+ Vendor Syndrome: Unknown
+ Memory Array Address: Unknown
+ Device Address: Unknown
+ Resolution: Unknown
+
+Handle 0x0032, DMI type 20, 19 bytes
+Memory Device Mapped Address
+ Starting Address: 0x00080000000
+ Ending Address: 0x000FFFFFFFF
+ Range Size: 2 GB
+ Physical Device Handle: 0x0030
+ Memory Array Mapped Address Handle: 0x0026
+ Partition Row Position: 1
+
+Handle 0x0033, DMI type 32, 20 bytes
+System Boot Information
+ Status: No errors detected
+
+Handle 0x0034, DMI type 34, 11 bytes
+Management Device
+ Description: LM78-1
+ Type: LM78
+ Address: 0x00000000
+ Address Type: I/O Port
+
+Handle 0x0035, DMI type 26, 22 bytes
+Voltage Probe
+ Description: LM78A
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x0036, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 1
+ Upper Non-critical Threshold: 2
+ Lower Critical Threshold: 3
+ Upper Critical Threshold: 4
+ Lower Non-recoverable Threshold: 5
+ Upper Non-recoverable Threshold: 6
+
+Handle 0x0037, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0034
+ Component Handle: 0x0034
+ Threshold Handle: 0x0035
+
+Handle 0x0038, DMI type 28, 22 bytes
+Temperature Probe
+ Description: LM78A
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x0039, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 1
+ Upper Non-critical Threshold: 2
+ Lower Critical Threshold: 3
+ Upper Critical Threshold: 4
+ Lower Non-recoverable Threshold: 5
+ Upper Non-recoverable Threshold: 6
+
+Handle 0x003A, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0034
+ Component Handle: 0x0037
+ Threshold Handle: 0x0038
+
+Handle 0x003B, DMI type 27, 14 bytes
+Cooling Device
+ Temperature Probe Handle: 0x0038
+ Type: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Cooling Unit Group: 1
+ OEM-specific Information: 0x00000000
+ Nominal Speed: Unknown Or Non-rotating
+
+Handle 0x003C, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 1
+ Upper Non-critical Threshold: 2
+ Lower Critical Threshold: 3
+ Upper Critical Threshold: 4
+ Lower Non-recoverable Threshold: 5
+ Upper Non-recoverable Threshold: 6
+
+Handle 0x003D, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0034
+ Component Handle: 0x003A
+ Threshold Handle: 0x003B
+
+Handle 0x003E, DMI type 27, 14 bytes
+Cooling Device
+ Temperature Probe Handle: 0x0038
+ Type: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Cooling Unit Group: 1
+ OEM-specific Information: 0x00000000
+ Nominal Speed: Unknown Or Non-rotating
+
+Handle 0x003F, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 1
+ Upper Non-critical Threshold: 2
+ Lower Critical Threshold: 3
+ Upper Critical Threshold: 4
+ Lower Non-recoverable Threshold: 5
+ Upper Non-recoverable Threshold: 6
+
+Handle 0x0040, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0034
+ Component Handle: 0x003D
+ Threshold Handle: 0x003E
+
+Handle 0x0041, DMI type 29, 22 bytes
+Electrical Current Probe
+ Description: ABC
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x0042, DMI type 36, 16 bytes
+Management Device Threshold Data
+
+Handle 0x0043, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0034
+ Component Handle: 0x0040
+ Threshold Handle: 0x003E
+
+Handle 0x0044, DMI type 39, 22 bytes
+System Power Supply
+ Power Unit Group: 1
+ Location: To Be Filled By O.E.M.
+ Name: To Be Filled By O.E.M.
+ Manufacturer: To Be Filled By O.E.M.
+ Serial Number: To Be Filled By O.E.M.
+ Asset Tag: To Be Filled By O.E.M.
+ Model Part Number: To Be Filled By O.E.M.
+ Revision: To Be Filled By O.E.M.
+ Max Power Capacity: Unknown
+ Status: Not Present
+ Type: <OUT OF SPEC>
+ Input Voltage Range Switching: <OUT OF SPEC>
+ Plugged: Yes
+ Hot Replaceable: No
+ Input Voltage Probe Handle: 0x0035
+ Cooling Device Handle: 0x003B
+ Input Current Probe Handle: 0x0041
+
+Handle 0x0045, DMI type 34, 16 bytes
+Management Device
+ Description: 2
+ Type: LM78
+ Address: 0x00000000
+ Address Type: I/O Port
+
+Handle 0x0046, DMI type 26, 22 bytes
+Voltage Probe
+ Description: LM78B
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x0047, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 7
+ Upper Non-critical Threshold: 8
+ Lower Critical Threshold: 8
+ Upper Critical Threshold: 10
+ Lower Non-recoverable Threshold: 11
+ Upper Non-recoverable Threshold: 12
+
+Handle 0x0048, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0045
+ Component Handle: 0x0045
+ Threshold Handle: 0x0046
+
+Handle 0x0049, DMI type 26, 22 bytes
+Voltage Probe
+ Description: LM78B
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x004A, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 13
+ Upper Non-critical Threshold: 14
+ Lower Critical Threshold: 15
+ Upper Critical Threshold: 16
+ Lower Non-recoverable Threshold: 17
+ Upper Non-recoverable Threshold: 18
+
+Handle 0x004B, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0045
+ Component Handle: 0x0048
+ Threshold Handle: 0x0049
+
+Handle 0x004C, DMI type 28, 22 bytes
+Temperature Probe
+ Description: LM78B
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x004D, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 1
+ Upper Non-critical Threshold: 2
+ Lower Critical Threshold: 3
+ Upper Critical Threshold: 4
+ Lower Non-recoverable Threshold: 5
+ Upper Non-recoverable Threshold: 6
+
+Handle 0x004E, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0045
+ Component Handle: 0x004B
+ Threshold Handle: 0x004C
+
+Handle 0x004F, DMI type 27, 14 bytes
+Cooling Device
+ Temperature Probe Handle: 0x004C
+ Type: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Cooling Unit Group: 1
+ OEM-specific Information: 0x00000000
+ Nominal Speed: Unknown Or Non-rotating
+
+Handle 0x0050, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 1
+ Upper Non-critical Threshold: 2
+ Lower Critical Threshold: 3
+ Upper Critical Threshold: 4
+ Lower Non-recoverable Threshold: 5
+ Upper Non-recoverable Threshold: 6
+
+Handle 0x0051, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0045
+ Component Handle: 0x004E
+ Threshold Handle: 0x004F
+
+Handle 0x0052, DMI type 28, 22 bytes
+Temperature Probe
+ Description: LM78B
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x0053, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 1
+ Upper Non-critical Threshold: 2
+ Lower Critical Threshold: 3
+ Upper Critical Threshold: 4
+ Lower Non-recoverable Threshold: 5
+ Upper Non-recoverable Threshold: 6
+
+Handle 0x0054, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0045
+ Component Handle: 0x0051
+ Threshold Handle: 0x0052
+
+Handle 0x0055, DMI type 27, 14 bytes
+Cooling Device
+ Temperature Probe Handle: 0x0052
+ Type: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Cooling Unit Group: 1
+ OEM-specific Information: 0x00000000
+ Nominal Speed: Unknown Or Non-rotating
+
+Handle 0x0056, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 1
+ Upper Non-critical Threshold: 2
+ Lower Critical Threshold: 3
+ Upper Critical Threshold: 4
+ Lower Non-recoverable Threshold: 5
+ Upper Non-recoverable Threshold: 6
+
+Handle 0x0057, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0045
+ Component Handle: 0x0054
+ Threshold Handle: 0x0055
+
+Handle 0x0058, DMI type 29, 22 bytes
+Electrical Current Probe
+ Description: DEF
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x0059, DMI type 36, 16 bytes
+Management Device Threshold Data
+
+Handle 0x005A, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0045
+ Component Handle: 0x0057
+ Threshold Handle: 0x0055
+
+Handle 0x005B, DMI type 29, 22 bytes
+Electrical Current Probe
+ Description: GHI
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x005C, DMI type 36, 16 bytes
+Management Device Threshold Data
+
+Handle 0x005D, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0045
+ Component Handle: 0x005A
+ Threshold Handle: 0x0055
+
+Handle 0x005E, DMI type 39, 22 bytes
+System Power Supply
+ Power Unit Group: 1
+ Location: To Be Filled By O.E.M.
+ Name: To Be Filled By O.E.M.
+ Manufacturer: To Be Filled By O.E.M.
+ Serial Number: To Be Filled By O.E.M.
+ Asset Tag: To Be Filled By O.E.M.
+ Model Part Number: To Be Filled By O.E.M.
+ Revision: To Be Filled By O.E.M.
+ Max Power Capacity: Unknown
+ Status: Not Present
+ Type: <OUT OF SPEC>
+ Input Voltage Range Switching: <OUT OF SPEC>
+ Plugged: Yes
+ Hot Replaceable: No
+ Input Voltage Probe Handle: 0x0035
+ Cooling Device Handle: 0x003B
+ Input Current Probe Handle: 0x0041
+
+Handle 0x005F, DMI type 41, 11 bytes
+Onboard Device
+ Reference Designation: Onboard IGD
+ Type: Video
+ Status: Enabled
+ Type Instance: 1
+ Bus Address: 0000:00:02.0
+
+Handle 0x0060, DMI type 41, 11 bytes
+Onboard Device
+ Reference Designation: Onboard LAN
+ Type: Ethernet
+ Status: Enabled
+ Type Instance: 1
+ Bus Address: 0000:00:19.0
+
+Handle 0x0061, DMI type 41, 11 bytes
+Onboard Device
+ Reference Designation: Onboard 1394
+ Type: Other
+ Status: Enabled
+ Type Instance: 1
+ Bus Address: 0000:03:1c.2
+
+Handle 0x0062, DMI type 139, 54 bytes
+OEM-specific Type
+ Header and Data:
+ 8B 36 62 00 00 1E 8C 00 00 44 9A AD 04 04 32 55
+ F8 00 A2 02 A1 00 40 63 43 10 FE 81 03 DF 40 B2
+ 00 20 00 73 3C 10 08 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 01
+ Strings:
+ V1394GUID
+
+Handle 0x0063, DMI type 13, 22 bytes
+BIOS Language Information
+ Installable Languages: 6
+ eng
+ fra
+ ger
+ chs
+ chi
+ jpn
+ Currently Installed Language: eng
+
+Handle 0x0064, DMI type 127, 4 bytes
+End Of Table
+
diff --git a/t/inventory/generic/dmidecode/memory.t b/t/inventory/generic/dmidecode/memory.t
index 41ab935..37067c5 100755
--- a/t/inventory/generic/dmidecode/memory.t
+++ b/t/inventory/generic/dmidecode/memory.t
@@ -930,6 +930,46 @@ my %tests = (
CAPACITY => '2048'
}
],
+ 'windows-7' => [
+ {
+ NUMSLOTS => 1,
+ MEMORYCORRECTION => 'None',
+ SERIALNUMBER => 'SerNum0',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'Unknown',
+ SPEED => 'Unknown',
+ CAPTION => 'DIMM0'
+ },
+ {
+ NUMSLOTS => 2,
+ SERIALNUMBER => '0000000',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => '1600 MHz',
+ CAPTION => 'DIMM1',
+ MEMORYCORRECTION => 'None',
+ DESCRIPTION => 'DIMM (None)',
+ CAPACITY => '2048'
+ },
+ {
+ NUMSLOTS => 3,
+ MEMORYCORRECTION => 'None',
+ SERIALNUMBER => 'SerNum2',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'Unknown',
+ SPEED => 'Unknown',
+ CAPTION => 'DIMM2'
+ },
+ {
+ NUMSLOTS => 4,
+ SERIALNUMBER => '0000000',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => '1600 MHz',
+ CAPTION => 'DIMM3',
+ MEMORYCORRECTION => 'None',
+ DESCRIPTION => 'DIMM (None)',
+ CAPACITY => '2048'
+ }
+ ],
'windows-hyperV' => [
{
NUMSLOTS => 1,
diff --git a/t/tools/generic.t b/t/tools/generic.t
index 6961deb..7ae2863 100755
--- a/t/tools/generic.t
+++ b/t/tools/generic.t
@@ -4805,6 +4805,869 @@ my %dmidecode_tests = (
'Ending Address' => '0x000FFFFFFFF'
}
]
+ },
+ 'windows-7' => {
+ '35' => [
+ {
+ 'Threshold Handle' => '0x0035',
+ 'Management Device Handle' => '0x0034',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x0034'
+ },
+ {
+ 'Threshold Handle' => '0x0038',
+ 'Management Device Handle' => '0x0034',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x0037'
+ },
+ {
+ 'Threshold Handle' => '0x003B',
+ 'Management Device Handle' => '0x0034',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x003A'
+ },
+ {
+ 'Threshold Handle' => '0x003E',
+ 'Management Device Handle' => '0x0034',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x003D'
+ },
+ {
+ 'Threshold Handle' => '0x003E',
+ 'Management Device Handle' => '0x0034',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x0040'
+ },
+ {
+ 'Threshold Handle' => '0x0046',
+ 'Management Device Handle' => '0x0045',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x0045'
+ },
+ {
+ 'Threshold Handle' => '0x0049',
+ 'Management Device Handle' => '0x0045',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x0048'
+ },
+ {
+ 'Threshold Handle' => '0x004C',
+ 'Management Device Handle' => '0x0045',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x004B'
+ },
+ {
+ 'Threshold Handle' => '0x004F',
+ 'Management Device Handle' => '0x0045',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x004E'
+ },
+ {
+ 'Threshold Handle' => '0x0052',
+ 'Management Device Handle' => '0x0045',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x0051'
+ },
+ {
+ 'Threshold Handle' => '0x0055',
+ 'Management Device Handle' => '0x0045',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x0054'
+ },
+ {
+ 'Threshold Handle' => '0x0055',
+ 'Management Device Handle' => '0x0045',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x0057'
+ },
+ {
+ 'Threshold Handle' => '0x0055',
+ 'Management Device Handle' => '0x0045',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x005A'
+ }
+ ],
+ '32' => [
+ {
+ 'Status' => 'No errors detected'
+ }
+ ],
+ '11' => [
+ {
+ 'String 1' => 'To Be Filled By O.E.M.'
+ }
+ ],
+ '7' => [
+ {
+ 'Error Correction Type' => 'None',
+ 'Installed Size' => '256 kB',
+ 'Operational Mode' => 'Write Back',
+ 'Socket Designation' => 'L1-Cache',
+ 'Configuration' => 'Enabled, Not Socketed, Level 1',
+ 'Installed SRAM Type' => 'Other',
+ 'System Type' => 'Unified',
+ 'Speed' => 'Unknown',
+ 'Associativity' => '8-way Set-associative',
+ 'Location' => 'Internal',
+ 'Maximum Size' => '256 kB'
+ },
+ {
+ 'Error Correction Type' => 'None',
+ 'Installed Size' => '1024 kB',
+ 'Operational Mode' => 'Varies With Memory Address',
+ 'Socket Designation' => 'L2-Cache',
+ 'Configuration' => 'Enabled, Not Socketed, Level 2',
+ 'Installed SRAM Type' => 'Other',
+ 'System Type' => 'Unified',
+ 'Speed' => 'Unknown',
+ 'Associativity' => '8-way Set-associative',
+ 'Location' => 'Internal',
+ 'Maximum Size' => '1024 kB'
+ },
+ {
+ 'Error Correction Type' => 'None',
+ 'Installed Size' => '6144 kB',
+ 'Operational Mode' => 'Unknown',
+ 'Socket Designation' => 'L3-Cache',
+ 'Configuration' => 'Disabled, Not Socketed, Level 3',
+ 'Installed SRAM Type' => 'Other',
+ 'System Type' => 'Unified',
+ 'Speed' => 'Unknown',
+ 'Associativity' => 'Other',
+ 'Location' => 'Internal',
+ 'Maximum Size' => '6144 kB'
+ }
+ ],
+ '26' => [
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'LM78A'
+ },
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'LM78B'
+ },
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'LM78B'
+ }
+ ],
+ '17' => [
+ {
+ 'Part Number' => 'Array1_PartNumber0',
+ 'Serial Number' => 'SerNum0',
+ 'Type Detail' => 'Synchronous',
+ 'Set' => 'None',
+ 'Type' => 'Unknown',
+ 'Speed' => 'Unknown',
+ 'Size' => 'No Module Installed',
+ 'Manufacturer' => 'Manufacturer0',
+ 'Bank Locator' => 'BANK0',
+ 'Array Handle' => '0x0024',
+ 'Data Width' => '64 bits',
+ 'Total Width' => '64 bits',
+ 'Asset Tag' => 'AssetTagNum0',
+ 'Rank' => 'Unknown',
+ 'Locator' => 'DIMM0',
+ 'Error Information Handle' => 'No Error',
+ 'Form Factor' => 'DIMM'
+ },
+ {
+ 'Part Number' => 'F3-12800CL9-2GBXL',
+ 'Serial Number' => '0000000',
+ 'Type Detail' => 'Synchronous',
+ 'Set' => 'None',
+ 'Type' => '<OUT OF SPEC>',
+ 'Speed' => '1600 MHz',
+ 'Size' => '2048 MB',
+ 'Manufacturer' => 'Undefined',
+ 'Bank Locator' => 'BANK1',
+ 'Array Handle' => '0x0024',
+ 'Data Width' => '64 bits',
+ 'Total Width' => '64 bits',
+ 'Asset Tag' => 'AssetTagNum1',
+ 'Rank' => '2',
+ 'Locator' => 'DIMM1',
+ 'Error Information Handle' => 'No Error',
+ 'Form Factor' => 'DIMM'
+ },
+ {
+ 'Part Number' => 'Array1_PartNumber2',
+ 'Serial Number' => 'SerNum2',
+ 'Type Detail' => 'Synchronous',
+ 'Set' => 'None',
+ 'Type' => 'Unknown',
+ 'Speed' => 'Unknown',
+ 'Size' => 'No Module Installed',
+ 'Manufacturer' => 'Manufacturer2',
+ 'Bank Locator' => 'BANK2',
+ 'Array Handle' => '0x0024',
+ 'Data Width' => '64 bits',
+ 'Total Width' => '64 bits',
+ 'Asset Tag' => 'AssetTagNum2',
+ 'Rank' => 'Unknown',
+ 'Locator' => 'DIMM2',
+ 'Error Information Handle' => 'No Error',
+ 'Form Factor' => 'DIMM'
+ },
+ {
+ 'Part Number' => 'F3-12800CL9-2GBXL',
+ 'Serial Number' => '0000000',
+ 'Type Detail' => 'Synchronous',
+ 'Set' => 'None',
+ 'Type' => '<OUT OF SPEC>',
+ 'Speed' => '1600 MHz',
+ 'Size' => '2048 MB',
+ 'Manufacturer' => 'Undefined',
+ 'Bank Locator' => 'BANK3',
+ 'Array Handle' => '0x0024',
+ 'Data Width' => '64 bits',
+ 'Total Width' => '64 bits',
+ 'Asset Tag' => 'AssetTagNum3',
+ 'Rank' => '2',
+ 'Locator' => 'DIMM3',
+ 'Error Information Handle' => 'No Error',
+ 'Form Factor' => 'DIMM'
+ }
+ ],
+ '2' => [
+ {
+ 'Product Name' => 'P8P67',
+ 'Chassis Handle' => '0x0003',
+ 'Serial Number' => 'MT7013K30709271',
+ 'Asset Tag' => 'To be filled by O.E.M.',
+ 'Version' => 'Rev 1.xx',
+ 'Type' => 'Motherboard',
+ 'Manufacturer' => 'ASUSTeK Computer INC.',
+ 'Location In Chassis' => 'To be filled by O.E.M.',
+ 'Contained Object Handles' => '0'
+ }
+ ],
+ '1' => [
+ {
+ 'Product Name' => 'System Product Name',
+ 'Family' => 'To be filled by O.E.M.',
+ 'Serial Number' => 'System Serial Number',
+ 'Version' => 'System Version',
+ 'Wake-up Type' => 'Power Switch',
+ 'SKU Number' => 'To be filled by O.E.M.',
+ 'Manufacturer' => 'System manufacturer',
+ 'UUID' => '1E00E6E0-008C-4400-9AAD-F46D04972D3E'
+ }
+ ],
+ '18' => [
+ {
+ 'Memory Array Address' => 'Unknown',
+ 'Vendor Syndrome' => 'Unknown',
+ 'Granularity' => 'Unknown',
+ 'Type' => 'OK',
+ 'Resolution' => 'Unknown',
+ 'Device Address' => 'Unknown',
+ 'Operation' => 'Unknown'
+ },
+ {
+ 'Memory Array Address' => 'Unknown',
+ 'Vendor Syndrome' => 'Unknown',
+ 'Granularity' => 'Unknown',
+ 'Type' => 'OK',
+ 'Resolution' => 'Unknown',
+ 'Device Address' => 'Unknown',
+ 'Operation' => 'Unknown'
+ },
+ {
+ 'Memory Array Address' => 'Unknown',
+ 'Vendor Syndrome' => 'Unknown',
+ 'Granularity' => 'Unknown',
+ 'Type' => 'OK',
+ 'Resolution' => 'Unknown',
+ 'Device Address' => 'Unknown',
+ 'Operation' => 'Unknown'
+ },
+ {
+ 'Memory Array Address' => 'Unknown',
+ 'Vendor Syndrome' => 'Unknown',
+ 'Granularity' => 'Unknown',
+ 'Type' => 'OK',
+ 'Resolution' => 'Unknown',
+ 'Device Address' => 'Unknown',
+ 'Operation' => 'Unknown'
+ },
+ {
+ 'Memory Array Address' => 'Unknown',
+ 'Vendor Syndrome' => 'Unknown',
+ 'Granularity' => 'Unknown',
+ 'Type' => 'OK',
+ 'Resolution' => 'Unknown',
+ 'Device Address' => 'Unknown',
+ 'Operation' => 'Unknown'
+ }
+ ],
+ '0' => [
+ {
+ 'Runtime Size' => '64 kB',
+ 'Version' => '1503',
+ 'BIOS Revision' => '4.6',
+ 'Address' => '0xF0000',
+ 'ROM Size' => '4096 kB',
+ 'Release Date' => '03/10/2011',
+ 'Vendor' => 'American Megatrends Inc.'
+ }
+ ],
+ '13' => [
+ {
+ 'Installable Languages' => '6',
+ 'Currently Installed Language' => 'eng'
+ }
+ ],
+ '16' => [
+ {
+ 'Number Of Devices' => '4',
+ 'Error Correction Type' => 'None',
+ 'Error Information Handle' => 'No Error',
+ 'Location' => 'System Board Or Motherboard',
+ 'Maximum Capacity' => '32 GB',
+ 'Use' => 'System Memory'
+ }
+ ],
+ '29' => [
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'ABC'
+ },
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'DEF'
+ },
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'GHI'
+ }
+ ],
+ '27' => [
+ {
+ 'Temperature Probe Handle' => '0x0038',
+ 'Type' => '<OUT OF SPEC>',
+ 'Status' => '<OUT OF SPEC>',
+ 'OEM-specific Information' => '0x00000000',
+ 'Cooling Unit Group' => '1',
+ 'Nominal Speed' => 'Unknown Or Non-rotating'
+ },
+ {
+ 'Temperature Probe Handle' => '0x0038',
+ 'Type' => '<OUT OF SPEC>',
+ 'Status' => '<OUT OF SPEC>',
+ 'OEM-specific Information' => '0x00000000',
+ 'Cooling Unit Group' => '1',
+ 'Nominal Speed' => 'Unknown Or Non-rotating'
+ },
+ {
+ 'Temperature Probe Handle' => '0x004C',
+ 'Type' => '<OUT OF SPEC>',
+ 'Status' => '<OUT OF SPEC>',
+ 'OEM-specific Information' => '0x00000000',
+ 'Cooling Unit Group' => '1',
+ 'Nominal Speed' => 'Unknown Or Non-rotating'
+ },
+ {
+ 'Temperature Probe Handle' => '0x0052',
+ 'Type' => '<OUT OF SPEC>',
+ 'Status' => '<OUT OF SPEC>',
+ 'OEM-specific Information' => '0x00000000',
+ 'Cooling Unit Group' => '1',
+ 'Nominal Speed' => 'Unknown Or Non-rotating'
+ }
+ ],
+ '39' => [
+ {
+ 'Input Voltage Probe Handle' => '0x0035',
+ 'Revision' => 'To Be Filled By O.E.M.',
+ 'Input Voltage Range Switching' => '<OUT OF SPEC>',
+ 'Serial Number' => 'To Be Filled By O.E.M.',
+ 'Hot Replaceable' => 'No',
+ 'Asset Tag' => 'To Be Filled By O.E.M.',
+ 'Input Current Probe Handle' => '0x0041',
+ 'Type' => '<OUT OF SPEC>',
+ 'Model Part Number' => 'To Be Filled By O.E.M.',
+ 'Cooling Device Handle' => '0x003B',
+ 'Plugged' => 'Yes',
+ 'Power Unit Group' => '1',
+ 'Location' => 'To Be Filled By O.E.M.',
+ 'Manufacturer' => 'To Be Filled By O.E.M.',
+ 'Name' => 'To Be Filled By O.E.M.',
+ 'Max Power Capacity' => 'Unknown'
+ },
+ {
+ 'Input Voltage Probe Handle' => '0x0035',
+ 'Revision' => 'To Be Filled By O.E.M.',
+ 'Input Voltage Range Switching' => '<OUT OF SPEC>',
+ 'Serial Number' => 'To Be Filled By O.E.M.',
+ 'Hot Replaceable' => 'No',
+ 'Asset Tag' => 'To Be Filled By O.E.M.',
+ 'Input Current Probe Handle' => '0x0041',
+ 'Type' => '<OUT OF SPEC>',
+ 'Model Part Number' => 'To Be Filled By O.E.M.',
+ 'Cooling Device Handle' => '0x003B',
+ 'Plugged' => 'Yes',
+ 'Power Unit Group' => '1',
+ 'Location' => 'To Be Filled By O.E.M.',
+ 'Manufacturer' => 'To Be Filled By O.E.M.',
+ 'Name' => 'To Be Filled By O.E.M.',
+ 'Max Power Capacity' => 'Unknown'
+ }
+ ],
+ '28' => [
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'LM78A'
+ },
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'LM78B'
+ },
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'LM78B'
+ }
+ ],
+ '36' => [
+ {
+ 'Lower Non-critical Threshold' => '1',
+ 'Upper Critical Threshold' => '4',
+ 'Lower Critical Threshold' => '3',
+ 'Lower Non-recoverable Threshold' => '5',
+ 'Upper Non-recoverable Threshold' => '6',
+ 'Upper Non-critical Threshold' => '2'
+ },
+ {
+ 'Lower Non-critical Threshold' => '1',
+ 'Upper Critical Threshold' => '4',
+ 'Lower Critical Threshold' => '3',
+ 'Lower Non-recoverable Threshold' => '5',
+ 'Upper Non-recoverable Threshold' => '6',
+ 'Upper Non-critical Threshold' => '2'
+ },
+ {
+ 'Lower Non-critical Threshold' => '1',
+ 'Upper Critical Threshold' => '4',
+ 'Lower Critical Threshold' => '3',
+ 'Lower Non-recoverable Threshold' => '5',
+ 'Upper Non-recoverable Threshold' => '6',
+ 'Upper Non-critical Threshold' => '2'
+ },
+ {
+ 'Lower Non-critical Threshold' => '1',
+ 'Upper Critical Threshold' => '4',
+ 'Lower Critical Threshold' => '3',
+ 'Lower Non-recoverable Threshold' => '5',
+ 'Upper Non-recoverable Threshold' => '6',
+ 'Upper Non-critical Threshold' => '2'
+ },
+ {
+ 'Lower Non-critical Threshold' => '7',
+ 'Upper Critical Threshold' => '10',
+ 'Lower Critical Threshold' => '8',
+ 'Lower Non-recoverable Threshold' => '11',
+ 'Upper Non-recoverable Threshold' => '12',
+ 'Upper Non-critical Threshold' => '8'
+ },
+ {
+ 'Lower Non-critical Threshold' => '13',
+ 'Upper Critical Threshold' => '16',
+ 'Lower Critical Threshold' => '15',
+ 'Lower Non-recoverable Threshold' => '17',
+ 'Upper Non-recoverable Threshold' => '18',
+ 'Upper Non-critical Threshold' => '14'
+ },
+ {
+ 'Lower Non-critical Threshold' => '1',
+ 'Upper Critical Threshold' => '4',
+ 'Lower Critical Threshold' => '3',
+ 'Lower Non-recoverable Threshold' => '5',
+ 'Upper Non-recoverable Threshold' => '6',
+ 'Upper Non-critical Threshold' => '2'
+ },
+ {
+ 'Lower Non-critical Threshold' => '1',
+ 'Upper Critical Threshold' => '4',
+ 'Lower Critical Threshold' => '3',
+ 'Lower Non-recoverable Threshold' => '5',
+ 'Upper Non-recoverable Threshold' => '6',
+ 'Upper Non-critical Threshold' => '2'
+ },
+ {
+ 'Lower Non-critical Threshold' => '1',
+ 'Upper Critical Threshold' => '4',
+ 'Lower Critical Threshold' => '3',
+ 'Lower Non-recoverable Threshold' => '5',
+ 'Upper Non-recoverable Threshold' => '6',
+ 'Upper Non-critical Threshold' => '2'
+ },
+ {
+ 'Lower Non-critical Threshold' => '1',
+ 'Upper Critical Threshold' => '4',
+ 'Lower Critical Threshold' => '3',
+ 'Lower Non-recoverable Threshold' => '5',
+ 'Upper Non-recoverable Threshold' => '6',
+ 'Upper Non-critical Threshold' => '2'
+ }
+ ],
+ '3' => [
+ {
+ 'Height' => 'Unspecified',
+ 'Power Supply State' => 'Safe',
+ 'Serial Number' => 'Chassis Serial Number',
+ 'Thermal State' => 'Safe',
+ 'Contained Elements' => '0',
+ 'Asset Tag' => 'Asset-1234567890',
+ 'Type' => 'Desktop',
+ 'Version' => 'Chassis Version',
+ 'Number Of Power Cords' => '1',
+ 'Security Status' => 'None',
+ 'OEM Information' => '0x00000000',
+ 'Manufacturer' => 'Chassis Manufacture',
+ 'Boot-up State' => 'Safe'
+ }
+ ],
+ '9' => [
+ {
+ 'Bus Address' => '0000:00:01.0',
+ 'ID' => '1',
+ 'Length' => 'Short',
+ 'Designation' => 'PCIEX16_1',
+ 'Type' => '32-bit PCI Express',
+ 'Current Usage' => 'In Use'
+ },
+ {
+ 'Bus Address' => '0000:00:1c.3',
+ 'ID' => '2',
+ 'Length' => 'Short',
+ 'Designation' => 'PCIEX1_1',
+ 'Type' => '32-bit PCI Express',
+ 'Current Usage' => 'In Use'
+ },
+ {
+ 'Bus Address' => '0000:00:1c.4',
+ 'ID' => '3',
+ 'Length' => 'Short',
+ 'Designation' => 'PCIEX1_2',
+ 'Type' => '32-bit PCI Express',
+ 'Current Usage' => 'In Use'
+ },
+ {
+ 'Bus Address' => '0000:00:1c.6',
+ 'ID' => '4',
+ 'Length' => 'Short',
+ 'Designation' => 'PCI1',
+ 'Type' => '32-bit PCI',
+ 'Current Usage' => 'In Use'
+ }
+ ],
+ '41' => [
+ {
+ 'Bus Address' => '0000:00:02.0',
+ 'Type' => 'Video',
+ 'Reference Designation' => ' Onboard IGD',
+ 'Type Instance' => '1',
+ 'Status' => 'Enabled'
+ },
+ {
+ 'Bus Address' => '0000:00:19.0',
+ 'Type' => 'Ethernet',
+ 'Reference Designation' => ' Onboard LAN',
+ 'Type Instance' => '1',
+ 'Status' => 'Enabled'
+ },
+ {
+ 'Bus Address' => '0000:03:1c.2',
+ 'Type' => 'Other',
+ 'Reference Designation' => ' Onboard 1394',
+ 'Type Instance' => '1',
+ 'Status' => 'Enabled'
+ }
+ ],
+ '12' => [
+ {
+ 'Option 1' => 'To Be Filled By O.E.M.'
+ }
+ ],
+ '20' => [
+ {
+ 'Memory Array Mapped Address Handle' => '0x0026',
+ 'Range Size' => '2 GB',
+ 'Physical Device Handle' => '0x002A',
+ 'Partition Row Position' => '1',
+ 'Starting Address' => '0x00000000000',
+ 'Ending Address' => '0x0007FFFFFFF'
+ },
+ {
+ 'Memory Array Mapped Address Handle' => '0x0026',
+ 'Range Size' => '2 GB',
+ 'Physical Device Handle' => '0x0030',
+ 'Partition Row Position' => '1',
+ 'Starting Address' => '0x00080000000',
+ 'Ending Address' => '0x000FFFFFFFF'
+ }
+ ],
+ '8' => [
+ {
+ 'External Reference Designator' => 'PS/2 Keyboard',
+ 'Port Type' => 'Keyboard Port',
+ 'External Connector Type' => 'PS/2',
+ 'Internal Reference Designator' => 'PS/2 Keyboard',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'External Reference Designator' => 'USB9_10',
+ 'Port Type' => 'USB',
+ 'External Connector Type' => 'Access Bus (USB)',
+ 'Internal Reference Designator' => 'USB9_10',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'External Reference Designator' => 'USB11_12',
+ 'Port Type' => 'USB',
+ 'External Connector Type' => 'Access Bus (USB)',
+ 'Internal Reference Designator' => 'USB11_12',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'External Reference Designator' => 'GbE LAN',
+ 'Port Type' => 'Network Port',
+ 'External Connector Type' => 'RJ-45',
+ 'Internal Reference Designator' => 'GbE LAN',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'External Reference Designator' => 'AUDIO',
+ 'Port Type' => 'Audio Port',
+ 'External Connector Type' => 'Other',
+ 'Internal Reference Designator' => 'AUDIO',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'Port Type' => 'SATA',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'SATA1',
+ 'Internal Connector Type' => 'SAS/SATA Plug Receptacle'
+ },
+ {
+ 'Port Type' => 'SATA',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'SATA2',
+ 'Internal Connector Type' => 'SAS/SATA Plug Receptacle'
+ },
+ {
+ 'Port Type' => 'SATA',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'SATA3',
+ 'Internal Connector Type' => 'SAS/SATA Plug Receptacle'
+ },
+ {
+ 'Port Type' => 'SATA',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'SATA4',
+ 'Internal Connector Type' => 'SAS/SATA Plug Receptacle'
+ },
+ {
+ 'Port Type' => 'SATA',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'SATA5',
+ 'Internal Connector Type' => 'SAS/SATA Plug Receptacle'
+ },
+ {
+ 'Port Type' => 'SATA',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'SATA6',
+ 'Internal Connector Type' => 'SAS/SATA Plug Receptacle'
+ },
+ {
+ 'Port Type' => 'USB',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'USB1_2',
+ 'Internal Connector Type' => 'Access Bus (USB)'
+ },
+ {
+ 'Port Type' => 'USB',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'USB3_4',
+ 'Internal Connector Type' => 'Access Bus (USB)'
+ },
+ {
+ 'Port Type' => 'USB',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'USB5_6',
+ 'Internal Connector Type' => 'Access Bus (USB)'
+ },
+ {
+ 'Port Type' => 'USB',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'USB7_8',
+ 'Internal Connector Type' => 'Access Bus (USB)'
+ },
+ {
+ 'Port Type' => 'Audio Port',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'AAFP',
+ 'Internal Connector Type' => 'Mini Jack (headphones)'
+ },
+ {
+ 'Port Type' => 'Other',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'CPU_FAN',
+ 'Internal Connector Type' => 'Other'
+ },
+ {
+ 'Port Type' => 'Other',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'CHA_FAN1',
+ 'Internal Connector Type' => 'Other'
+ },
+ {
+ 'Port Type' => 'Other',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'PWR_FAN',
+ 'Internal Connector Type' => 'Other'
+ },
+ {
+ 'Port Type' => 'Other',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'PATA_IDE',
+ 'Internal Connector Type' => 'On Board IDE'
+ },
+ {
+ 'Port Type' => 'SATA',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'F_ESATA',
+ 'Internal Connector Type' => 'SAS/SATA Plug Receptacle'
+ }
+ ],
+ '4' => [
+ {
+ 'ID' => 'A7 06 02 00 FF FB EB BF',
+ 'Socket Designation' => 'LGA1155',
+ 'Part Number' => 'To Be Filled By O.E.M.',
+ 'Status' => 'Populated, Enabled',
+ 'Max Speed' => '3800 MHz',
+ 'Serial Number' => 'To Be Filled By O.E.M.',
+ 'Family' => 'Core 2 Duo',
+ 'Current Speed' => '2800 MHz',
+ 'L2 Cache Handle' => '0x0006',
+ 'Type' => 'Central Processor',
+ 'Signature' => 'Type 0, Family 6, Model 42, Stepping 7',
+ 'L1 Cache Handle' => '0x0005',
+ 'Manufacturer' => 'Intel',
+ 'Core Enabled' => '1',
+ 'External Clock' => '100 MHz',
+ 'Asset Tag' => 'To Be Filled By O.E.M.',
+ 'Version' => 'Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz',
+ 'Core Count' => '4',
+ 'Upgrade' => 'Other',
+ 'Voltage' => '1.0 V',
+ 'L3 Cache Handle' => '0x0007'
+ }
+ ],
+ '34' => [
+ {
+ 'Type' => 'LM78',
+ 'Address Type' => 'I/O Port',
+ 'Address' => '0x00000000',
+ 'Description' => 'LM78-1'
+ },
+ {
+ 'Type' => 'LM78',
+ 'Address Type' => 'I/O Port',
+ 'Address' => '0x00000000',
+ 'Description' => '2'
+ }
+ ],
+ '10' => [
+ {
+ 'Type' => 'Ethernet',
+ 'Status' => 'Enabled',
+ 'Description' => 'Onboard Ethernet'
+ }
+ ],
+ '19' => [
+ {
+ 'Range Size' => '4 GB',
+ 'Partition Width' => '0',
+ 'Starting Address' => '0x00000000000',
+ 'Physical Array Handle' => '0x0024',
+ 'Ending Address' => '0x000FFFFFFFF'
+ }
+ ]
}
);
@@ -5071,6 +5934,30 @@ my %cpu_tests = (
MANUFACTURER => 'GenuineIntel',
CORE => undef
}
+ ],
+ 'windows-xppro' => [
+ {
+ ID => '76 06 01 00 FF FB EB BF',
+ NAME => 'Core 2 Duo',
+ EXTERNAL_CLOCK => '266',
+ SPEED => '2534',
+ THREAD => '2',
+ SERIAL => undef,
+ MANUFACTURER => 'Intel',
+ CORE => '2'
+ }
+ ],
+ 'windows-7' => [
+ {
+ ID => 'A7 06 02 00 FF FB EB BF',
+ NAME => 'Core 2 Duo',
+ EXTERNAL_CLOCK => '100',
+ SPEED => '2800',
+ THREAD => undef,
+ SERIAL => 'To Be Filled By O.E.M.',
+ MANUFACTURER => 'Intel',
+ CORE => '4'
+ }
]
);
@@ -5301,12 +6188,13 @@ foreach my $test (keys %dmidecode_tests) {
my $file = "resources/generic/dmidecode/$test";
my $infos = getDmidecodeInfos(file => $file);
is_deeply($infos, $dmidecode_tests{$test}, "$test dmidecode parsing");
+ use Data::Dumper;
}
foreach my $test (keys %cpu_tests) {
my $file = "resources/generic/dmidecode/$test";
my @cpus = getCpusFromDmidecode(file => $file);
- is_deeply(\@cpus, $cpu_tests{$test}, "$test dmidecode cpu extraction");
+ is_deeply(\@cpus, $cpu_tests{$test}, "$test dmidecode cpu extraction") or print Dumper(\@cpus);
}
foreach my $test (keys %lspci_tests) {
================================================================
Commit: 68eaf8368066b2580a5eebfc6e64888b8c7a5db9
https://github.com/fusinv/fusioninventory-agent/commit/68eaf8368066b2580a5eebfc6e64888b8c7a5db9
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M t/inventory/generic/dmidecode/memory.t
Log Message:
-----------
cosmetics
diff --git a/t/inventory/generic/dmidecode/memory.t b/t/inventory/generic/dmidecode/memory.t
index 37067c5..b2c713b 100755
--- a/t/inventory/generic/dmidecode/memory.t
+++ b/t/inventory/generic/dmidecode/memory.t
@@ -10,901 +10,901 @@ use FusionInventory::Agent::Task::Inventory::Input::Generic::Dmidecode::Memory;
my %tests = (
'freebsd-6.2' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'DIMM (None)',
- SPEED => 'Unknown',
- TYPE => 'Unknown',
- CAPTION => 'A0',
- CAPACITY => '512',
+ NUMSLOTS => 1,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'DIMM (None)',
+ SPEED => 'Unknown',
+ TYPE => 'Unknown',
+ CAPTION => 'A0',
+ CAPACITY => '512',
MEMORYCORRECTION => 'None'
}
],
'freebsd-8.1' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => '1A1541FC',
- DESCRIPTION => 'SODIMM (None)',
- TYPE => '<OUT OF SPEC>',
- SPEED => '1067 MHz',
- CAPACITY => '2048',
- CAPTION => 'Bottom - Slot 1',
+ NUMSLOTS => 1,
+ SERIALNUMBER => '1A1541FC',
+ DESCRIPTION => 'SODIMM (None)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => '1067 MHz',
+ CAPACITY => '2048',
+ CAPTION => 'Bottom - Slot 1',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => '1A554239',
- DESCRIPTION => 'SODIMM (None)',
- TYPE => '<OUT OF SPEC>',
- SPEED => '1067 MHz',
- CAPACITY => '2048',
- CAPTION => 'Bottom - Slot 2',
+ NUMSLOTS => 2,
+ SERIALNUMBER => '1A554239',
+ DESCRIPTION => 'SODIMM (None)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => '1067 MHz',
+ CAPACITY => '2048',
+ CAPTION => 'Bottom - Slot 2',
MEMORYCORRECTION => 'None'
}
],
'linux-1' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => 'SerNum00',
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DDR2',
- SPEED => '1066 MHz',
- CAPACITY => '1024',
- CAPTION => 'DIMM0',
+ NUMSLOTS => 1,
+ SERIALNUMBER => 'SerNum00',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DDR2',
+ SPEED => '1066 MHz',
+ CAPACITY => '1024',
+ CAPTION => 'DIMM0',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => 'SerNum01',
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DDR2',
- SPEED => '1066 MHz',
- CAPACITY => '1024',
- CAPTION => 'DIMM1',
+ NUMSLOTS => 2,
+ SERIALNUMBER => 'SerNum01',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DDR2',
+ SPEED => '1066 MHz',
+ CAPACITY => '1024',
+ CAPTION => 'DIMM1',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => 'SerNum02',
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DDR2',
- SPEED => '1066 MHz',
- CAPACITY => '1024',
- CAPTION => 'DIMM2',
+ NUMSLOTS => 3,
+ SERIALNUMBER => 'SerNum02',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DDR2',
+ SPEED => '1066 MHz',
+ CAPACITY => '1024',
+ CAPTION => 'DIMM2',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => 'SerNum03',
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DDR2',
- SPEED => '1066 MHz',
- CAPACITY => '1024',
- CAPTION => 'DIMM3',
+ NUMSLOTS => 4,
+ SERIALNUMBER => 'SerNum03',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DDR2',
+ SPEED => '1066 MHz',
+ CAPACITY => '1024',
+ CAPTION => 'DIMM3',
MEMORYCORRECTION => 'None'
}
],
'linux-2.6' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => '02132010',
- DESCRIPTION => 'DIMM (None)',
- SPEED => '533 MHz (1.9 ns)',
- TYPE => 'DDR',
- CAPTION => 'DIMM_A',
- CAPACITY => '1024',
+ NUMSLOTS => 1,
+ SERIALNUMBER => '02132010',
+ DESCRIPTION => 'DIMM (None)',
+ SPEED => '533 MHz (1.9 ns)',
+ TYPE => 'DDR',
+ CAPTION => 'DIMM_A',
+ CAPACITY => '1024',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => '02132216',
- DESCRIPTION => 'DIMM (None)',
- SPEED => '533 MHz (1.9 ns)',
- TYPE => 'DDR',
- CAPTION => 'DIMM_B',
- CAPACITY => '1024',
+ NUMSLOTS => 2,
+ SERIALNUMBER => '02132216',
+ DESCRIPTION => 'DIMM (None)',
+ SPEED => '533 MHz (1.9 ns)',
+ TYPE => 'DDR',
+ CAPTION => 'DIMM_B',
+ CAPACITY => '1024',
MEMORYCORRECTION => 'None'
}
],
'openbsd-3.7' => [
{
- NUMSLOTS => 1,
- TYPE => 'Unknown'
+ NUMSLOTS => 1,
+ TYPE => 'Unknown'
},
{
- NUMSLOTS => 2,
- TYPE => 'DIMM SDRAM',
- CAPACITY => '64'
+ NUMSLOTS => 2,
+ TYPE => 'DIMM SDRAM',
+ CAPACITY => '64'
},
{
- NUMSLOTS => 3,
- TYPE => 'Unknown'
+ NUMSLOTS => 3,
+ TYPE => 'Unknown'
},
{
- NUMSLOTS => 4,
- TYPE => 'DIMM SDRAM',
- CAPACITY => '64'
+ NUMSLOTS => 4,
+ TYPE => 'DIMM SDRAM',
+ CAPACITY => '64'
},
{
- NUMSLOTS => 5,
- TYPE => 'DIMM SDRAM',
- CAPACITY => '64'
+ NUMSLOTS => 5,
+ TYPE => 'DIMM SDRAM',
+ CAPACITY => '64'
},
{
- NUMSLOTS => 6,
- TYPE => 'Unknown'
+ NUMSLOTS => 6,
+ TYPE => 'Unknown'
},
{
- NUMSLOTS => 7,
- TYPE => 'Unknown'
+ NUMSLOTS => 7,
+ TYPE => 'Unknown'
}
],
'openbsd-3.8' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => '50075483',
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => '400 MHz (2.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM1_A',
- CAPACITY => '512',
+ NUMSLOTS => 1,
+ SERIALNUMBER => '50075483',
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => '400 MHz (2.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM1_A',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => '500355A1',
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => '400 MHz (2.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM1_B',
- CAPACITY => '512',
+ NUMSLOTS => 2,
+ SERIALNUMBER => '500355A1',
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => '400 MHz (2.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM1_B',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => '400 MHz (2.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM2_A',
+ NUMSLOTS => 3,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => '400 MHz (2.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM2_A',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => '400 MHz (2.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM2_B',
+ NUMSLOTS => 4,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => '400 MHz (2.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM2_B',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 5,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => '400 MHz (2.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM3_A',
+ NUMSLOTS => 5,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => '400 MHz (2.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM3_A',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 6,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => '400 MHz (2.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM3_B',
+ NUMSLOTS => 6,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => '400 MHz (2.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM3_B',
MEMORYCORRECTION => 'Multi-bit ECC'
}
],
'openbsd-4.5' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR',
- SPEED => '266 MHz',
- CAPACITY => '512',
- CAPTION => 'DIMM A',
+ NUMSLOTS => 1,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR',
+ SPEED => '266 MHz',
+ CAPACITY => '512',
+ CAPTION => 'DIMM A',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR',
- SPEED => '266 MHz',
- CAPTION => 'DIMM B',
+ NUMSLOTS => 2,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR',
+ SPEED => '266 MHz',
+ CAPTION => 'DIMM B',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR',
- SPEED => '266 MHz',
- CAPTION => 'DIMM C',
+ NUMSLOTS => 3,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR',
+ SPEED => '266 MHz',
+ CAPTION => 'DIMM C',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR',
- SPEED => '266 MHz',
- CAPTION => 'DIMM D',
+ NUMSLOTS => 4,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR',
+ SPEED => '266 MHz',
+ CAPTION => 'DIMM D',
MEMORYCORRECTION => 'Multi-bit ECC'
}
],
'rhel-2.1' => [
{
- NUMSLOTS => 1,
- TYPE => 'ECC DIMM SDRAM',
- CAPACITY => '256'
+ NUMSLOTS => 1,
+ TYPE => 'ECC DIMM SDRAM',
+ CAPACITY => '256'
},
{
- NUMSLOTS => 2,
- TYPE => 'UNKNOWN'
+ NUMSLOTS => 2,
+ TYPE => 'UNKNOWN'
}
],
'rhel-3.4' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => '460360BB',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- SPEED => '400 MHz (2.5 ns)',
- TYPE => 'DDR',
- CAPTION => 'DIMM 1',
- CAPACITY => '512',
+ NUMSLOTS => 1,
+ SERIALNUMBER => '460360BB',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ SPEED => '400 MHz (2.5 ns)',
+ TYPE => 'DDR',
+ CAPTION => 'DIMM 1',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => '460360E8',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- SPEED => '400 MHz (2.5 ns)',
- TYPE => 'DDR',
- CAPTION => 'DIMM 2',
- CAPACITY => '512',
+ NUMSLOTS => 2,
+ SERIALNUMBER => '460360E8',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ SPEED => '400 MHz (2.5 ns)',
+ TYPE => 'DDR',
+ CAPTION => 'DIMM 2',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Single-bit ECC'
}
],
'rhel-4.3' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => undef,
- TYPE => 'DDR',
- CAPTION => 'DIMM1',
- CAPACITY => '512',
+ NUMSLOTS => 1,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => undef,
+ TYPE => 'DDR',
+ CAPTION => 'DIMM1',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => undef,
- TYPE => 'DDR',
- CAPTION => 'DIMM2',
- CAPACITY => '512',
+ NUMSLOTS => 2,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => undef,
+ TYPE => 'DDR',
+ CAPTION => 'DIMM2',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => undef,
- TYPE => 'DDR',
- CAPTION => 'DIMM3',
- CAPACITY => '512',
+ NUMSLOTS => 3,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => undef,
+ TYPE => 'DDR',
+ CAPTION => 'DIMM3',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => undef,
- TYPE => 'DDR',
- CAPTION => 'DIMM4',
- CAPACITY => '512',
+ NUMSLOTS => 4,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => undef,
+ TYPE => 'DDR',
+ CAPTION => 'DIMM4',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Multi-bit ECC'
}
],
'rhel-4.6' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => undef,
- DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
- SPEED => '667 MHz (1.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM 1A',
- CAPACITY => '512',
+ NUMSLOTS => 1,
+ SERIALNUMBER => undef,
+ DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
+ SPEED => '667 MHz (1.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM 1A',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => undef,
- DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
- SPEED => '667 MHz (1.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM 2B',
- CAPACITY => '1024',
+ NUMSLOTS => 2,
+ SERIALNUMBER => undef,
+ DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
+ SPEED => '667 MHz (1.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM 2B',
+ CAPACITY => '1024',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => undef,
- DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
- SPEED => '667 MHz (1.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM 3C',
- CAPACITY => '1024',
+ NUMSLOTS => 3,
+ SERIALNUMBER => undef,
+ DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
+ SPEED => '667 MHz (1.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM 3C',
+ CAPACITY => '1024',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => undef,
- DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
- SPEED => 'Unknown',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM 4D',
+ NUMSLOTS => 4,
+ SERIALNUMBER => undef,
+ DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
+ SPEED => 'Unknown',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM 4D',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 5,
- SERIALNUMBER => undef,
- DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
- SPEED => '667 MHz (1.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM 5A',
- CAPACITY => '512',
+ NUMSLOTS => 5,
+ SERIALNUMBER => undef,
+ DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
+ SPEED => '667 MHz (1.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM 5A',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 6,
- SERIALNUMBER => undef,
- DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
- SPEED => '667 MHz (1.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM 6B',
- CAPACITY => '1024',
+ NUMSLOTS => 6,
+ SERIALNUMBER => undef,
+ DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
+ SPEED => '667 MHz (1.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM 6B',
+ CAPACITY => '1024',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 7,
- SERIALNUMBER => undef,
- DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
- SPEED => '667 MHz (1.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM 7C',
- CAPACITY => '1024',
+ NUMSLOTS => 7,
+ SERIALNUMBER => undef,
+ DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
+ SPEED => '667 MHz (1.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM 7C',
+ CAPACITY => '1024',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 8,
- SERIALNUMBER => undef,
- DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
- SPEED => 'Unknown',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM 8D',
+ NUMSLOTS => 8,
+ SERIALNUMBER => undef,
+ DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
+ SPEED => 'Unknown',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM 8D',
MEMORYCORRECTION => 'Single-bit ECC'
}
],
'hp-dl180' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => '94D657D7',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => '1333 MHz (0.8 ns)',
- CAPACITY => '2048',
- CAPTION => 'PROC 1 DIMM 2A',
+ NUMSLOTS => 1,
+ SERIALNUMBER => '94D657D7',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => '1333 MHz (0.8 ns)',
+ CAPACITY => '2048',
+ CAPTION => 'PROC 1 DIMM 2A',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => 'SerNum01',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 1 DIMM 1D',
+ NUMSLOTS => 2,
+ SERIALNUMBER => 'SerNum01',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 1 DIMM 1D',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => '93D657D7',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => '1333 MHz (0.8 ns)',
- CAPACITY => '2048',
- CAPTION => 'PROC 1 DIMM 4B',
+ NUMSLOTS => 3,
+ SERIALNUMBER => '93D657D7',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => '1333 MHz (0.8 ns)',
+ CAPACITY => '2048',
+ CAPTION => 'PROC 1 DIMM 4B',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => 'SerNum03',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 1 DIMM 3E',
+ NUMSLOTS => 4,
+ SERIALNUMBER => 'SerNum03',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 1 DIMM 3E',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 5,
- SERIALNUMBER => 'SerNum04',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 1 DIMM 6C',
+ NUMSLOTS => 5,
+ SERIALNUMBER => 'SerNum04',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 1 DIMM 6C',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 6,
- SERIALNUMBER => 'SerNum05',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 1 DIMM 5F',
+ NUMSLOTS => 6,
+ SERIALNUMBER => 'SerNum05',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 1 DIMM 5F',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 7,
- SERIALNUMBER => 'SerNum06',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 2 DIMM 2A',
+ NUMSLOTS => 7,
+ SERIALNUMBER => 'SerNum06',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 2 DIMM 2A',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 8,
- SERIALNUMBER => 'SerNum07',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 2 DIMM 1D',
+ NUMSLOTS => 8,
+ SERIALNUMBER => 'SerNum07',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 2 DIMM 1D',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 9,
- SERIALNUMBER => 'SerNum08',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 2 DIMM 4B',
+ NUMSLOTS => 9,
+ SERIALNUMBER => 'SerNum08',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 2 DIMM 4B',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 10,
- SERIALNUMBER => 'SerNum09',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 2 DIMM 3E',
+ NUMSLOTS => 10,
+ SERIALNUMBER => 'SerNum09',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 2 DIMM 3E',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 11,
- SERIALNUMBER => 'SerNum10',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 2 DIMM 6C',
+ NUMSLOTS => 11,
+ SERIALNUMBER => 'SerNum10',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 2 DIMM 6C',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 12,
- SERIALNUMBER => 'SerNum11',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 2 DIMM 5F',
+ NUMSLOTS => 12,
+ SERIALNUMBER => 'SerNum11',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 2 DIMM 5F',
MEMORYCORRECTION => 'Single-bit ECC'
}
],
'S3000AHLX' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => '0x750174F7',
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DDR2',
- SPEED => '533 MHz (1.9 ns)',
- CAPACITY => '1024',
- CAPTION => 'J8J1',
+ NUMSLOTS => 1,
+ SERIALNUMBER => '0x750174F7',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DDR2',
+ SPEED => '533 MHz (1.9 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'J8J1',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => '0x9DCCE4ED',
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DDR2',
- SPEED => '533 MHz (1.9 ns)',
- CAPACITY => '2048',
- CAPTION => 'J8J2',
+ NUMSLOTS => 2,
+ SERIALNUMBER => '0x9DCCE4ED',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DDR2',
+ SPEED => '533 MHz (1.9 ns)',
+ CAPACITY => '2048',
+ CAPTION => 'J8J2',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => '0x750174FF',
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DDR2',
- SPEED => '533 MHz (1.9 ns)',
- CAPACITY => '1024',
- CAPTION => 'J9J1',
+ NUMSLOTS => 3,
+ SERIALNUMBER => '0x750174FF',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DDR2',
+ SPEED => '533 MHz (1.9 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'J9J1',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => 'NO DIMM',
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DDR2',
- SPEED => 'Unknown',
- CAPTION => 'J9J2',
+ NUMSLOTS => 4,
+ SERIALNUMBER => 'NO DIMM',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DDR2',
+ SPEED => 'Unknown',
+ CAPTION => 'J9J2',
MEMORYCORRECTION => 'None'
}
],
'S5000VSA' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR2',
- SPEED => '667 MHz (1.5 ns)',
- CAPACITY => '1024',
- CAPTION => 'ONBOARD DIMM_A1',
+ NUMSLOTS => 1,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR2',
+ SPEED => '667 MHz (1.5 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'ONBOARD DIMM_A1',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR2',
- SPEED => '667 MHz (1.5 ns)',
- CAPACITY => '1024',
- CAPTION => 'ONBOARD DIMM_A2',
+ NUMSLOTS => 2,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR2',
+ SPEED => '667 MHz (1.5 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'ONBOARD DIMM_A2',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR2',
- SPEED => '667 MHz (1.5 ns)',
- CAPACITY => '1024',
- CAPTION => 'ONBOARD DIMM_A3',
+ NUMSLOTS => 3,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR2',
+ SPEED => '667 MHz (1.5 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'ONBOARD DIMM_A3',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR2',
- SPEED => '667 MHz (1.5 ns)',
- CAPACITY => '1024',
- CAPTION => 'ONBOARD DIMM_A4',
+ NUMSLOTS => 4,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR2',
+ SPEED => '667 MHz (1.5 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'ONBOARD DIMM_A4',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 5,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR2',
- SPEED => '667 MHz (1.5 ns)',
- CAPACITY => '1024',
- CAPTION => 'ONBOARD DIMM_B1',
+ NUMSLOTS => 5,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR2',
+ SPEED => '667 MHz (1.5 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'ONBOARD DIMM_B1',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 6,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR2',
- SPEED => '667 MHz (1.5 ns)',
- CAPACITY => '1024',
- CAPTION => 'ONBOARD DIMM_B2',
+ NUMSLOTS => 6,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR2',
+ SPEED => '667 MHz (1.5 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'ONBOARD DIMM_B2',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 7,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR2',
- SPEED => '667 MHz (1.5 ns)',
- CAPACITY => '1024',
- CAPTION => 'ONBOARD DIMM_B3',
+ NUMSLOTS => 7,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR2',
+ SPEED => '667 MHz (1.5 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'ONBOARD DIMM_B3',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 8,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR2',
- SPEED => '667 MHz (1.5 ns)',
- CAPACITY => '1024',
- CAPTION => 'ONBOARD DIMM_B4',
+ NUMSLOTS => 8,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR2',
+ SPEED => '667 MHz (1.5 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'ONBOARD DIMM_B4',
MEMORYCORRECTION => 'Multi-bit ECC'
}
],
'vmware' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPACITY => '2048',
- CAPTION => 'RAM slot #0',
+ NUMSLOTS => 1,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPACITY => '2048',
+ CAPTION => 'RAM slot #0',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #1',
+ NUMSLOTS => 2,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #1',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #2',
+ NUMSLOTS => 3,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #2',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #3',
+ NUMSLOTS => 4,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #3',
MEMORYCORRECTION => 'None'
}
],
'vmware-esx' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPACITY => '2048',
- CAPTION => 'RAM slot #0',
+ NUMSLOTS => 1,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPACITY => '2048',
+ CAPTION => 'RAM slot #0',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #1',
+ NUMSLOTS => 2,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #1',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #2',
+ NUMSLOTS => 3,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #2',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #3',
+ NUMSLOTS => 4,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #3',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 5,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #4',
+ NUMSLOTS => 5,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #4',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 6,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #5',
+ NUMSLOTS => 6,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #5',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 7,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #6',
+ NUMSLOTS => 7,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #6',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 8,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #7',
+ NUMSLOTS => 8,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #7',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 9,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #8',
+ NUMSLOTS => 9,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #8',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 10,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #9',
+ NUMSLOTS => 10,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #9',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 11,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #10',
+ NUMSLOTS => 11,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #10',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 12,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #11',
+ NUMSLOTS => 12,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #11',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 13,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #12',
+ NUMSLOTS => 13,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #12',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 14,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #13',
+ NUMSLOTS => 14,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #13',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 15,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #14',
+ NUMSLOTS => 15,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #14',
MEMORYCORRECTION => 'None'
}
],
'vmware-esx-2.5' => [
{
- NUMSLOTS => 1,
- TYPE => 'EDO DIMM',
- CAPACITY => '1024'
+ NUMSLOTS => 1,
+ TYPE => 'EDO DIMM',
+ CAPACITY => '1024'
},
{
- NUMSLOTS => 2,
- TYPE => 'DIMM'
+ NUMSLOTS => 2,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 3,
- TYPE => 'DIMM'
+ NUMSLOTS => 3,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 4,
- TYPE => 'DIMM'
+ NUMSLOTS => 4,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 5,
- TYPE => 'DIMM'
+ NUMSLOTS => 5,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 6,
- TYPE => 'DIMM'
+ NUMSLOTS => 6,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 7,
- TYPE => 'DIMM'
+ NUMSLOTS => 7,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 8,
- TYPE => 'DIMM'
+ NUMSLOTS => 8,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 9,
- TYPE => 'DIMM'
+ NUMSLOTS => 9,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 10,
- TYPE => 'DIMM'
+ NUMSLOTS => 10,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 11,
- TYPE => 'DIMM'
+ NUMSLOTS => 11,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 12,
- TYPE => 'DIMM'
+ NUMSLOTS => 12,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 13,
- TYPE => 'DIMM'
+ NUMSLOTS => 13,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 14,
- TYPE => 'DIMM'
+ NUMSLOTS => 14,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 15,
- TYPE => 'DIMM'
+ NUMSLOTS => 15,
+ TYPE => 'DIMM'
}
],
'windows' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => undef,
- DESCRIPTION => 'SODIMM (None)',
- SPEED => 'Unknown',
- TYPE => 'SDRAM',
- CAPTION => 'DIMM 0',
- CAPACITY => '256',
+ NUMSLOTS => 1,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'SODIMM (None)',
+ SPEED => 'Unknown',
+ TYPE => 'SDRAM',
+ CAPTION => 'DIMM 0',
+ CAPACITY => '256',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => undef,
- DESCRIPTION => 'SODIMM (None)',
- SPEED => 'Unknown',
- TYPE => 'SDRAM',
- CAPTION => 'DIMM 1',
- CAPACITY => '512',
+ NUMSLOTS => 2,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'SODIMM (None)',
+ SPEED => 'Unknown',
+ TYPE => 'SDRAM',
+ CAPTION => 'DIMM 1',
+ CAPACITY => '512',
MEMORYCORRECTION => 'None'
}
],
@@ -972,643 +972,643 @@ my %tests = (
],
'windows-hyperV' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPACITY => '1024',
- CAPTION => 'M0',
+ NUMSLOTS => 1,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPACITY => '1024',
+ CAPTION => 'M0',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M1',
+ NUMSLOTS => 2,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M1',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M2',
+ NUMSLOTS => 3,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M2',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M3',
+ NUMSLOTS => 4,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M3',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 5,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M4',
+ NUMSLOTS => 5,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M4',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 6,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M5',
+ NUMSLOTS => 6,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M5',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 7,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M6',
+ NUMSLOTS => 7,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M6',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 8,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M7',
+ NUMSLOTS => 8,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M7',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 9,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M8',
+ NUMSLOTS => 9,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M8',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 10,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M9',
+ NUMSLOTS => 10,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M9',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 11,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M10',
+ NUMSLOTS => 11,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M10',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 12,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M11',
+ NUMSLOTS => 12,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M11',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 13,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M12',
+ NUMSLOTS => 13,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M12',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 14,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M13',
+ NUMSLOTS => 14,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M13',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 15,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M14',
+ NUMSLOTS => 15,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M14',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 16,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M15',
+ NUMSLOTS => 16,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M15',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 17,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M16',
+ NUMSLOTS => 17,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M16',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 18,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M17',
+ NUMSLOTS => 18,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M17',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 19,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M18',
+ NUMSLOTS => 19,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M18',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 20,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M19',
+ NUMSLOTS => 20,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M19',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 21,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M20',
+ NUMSLOTS => 21,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M20',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 22,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M21',
+ NUMSLOTS => 22,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M21',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 23,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M22',
+ NUMSLOTS => 23,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M22',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 24,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M23',
+ NUMSLOTS => 24,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M23',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 25,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M24',
+ NUMSLOTS => 25,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M24',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 26,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M25',
+ NUMSLOTS => 26,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M25',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 27,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M26',
+ NUMSLOTS => 27,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M26',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 28,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M27',
+ NUMSLOTS => 28,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M27',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 29,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M28',
+ NUMSLOTS => 29,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M28',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 30,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M29',
+ NUMSLOTS => 30,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M29',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 31,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M30',
+ NUMSLOTS => 31,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M30',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 32,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M31',
+ NUMSLOTS => 32,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M31',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 33,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M32',
+ NUMSLOTS => 33,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M32',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 34,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M33',
+ NUMSLOTS => 34,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M33',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 35,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M34',
+ NUMSLOTS => 35,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M34',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 36,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M35',
+ NUMSLOTS => 36,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M35',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 37,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M36',
+ NUMSLOTS => 37,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M36',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 38,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M37',
+ NUMSLOTS => 38,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M37',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 39,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M38',
+ NUMSLOTS => 39,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M38',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 40,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M39',
+ NUMSLOTS => 40,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M39',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 41,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M40',
+ NUMSLOTS => 41,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M40',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 42,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M41',
+ NUMSLOTS => 42,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M41',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 43,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M42',
+ NUMSLOTS => 43,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M42',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 44,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M43',
+ NUMSLOTS => 44,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M43',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 45,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M44',
+ NUMSLOTS => 45,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M44',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 46,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M45',
+ NUMSLOTS => 46,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M45',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 47,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M46',
+ NUMSLOTS => 47,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M46',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 48,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M47',
+ NUMSLOTS => 48,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M47',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 49,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M48',
+ NUMSLOTS => 49,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M48',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 50,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M49',
+ NUMSLOTS => 50,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M49',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 51,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M50',
+ NUMSLOTS => 51,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M50',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 52,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M51',
+ NUMSLOTS => 52,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M51',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 53,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M52',
+ NUMSLOTS => 53,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M52',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 54,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M53',
+ NUMSLOTS => 54,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M53',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 55,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M54',
+ NUMSLOTS => 55,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M54',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 56,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M55',
+ NUMSLOTS => 56,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M55',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 57,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M56',
+ NUMSLOTS => 57,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M56',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 58,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M57',
+ NUMSLOTS => 58,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M57',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 59,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M58',
+ NUMSLOTS => 59,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M58',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 60,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M59',
+ NUMSLOTS => 60,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M59',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 61,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M60',
+ NUMSLOTS => 61,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M60',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 62,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M61',
+ NUMSLOTS => 62,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M61',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 63,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M62',
+ NUMSLOTS => 63,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M62',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 64,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M63',
+ NUMSLOTS => 64,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M63',
MEMORYCORRECTION => 'None'
}
================================================================
Commit: af93ee7b60fcc229c8985ed801cc0c1b4da0bbc4
https://github.com/fusinv/fusioninventory-agent/commit/af93ee7b60fcc229c8985ed801cc0c1b4da0bbc4
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M t/FusionInventory/Test/Utils.pm
M t/inventory/windows/printers.t
Log Message:
-----------
move load_registry function into Test::Utils
diff --git a/t/FusionInventory/Test/Utils.pm b/t/FusionInventory/Test/Utils.pm
index 9041766..2b0df4f 100644
--- a/t/FusionInventory/Test/Utils.pm
+++ b/t/FusionInventory/Test/Utils.pm
@@ -10,6 +10,7 @@ use Socket;
our @EXPORT = qw(
test_port
mockGetWmiObjects
+ load_registry
);
sub test_port {
@@ -69,3 +70,58 @@ sub mockGetWmiObjects {
return @objects;
};
}
+
+sub load_registry {
+ my ($file) = @_;
+
+ my $root_offset;
+ my $root_key = {};
+ my $current_key;
+
+ open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
+
+ # this is a windows file
+ binmode $handle, ':encoding(UTF-16LE)';
+ local $INPUT_RECORD_SEPARATOR="\r\n";
+
+ while (my $line = <$handle>) {
+ chomp $line;
+
+ if ($line =~ /^ \[ ([^]]+) \] $/x) {
+ my $path = $1;
+ my @path = split(/\\/, $path);
+
+ if ($root_offset) {
+ splice @path, 0, $root_offset;
+ $current_key = $root_key;
+ foreach my $element (@path) {
+ my $key_path = $element . '/';
+
+ if (!defined $current_key->{$key_path}) {
+ my $new_key = {};
+ $current_key->{$key_path} = $new_key;
+ }
+
+ $current_key = $current_key->{$key_path};
+ }
+ } else {
+ $root_offset = scalar @path;
+ }
+ next;
+ }
+
+ if ($line =~ /^ " ([^"]+) " = dword:(\d+)/x) {
+ $current_key->{'/' . $1} = "0x$2";
+ next;
+ }
+
+ if ($line =~ /^ " ([^"]+) " = " ([^"]+) "/x) {
+ $current_key->{'/' . $1} = $2;
+ next;
+ }
+
+ }
+ close $handle;
+
+ return $root_key;
+}
diff --git a/t/inventory/windows/printers.t b/t/inventory/windows/printers.t
index 8199b06..8bec29f 100755
--- a/t/inventory/windows/printers.t
+++ b/t/inventory/windows/printers.t
@@ -2,10 +2,13 @@
use strict;
use warnings;
+use lib 't';
use English qw(-no_match_vars);
use Test::More;
+use FusionInventory::Test::Utils;
+
BEGIN {
# use mock modules for non-available ones
push @INC, 't/fake/windows' if $OSNAME ne 'MSWin32';
@@ -45,58 +48,3 @@ foreach my $test (keys %tests) {
is($serial, $tests{$test}->{$port}, "serial for printer $port");
}
}
-
-sub load_registry {
- my ($file) = @_;
-
- my $root_offset;
- my $root_key = {};
- my $current_key;
-
- open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
-
- # this is a windows file
- binmode $handle, ':encoding(UTF-16LE)';
- local $INPUT_RECORD_SEPARATOR="\r\n";
-
- while (my $line = <$handle>) {
- chomp $line;
-
- if ($line =~ /^ \[ ([^]]+) \] $/x) {
- my $path = $1;
- my @path = split(/\\/, $path);
-
- if ($root_offset) {
- splice @path, 0, $root_offset;
- $current_key = $root_key;
- foreach my $element (@path) {
- my $key_path = $element . '/';
-
- if (!defined $current_key->{$key_path}) {
- my $new_key = {};
- $current_key->{$key_path} = $new_key;
- }
-
- $current_key = $current_key->{$key_path};
- }
- } else {
- $root_offset = scalar @path;
- }
- next;
- }
-
- if ($line =~ /^ " ([^"]+) " = dword:(\d+)/x) {
- $current_key->{'/' . $1} = "0x$2";
- next;
- }
-
- if ($line =~ /^ " ([^"]+) " = " ([^"]+) "/x) {
- $current_key->{'/' . $1} = $2;
- next;
- }
-
- }
- close $handle;
-
- return $root_key;
-}
================================================================
Commit: 83f943e4181bd6cca54331d12aaac3778ee4ff16
https://github.com/fusinv/fusioninventory-agent/commit/83f943e4181bd6cca54331d12aaac3778ee4ff16
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
Log Message:
-----------
cosmetics
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
index 5ec74eb..58f6602 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
@@ -89,30 +89,36 @@ sub doInventory {
$inventory->setBios($bios);
- if (
- ($bios->{VERSION} && ($bios->{VERSION} eq 'VirtualBox'))
- ||
- ($bios->{MMODEL} && ($bios->{MMODEL} eq 'VirtualBox'))
- ) {
- $inventory->setHardware ({
- VMSYSTEM => 'VirtualBox'
- });
- } elsif (
- ($bios->{BIOSSERIAL} && ($bios->{BIOSSERIAL} =~ /VMware/i))
- ||
- ($bios->{SMODEL} && ($bios->{SMODEL} eq 'VirtualBox'))
- ) {
- $inventory->setHardware ({
- VMSYSTEM => 'VMware'
- });
- } elsif (
- ($bios->{SMANUFACTURER} eq 'Xen')
- ||
- ($bios->{BMANUFACTURER} eq 'Xen')
- ) {
- $inventory->setHardware ({
- VMSYSTEM => 'Xen'
- });
+ SWITCH: {
+ if (
+ ($bios->{VERSION} && $bios->{VERSION} eq 'VirtualBox') ||
+ ($bios->{MMODEL} && $bios->{MMODEL} eq 'VirtualBox')
+ ) {
+ $inventory->setHardware ({
+ VMSYSTEM => 'VirtualBox'
+ });
+ last SWITCH;
+ }
+
+ if (
+ ($bios->{BIOSSERIAL} && $bios->{BIOSSERIAL} =~ /VMware/i) ||
+ ($bios->{SMODEL} && $bios->{SMODEL} eq 'VirtualBox')
+ ) {
+ $inventory->setHardware ({
+ VMSYSTEM => 'VMware'
+ });
+ last SWITCH;
+ }
+
+ if (
+ ($bios->{SMANUFACTURER} && $bios->{SMANUFACTURER} eq 'Xen') ||
+ ($bios->{BMANUFACTURER} && $bios->{BMANUFACTURER} eq 'Xen')
+ ) {
+ $inventory->setHardware ({
+ VMSYSTEM => 'Xen'
+ });
+ last SWITCH;
+ }
}
}
================================================================
Commit: 76f4339662851a9daae5b69870a8a54b4cca1a82
https://github.com/fusinv/fusioninventory-agent/commit/76f4339662851a9daae5b69870a8a54b4cca1a82
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
Log Message:
-----------
split for testing purposes
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
index 117bc09..333231d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
@@ -25,10 +25,28 @@ sub doInventory {
my $inventory = $params{inventory};
my $logger = $params{logger};
- my @dmidecodeCpu = getCpusFromDmidecode();
+ my @cpus = _getCPUs($logger);
- my $vmsystem;
+ foreach my $cpu (@cpus) {
+ $inventory->addEntry(
+ section => 'CPUS',
+ entry => $cpu
+ );
+ }
+
+ if (any { $_->{NAME} =~ /QEMU/i } @cpus) {
+ $inventory->setHardware ({
+ VMSYSTEM => 'QEMU'
+ });
+ }
+}
+
+sub _getCPUs {
+ my ($logger) = @_;
+
+ my @dmidecodeCpu = getCpusFromDmidecode();
my $cpuId = 0;
+ my @cpus;
foreach my $object (getWmiObjects(
class => 'Win32_Processor',
@@ -79,7 +97,6 @@ sub doInventory {
$cpu->{NAME} =~ s/^\s+//;
$cpu->{NAME} =~ s/\s+$//;
- $vmsystem = "QEMU" if $cpu->{NAME} =~ /QEMU/i;
if ($cpu->{NAME} =~ /([\d\.]+)s*(GHZ)/i) {
$cpu->{SPEED} = {
@@ -89,19 +106,12 @@ sub doInventory {
}
}
- $inventory->addEntry(
- section => 'CPUS',
- entry => $cpu
- );
+ push @cpus, $cpu;
$cpuId++;
}
- if ($vmsystem) {
- $inventory->setHardware ({
- VMSYSTEM => $vmsystem
- });
- }
+ return @cpus;
}
1;
================================================================
Commit: 9fcd8bfb907ee4dce07f2955989319de43801b12
https://github.com/fusinv/fusioninventory-agent/commit/9fcd8bfb907ee4dce07f2955989319de43801b12
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Win32.pm
Log Message:
-----------
add a distinct getRegistryKey function
diff --git a/lib/FusionInventory/Agent/Tools/Win32.pm b/lib/FusionInventory/Agent/Tools/Win32.pm
index 1c49573..eaa0396 100644
--- a/lib/FusionInventory/Agent/Tools/Win32.pm
+++ b/lib/FusionInventory/Agent/Tools/Win32.pm
@@ -30,6 +30,7 @@ our @EXPORT = qw(
KEY_WOW64_64
KEY_WOW64_32
getRegistryValue
+ getRegistryKey
getWmiObjects
getLocalCodepage
);
@@ -96,7 +97,7 @@ sub getRegistryValue {
my (%params) = @_;
my ($root, $keyName, $valueName);
- if ($params{path} =~ /^(HKEY\S+?)\/(.*)\/([^\/.]*)/ ) {
+ if ($params{path} =~ /^(HKEY_\S+)\/(.+)\/([^\/]+)/ ) {
$root = $1;
$keyName = $2;
$valueName = $3;
@@ -107,20 +108,52 @@ sub getRegistryValue {
return;
}
- my $machKey = is64bit() ?
- $Registry->Open($root, { Access=> KEY_READ | KEY_WOW64_64 } ) : ## no critic (ProhibitBitwise)
- $Registry->Open($root, { Access=> KEY_READ } ) ;
+ my $key = _getRegistryKey(
+ logger => $params{logger},
+ root => $root,
+ keyName => $keyName
+ );
+ return $key->{"/$valueName"};
+}
+
+sub getRegistryKey {
+ my (%params) = @_;
+
+ my ($root, $keyName);
+ if ($params{path} =~ /^(HKEY_\S+)\/(.+)/ ) {
+ $root = $1;
+ $keyName = $2;
+ } else {
+ $params{logger}->error(
+ "Failed to parse '$params{path}'. Does it start with HKEY_?"
+ ) if $params{logger};
+ return;
+ }
+
+ return _getRegistryKey(
+ logger => $params{logger},
+ root => $root,
+ keyName => $keyName
+ );
+}
+
+sub _getRegistryKey {
+ my (%params) = @_;
- if (!$machKey) {
- $params{logger}->error("Can't open 'root': $EXTENDED_OS_ERROR")
- if $params{logger};
+ ## no critic (ProhibitBitwise)
+ my $rootKey = is64bit() ?
+ $Registry->Open($params{root}, { Access=> KEY_READ | KEY_WOW64_64 } ) :
+ $Registry->Open($params{root}, { Access=> KEY_READ } ) ;
+
+ if (!$rootKey) {
+ $params{logger}->error(
+ "Can't open $params{root} key: $EXTENDED_OS_ERROR"
+ ) if $params{logger};
return;
}
- my $key = $machKey->Open($keyName);
- my $value = $key->{$valueName};
+ my $key = $rootKey->Open($params{keyName});
- return if ref $value;
- return $value;
+ return $key;
}
1;
================================================================
Commit: 24d85a685400f5d6c2bcd0544ec0e6aa9e6d5cf9
https://github.com/fusinv/fusioninventory-agent/commit/24d85a685400f5d6c2bcd0544ec0e6aa9e6d5cf9
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
Log Message:
-----------
don't access registry directly, use dedicated function
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
index d74b45b..e07e9b7 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
@@ -4,11 +4,6 @@ use strict;
use warnings;
use English qw(-no_match_vars);
-use Win32::TieRegistry (
- Delimiter => '/',
- ArrayValues => 0,
- qw/KEY_READ/
-);
use FusionInventory::Agent::Tools::Win32;
@@ -52,6 +47,7 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
+ my $logger = $params{logger};
foreach my $object (getWmiObjects(
class => 'Win32_Printer',
@@ -76,7 +72,7 @@ sub doInventory {
$object->{VerticalResolution};
}
- $object->{Serial} = _getUSBPrinterSerial($object->{PortName})
+ $object->{Serial} = _getUSBPrinterSerial($object->{PortName}, $logger)
if $object->{PortName} && $object->{PortName} =~ /USB/;
$inventory->addEntry(
@@ -103,22 +99,24 @@ sub doInventory {
}
sub _getUSBPrinterSerial {
- my ($portName) = @_;
-
- my $machKey = $Registry->Open('LMachine', {
- Access => KEY_READ | KEY_WOW64_64 ## no critic (ProhibitBitwise)
- }) or die "Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR";
+ my ($portName, $logger) = @_;
# first, find the USB container ID for this printer
my $prefix = _getUSBPrefix(
- $machKey->{"SYSTEM/CurrentControlSet/Enum/USBPRINT"},
+ getRegistryKey(
+ path => "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/USBPRINT",
+ logger => $logger
+ ),
$portName
);
return unless $prefix;
# second, get the serial number from the ID container entry
my $serial = _getUSBSerial(
- $machKey->{"SYSTEM/CurrentControlSet/Enum/USB"},
+ getRegistryKey(
+ path => "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/USB",
+ logger => $logger
+ ),
$prefix
);
================================================================
Commit: 53fcf60d25874ce68fb645814dbcb026bebb4e18
https://github.com/fusinv/fusioninventory-agent/commit/53fcf60d25874ce68fb645814dbcb026bebb4e18
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
Log Message:
-----------
useless import
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
index 58f6602..b664c67 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
@@ -4,11 +4,6 @@ use strict;
use warnings;
use English qw(-no_match_vars);
-use Win32::TieRegistry (
- Delimiter => '/',
- ArrayValues => 0,
- qw/KEY_READ/
-);
use FusionInventory::Agent::Tools::Win32;
================================================================
Commit: ee55a455bca888d98a86fe2b53dac87b43cd3467
https://github.com/fusinv/fusioninventory-agent/commit/ee55a455bca888d98a86fe2b53dac87b43cd3467
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
Log Message:
-----------
access registry only once, using dedicated function
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
index 333231d..768d796 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
@@ -4,12 +4,6 @@ use strict;
use warnings;
use English qw(-no_match_vars);
-use Win32;
-use Win32::TieRegistry (
- Delimiter => '/',
- ArrayValues => 0,
- qw/KEY_READ/
-);
use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Win32;
@@ -44,7 +38,13 @@ sub doInventory {
sub _getCPUs {
my ($logger) = @_;
- my @dmidecodeCpu = getCpusFromDmidecode();
+ my @dmidecodeInfos = getCpusFromDmidecode();
+ # the CPU description in WMI is false, we use the registry instead
+ my $registryInfos = getRegistryKey(
+ path => "HKEY_LOCAL_MACHINE/Hardware/Description/System/CentralProcessor",
+ logger => $logger
+ );
+
my $cpuId = 0;
my @cpus;
@@ -53,22 +53,15 @@ sub _getCPUs {
properties => [ qw/NumberOfCores ProcessorId MaxClockSpeed/ ]
)) {
- # the CPU description in WMI is false, we use the registry instead
- # Hardware\Description\System\CentralProcessor\1
- # thank you Nicolas Richard
- my $registryInfo = getRegistryValue(
- path => "HKEY_LOCAL_MACHINE/Hardware/Description/System/CentralProcessor/$cpuId",
- logger => $logger
- );
-
- my $dmidecodeInfo = $dmidecodeCpu[$cpuId];
+ my $dmidecodeInfo = $dmidecodeInfos[$cpuId];
+ my $registryInfo = $registryInfos->{"$cpuId/"};
my $cpu = {
CORE => $dmidecodeInfo->{CORE} || $object->{NumberOfCores},
THREAD => $dmidecodeInfo->{THREAD},
- DESCRIPTION => $registryInfo->{Identifier},
- NAME => $registryInfo->{ProcessorNameString},
- MANUFACTURER => $registryInfo->{VendorIdentifier},
+ DESCRIPTION => $registryInfo->{'/Identifier'},
+ NAME => $registryInfo->{'/ProcessorNameString'},
+ MANUFACTURER => $registryInfo->{'/VendorIdentifier'},
SERIAL => $dmidecodeInfo->{SERIAL},
SPEED => $dmidecodeInfo->{SPEED} || $object->{MaxClockSpeed},
ID => $dmidecodeInfo->{ID} || $object->{ProcessorId}
================================================================
Commit: 71d081e74fc2584873fe4cf17100149936bfebad
https://github.com/fusinv/fusioninventory-agent/commit/71d081e74fc2584873fe4cf17100149936bfebad
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
A resources/win32/registry/7-CentralProcessor.reg
Log Message:
-----------
initial import
diff --git a/resources/win32/registry/7-CentralProcessor.reg b/resources/win32/registry/7-CentralProcessor.reg
new file mode 100644
index 0000000..1d34b8c
Binary files /dev/null and b/resources/win32/registry/7-CentralProcessor.reg differ
================================================================
Commit: f0ae793175dd9e4d9662efe0c4392b7b2044c570
https://github.com/fusinv/fusioninventory-agent/commit/f0ae793175dd9e4d9662efe0c4392b7b2044c570
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M t/FusionInventory/Test/Utils.pm
Log Message:
-----------
mock getRegistryKey too
diff --git a/t/FusionInventory/Test/Utils.pm b/t/FusionInventory/Test/Utils.pm
index 2b0df4f..0c82d26 100644
--- a/t/FusionInventory/Test/Utils.pm
+++ b/t/FusionInventory/Test/Utils.pm
@@ -10,6 +10,7 @@ use Socket;
our @EXPORT = qw(
test_port
mockGetWmiObjects
+ mockGetRegistryKey
load_registry
);
@@ -71,6 +72,19 @@ sub mockGetWmiObjects {
};
}
+sub mockGetRegistryKey {
+ my ($test) = @_;
+
+ return sub {
+ my (%params) = @_;
+
+ my $last_elt = (split(/\//, $params{path}))[-1];
+ my $file = "resources/win32/registry/$test-$last_elt.reg";
+ return load_registry($file);
+ };
+}
+
+
sub load_registry {
my ($file) = @_;
================================================================
Commit: 0452c419bfe0bb9535cd75935250978350490e48
https://github.com/fusinv/fusioninventory-agent/commit/0452c419bfe0bb9535cd75935250978350490e48
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
A t/inventory/windows/cpu.t
Log Message:
-----------
initial import
diff --git a/t/inventory/windows/cpu.t b/t/inventory/windows/cpu.t
new file mode 100755
index 0000000..f895342
--- /dev/null
+++ b/t/inventory/windows/cpu.t
@@ -0,0 +1,69 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use utf8;
+use lib 't';
+
+use English qw(-no_match_vars);
+use Test::More;
+use Test::MockModule;
+
+use FusionInventory::Test::Utils;
+
+BEGIN {
+ # use mock modules for non-available ones
+ push @INC, 't/fake/windows' if $OSNAME ne 'MSWin32';
+}
+
+use FusionInventory::Agent::Task::Inventory::Input::Win32::CPU;
+
+my %tests = (
+ 7 => [
+ {
+ ID => 'A7 06 02 00 FF FB EB BF',
+ NAME => 'Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz',
+ SERIAL => 'ToBeFilledByO.E.M.',
+ MANUFACTURER => 'Intel',
+ DESCRIPTION => 'x86 Family 6 Model 42 Stepping 7',
+ SPEED => '2800',
+ THREAD => undef,
+ CORE => '4'
+ }
+ ]
+);
+
+plan tests => scalar keys %tests;
+
+my $module = Test::MockModule->new(
+ 'FusionInventory::Agent::Task::Inventory::Input::Win32::CPU'
+);
+
+foreach my $test (keys %tests) {
+ $module->mock(
+ 'getWmiObjects',
+ mockGetWmiObjects($test)
+ );
+
+ $module->mock(
+ 'getCpusFromDmidecode',
+ sub {
+ return
+ FusionInventory::Agent::Tools::Generic::getCpusFromDmidecode(
+ file => "resources/generic/dmidecode/windows-$test"
+ );
+ }
+ );
+
+ $module->mock(
+ 'getRegistryKey',
+ mockGetRegistryKey($test)
+ );
+
+ my @cpus = FusionInventory::Agent::Task::Inventory::Input::Win32::CPU::_getCPUs();
+ is_deeply(
+ \@cpus,
+ $tests{$test},
+ "$test cpu"
+ );
+}
================================================================
Commit: 91cd73e0403266ba0360c12a13ae93448996de5a
https://github.com/fusinv/fusioninventory-agent/commit/91cd73e0403266ba0360c12a13ae93448996de5a
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M t/inventory/windows/printers.t
Log Message:
-----------
mock getRegistryKey directly
diff --git a/t/inventory/windows/printers.t b/t/inventory/windows/printers.t
index 8bec29f..ca6ba26 100755
--- a/t/inventory/windows/printers.t
+++ b/t/inventory/windows/printers.t
@@ -6,6 +6,7 @@ use lib 't';
use English qw(-no_match_vars);
use Test::More;
+use Test::MockModule;
use FusionInventory::Test::Utils;
@@ -38,13 +39,21 @@ foreach my $test (keys %tests) {
}
plan tests => $plan;
+my $module = Test::MockModule->new(
+ 'FusionInventory::Agent::Task::Inventory::Input::Win32::Printers'
+);
+
foreach my $test (keys %tests) {
- my $printKey = load_registry("resources/win32/registry/$test-USBPRINT.reg");
- my $usbKey = load_registry("resources/win32/registry/$test-USB.reg");
- foreach my $port (keys %{$tests{$test}}) {
- my $prefix = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBPrefix($printKey, $port);
- my $serial = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBSerial($usbKey, $prefix);
+ $module->mock(
+ 'getRegistryKey',
+ mockGetRegistryKey($test)
+ );
- is($serial, $tests{$test}->{$port}, "serial for printer $port");
+ foreach my $port (keys %{$tests{$test}}) {
+ is(
+ FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBPrinterSerial($port),
+ $tests{$test}->{$port},
+ "serial for printer $port"
+ );
}
}
================================================================
Commit: 580da47173663b1d548ad74834b13316648cb6ae
https://github.com/fusinv/fusioninventory-agent/commit/580da47173663b1d548ad74834b13316648cb6ae
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M t/FusionInventory/Test/Utils.pm
Log Message:
-----------
split mocking from parsing function
diff --git a/t/FusionInventory/Test/Utils.pm b/t/FusionInventory/Test/Utils.pm
index 0c82d26..9de910c 100644
--- a/t/FusionInventory/Test/Utils.pm
+++ b/t/FusionInventory/Test/Utils.pm
@@ -11,7 +11,6 @@ our @EXPORT = qw(
test_port
mockGetWmiObjects
mockGetRegistryKey
- load_registry
);
sub test_port {
@@ -37,39 +36,45 @@ sub mockGetWmiObjects {
my (%params) = @_;
my $file = "resources/win32/wmi/$test-$params{class}.wmi";
- open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
-
- # this is a windows file
- binmode $handle, ':encoding(UTF-16LE)';
- local $INPUT_RECORD_SEPARATOR="\r\n";
-
- # build a list of desired properties indexes
- my %properties = map { $_ => 1 } @{$params{properties}};
-
- my @objects;
- my $object;
- while (my $line = <$handle>) {
- chomp $line;
-
- if ($line =~ /^ (\w+) = (.+) $/x) {
- my $key = $1;
- my $value = $2;
- next unless $properties{$key};
- $value =~ s/&/&/g;
- $object->{$key} = $value;
- next;
- }
+ return loadWMIDump($file, $params{properties});
+ };
+}
- if ($line =~ /^$/) {
- push @objects, $object if $object;
- undef $object;
- next;
- }
+sub loadWMIDump {
+ my ($file, $properties) = @_;
+
+ open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
+
+ # this is a windows file
+ binmode $handle, ':encoding(UTF-16LE)';
+ local $INPUT_RECORD_SEPARATOR="\r\n";
+
+ # build a list of desired properties indexes
+ my %properties = map { $_ => 1 } @{$properties};
+
+ my @objects;
+ my $object;
+ while (my $line = <$handle>) {
+ chomp $line;
+
+ if ($line =~ /^ (\w+) = (.+) $/x) {
+ my $key = $1;
+ my $value = $2;
+ next unless $properties{$key};
+ $value =~ s/&/&/g;
+ $object->{$key} = $value;
+ next;
}
- close $handle;
- return @objects;
- };
+ if ($line =~ /^$/) {
+ push @objects, $object if $object;
+ undef $object;
+ next;
+ }
+ }
+ close $handle;
+
+ return @objects;
}
sub mockGetRegistryKey {
@@ -80,12 +85,11 @@ sub mockGetRegistryKey {
my $last_elt = (split(/\//, $params{path}))[-1];
my $file = "resources/win32/registry/$test-$last_elt.reg";
- return load_registry($file);
+ return loadRegistryDump($file);
};
}
-
-sub load_registry {
+sub loadRegistryDump {
my ($file) = @_;
my $root_offset;
================================================================
Commit: 6432160083ffab724d2f574e8246b22ec582a3c0
https://github.com/fusinv/fusioninventory-agent/commit/6432160083ffab724d2f574e8246b22ec582a3c0
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
Log Message:
-----------
fix comments
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
index e07e9b7..9db485d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
@@ -101,7 +101,7 @@ sub doInventory {
sub _getUSBPrinterSerial {
my ($portName, $logger) = @_;
- # first, find the USB container ID for this printer
+ # find the ParentIdPrefix value for the printer matching given portname
my $prefix = _getUSBPrefix(
getRegistryKey(
path => "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/USBPRINT",
@@ -111,7 +111,7 @@ sub _getUSBPrinterSerial {
);
return unless $prefix;
- # second, get the serial number from the ID container entry
+ # find the key name for the device matching given parentIdPrefix
my $serial = _getUSBSerial(
getRegistryKey(
path => "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/USB",
@@ -123,7 +123,6 @@ sub _getUSBPrinterSerial {
return $serial;
}
-# find the ParentIdPrefix value for the printer matching given portname
sub _getUSBPrefix {
my ($print, $portName) = @_;
@@ -151,7 +150,6 @@ sub _getUSBPrefix {
return;
}
-# find the key name for the device matching given parentIdPrefix
sub _getUSBSerial {
my ($usb, $prefix) = @_;
================================================================
Commit: eab879d17072ddc554d66db523a86e2b4ff61b12
https://github.com/fusinv/fusioninventory-agent/commit/eab879d17072ddc554d66db523a86e2b4ff61b12
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M Makefile.PL
Log Message:
-----------
sort test modules alphabetically
diff --git a/Makefile.PL b/Makefile.PL
index a5863a6..e2d1561 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -37,13 +37,13 @@ if ($OSNAME ne 'MSWin32') {
}
# test dependencies
-test_requires 'Test::More' => '0.93'; # subtest
-test_requires 'IPC::Run' => undef;
test_requires 'HTTP::Proxy' => undef;
test_requires 'HTTP::Server::Simple' => undef;
test_requires 'HTTP::Server::Simple::Authen' => undef;
test_requires 'IO::Capture::Stderr' => undef;
+test_requires 'IPC::Run' => undef;
test_requires 'Test::Exception' => undef;
+test_requires 'Test::More' => '0.93'; # subtest
test_requires 'YAML' => undef;
install_script 'fusioninventory-agent';
================================================================
Commit: 9344d82df697bf5980db1e8e09956adce8171e84
https://github.com/fusinv/fusioninventory-agent/commit/9344d82df697bf5980db1e8e09956adce8171e84
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M Makefile.PL
Log Message:
-----------
add Test::MockModule
diff --git a/Makefile.PL b/Makefile.PL
index e2d1561..f325069 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -43,6 +43,7 @@ test_requires 'HTTP::Server::Simple::Authen' => undef;
test_requires 'IO::Capture::Stderr' => undef;
test_requires 'IPC::Run' => undef;
test_requires 'Test::Exception' => undef;
+test_requires 'Test::MockModule' => undef;
test_requires 'Test::More' => '0.93'; # subtest
test_requires 'YAML' => undef;
================================================================
Commit: 53a6736565d8ccc85d7ebc1599d5ebd23c48f111
https://github.com/fusinv/fusioninventory-agent/commit/53a6736565d8ccc85d7ebc1599d5ebd23c48f111
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M t/inventory/windows/cpu.t
M t/inventory/windows/memory.t
M t/inventory/windows/printers.t
M t/inventory/windows/usb.t
Log Message:
-----------
better tests description
diff --git a/t/inventory/windows/cpu.t b/t/inventory/windows/cpu.t
index f895342..ef03d46 100755
--- a/t/inventory/windows/cpu.t
+++ b/t/inventory/windows/cpu.t
@@ -64,6 +64,6 @@ foreach my $test (keys %tests) {
is_deeply(
\@cpus,
$tests{$test},
- "$test cpu"
+ "$test sample"
);
}
diff --git a/t/inventory/windows/memory.t b/t/inventory/windows/memory.t
index 4192e95..3ff1983 100755
--- a/t/inventory/windows/memory.t
+++ b/t/inventory/windows/memory.t
@@ -52,7 +52,6 @@ my $module = Test::MockModule->new(
);
foreach my $test (keys %tests) {
- # redefine getWmiObjects function
$module->mock(
'getWmiObjects',
mockGetWmiObjects($test)
@@ -62,6 +61,6 @@ foreach my $test (keys %tests) {
is_deeply(
\@memories,
$tests{$test},
- "$test memory"
+ "$test sample"
);
}
diff --git a/t/inventory/windows/printers.t b/t/inventory/windows/printers.t
index ca6ba26..f890c4d 100755
--- a/t/inventory/windows/printers.t
+++ b/t/inventory/windows/printers.t
@@ -53,7 +53,7 @@ foreach my $test (keys %tests) {
is(
FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBPrinterSerial($port),
$tests{$test}->{$port},
- "serial for printer $port"
+ "$test sample, $port printer"
);
}
}
diff --git a/t/inventory/windows/usb.t b/t/inventory/windows/usb.t
index 85300c7..4312095 100755
--- a/t/inventory/windows/usb.t
+++ b/t/inventory/windows/usb.t
@@ -96,7 +96,6 @@ my $module = Test::MockModule->new(
);
foreach my $test (keys %tests) {
- # redefine getWmiObjects function
$module->mock(
'getWmiObjects',
mockGetWmiObjects($test)
@@ -106,6 +105,6 @@ foreach my $test (keys %tests) {
is_deeply(
\@devices,
$tests{$test},
- "$test USB devices list"
+ "$test sample"
);
}
================================================================
Commit: 2bef74b1cbcc141ec7ddc8b4b245f5f738c59e22
https://github.com/fusinv/fusioninventory-agent/commit/2bef74b1cbcc141ec7ddc8b4b245f5f738c59e22
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
A resources/bsd/fstab/freebsd-1
A t/inventory/bsd/storages.t
Log Message:
-----------
initial import
diff --git a/resources/bsd/fstab/freebsd-1 b/resources/bsd/fstab/freebsd-1
new file mode 100644
index 0000000..41bfd9a
--- /dev/null
+++ b/resources/bsd/fstab/freebsd-1
@@ -0,0 +1,5 @@
+# Device Mountpoint FStype Options Dump Pass#
+/dev/da0s1b none swap sw 0 0
+/dev/da0s1a / ufs rw 1 1
+/dev/da0s1d /usr ufs rw 2 2
+/dev/acd0 /cdrom cd9660 ro,noauto 0 0
diff --git a/t/inventory/bsd/storages.t b/t/inventory/bsd/storages.t
new file mode 100755
index 0000000..feb6f3e
--- /dev/null
+++ b/t/inventory/bsd/storages.t
@@ -0,0 +1,33 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use FusionInventory::Agent::Task::Inventory::Input::BSD::Storages;
+
+my %tests = (
+ 'freebsd-1' => [
+ {
+ 'DESCRIPTION' => 'da0s1b'
+ },
+ {
+ 'DESCRIPTION' => 'da0s1a'
+ },
+ {
+ 'DESCRIPTION' => 'da0s1d'
+ },
+ {
+ 'DESCRIPTION' => 'acd0'
+ }
+ ]
+);
+
+plan tests => scalar keys %tests;
+
+foreach my $test (keys %tests) {
+ my $file = "resources/bsd/fstab/$test";
+ my @results = FusionInventory::Agent::Task::Inventory::Input::BSD::Storages::_getDevicesFromFstab(file => $file);
+ is_deeply(\@results, $tests{$test}, $test);
+}
================================================================
Commit: 94ec4c2342968a442e7313a70bbe22781b07d49b
https://github.com/fusinv/fusioninventory-agent/commit/94ec4c2342968a442e7313a70bbe22781b07d49b
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm
Log Message:
-----------
isolate parsing for testing purposes
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm
index 1da4c35..5ccb884 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm
@@ -16,16 +16,7 @@ sub doInventory {
my $logger = $params{logger};
# get a list of devices from /etc/fstab
- my $handle = getFileHandle(file => '/etc/fstab', logger => $logger);
- return unless $handle;
-
- my (@devices, %seen);
- while (my $line = <$handle>) {
- next unless $line =~ m{/^/dev/(\S+)};
- next if $seen{$1}++;
- push @devices, { DESCRIPTION => $1 };
- }
- close $handle;
+ my @devices = _getDevicesFromFstab();
# parse dmesg
my @lines = getAllLines(
@@ -60,4 +51,24 @@ sub doInventory {
}
}
+sub _getDevicesFromFstab {
+ my (%params) = (
+ file => '/etc/fstab',
+ @_
+ );
+
+ my $handle = getFileHandle(%params);
+ return unless $handle;
+
+ my (@devices, %seen);
+ while (my $line = <$handle>) {
+ next unless $line =~ m{/^/dev/(\S+)};
+ next if $seen{$1}++;
+ push @devices, { DESCRIPTION => $1 };
+ }
+ close $handle;
+
+ return @devices;
+}
+
1;
================================================================
Commit: 607b2207a388d8c87a78ad2e324616945b87acca
https://github.com/fusinv/fusioninventory-agent/commit/607b2207a388d8c87a78ad2e324616945b87acca
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm
Log Message:
-----------
fix regexp
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm
index 5ccb884..e024296 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm
@@ -62,7 +62,7 @@ sub _getDevicesFromFstab {
my (@devices, %seen);
while (my $line = <$handle>) {
- next unless $line =~ m{/^/dev/(\S+)};
+ next unless $line =~ m{^/dev/(\S+)};
next if $seen{$1}++;
push @devices, { DESCRIPTION => $1 };
}
================================================================
Commit: 39f87ead622d564c64e4f11712be3e81290776a6
https://github.com/fusinv/fusioninventory-agent/commit/39f87ead622d564c64e4f11712be3e81290776a6
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M README
Log Message:
-----------
out of topic
diff --git a/README b/README
index 754f87c..70d3950 100644
--- a/README
+++ b/README
@@ -58,12 +58,6 @@ The available workaround:
System-specific informations
----------------------------
-
-On Solaris, Sun Studio seems to be needed to build the dependency. The
-generated Makefile needs gmake to be executed. The default installation will
-install the binary in /usr/perl5/5.XXXXX/bin, set your $PATH variable according
-to that.
-
On Solaris/SPARC, you must install sneep and record the Serial Number with it.
Download it from http://www.sun.com/download/products.xml?id=4304155a.
================================================================
Commit: 9b21653d60dd929c0ddcb4c2aeed808c5030e473
https://github.com/fusinv/fusioninventory-agent/commit/9b21653d60dd929c0ddcb4c2aeed808c5030e473
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M README
Log Message:
-----------
documentation update
diff --git a/README b/README
index 70d3950..de519d3 100644
--- a/README
+++ b/README
@@ -72,10 +72,10 @@ They are two different ways to run the agent:
- as a permanent process, staying in memory permanently (daemon under Unix,
service under Windows)
-In the first case, the agent execution scheduling is completly controlled by
-the agent, through a dedicated system, such as cron under Unix, or XXX under
-Windows. In second case, the agent execution scheduling is server-controlled,
-as the agent runs regulary according to a parameter initially set in its
+In the first case, the agent execution scheduling is controlled from local
+system, through cron under Unix, or scheduled tasks under Windows. In second
+case, the agent execution scheduling is controlled from GLPI server, as the
+agent runs regulary according to a parameter initially set in its
configuration (delaytime), overrided by the server at the first connection
(PROLOG_FREQ). Additionaly, the server may also initiate additional
out-of-schedule executions by sending HTTP requests if the web interface is
================================================================
Commit: 004fb32f1388b69eab7a07b5a99bfb5c38277054
https://github.com/fusinv/fusioninventory-agent/commit/004fb32f1388b69eab7a07b5a99bfb5c38277054
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages.pm
Log Message:
-----------
cosmetics
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages.pm
index d0733bb..1b01862 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages.pm
@@ -106,15 +106,13 @@ sub _getDescription {
# detected as USB by udev
# TODO maybe we should trust udev detection by default?
- return "USB" if (defined ($description) && $description =~ /usb/i);
+ return "USB" if ($description && $description =~ /usb/i);
if ($name =~ /^s/) { # /dev/sd* are SCSI _OR_ SATA
if (
- ($manufacturer && ($manufacturer =~ /ATA/))
- ||
- ($serialnumber && ($serialnumber =~ /ATA/))
- ||
- ($description && ($description =~ /ATA/))
+ ($manufacturer && $manufacturer =~ /ATA/) ||
+ ($serialnumber && $serialnumber =~ /ATA/) ||
+ ($description && $description =~ /ATA/)
) {
return "SATA";
} else {
================================================================
Commit: a6229d0d217f17d0206b8333dbc5fbec20aada09
https://github.com/fusinv/fusioninventory-agent/commit/a6229d0d217f17d0206b8333dbc5fbec20aada09
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Linux.pm
Log Message:
-----------
better regexp
diff --git a/lib/FusionInventory/Agent/Tools/Linux.pm b/lib/FusionInventory/Agent/Tools/Linux.pm
index f2e90d4..f4c8b07 100644
--- a/lib/FusionInventory/Agent/Tools/Linux.pm
+++ b/lib/FusionInventory/Agent/Tools/Linux.pm
@@ -186,7 +186,7 @@ sub getDevicesFromProc {
return unless $handle;
while (my $line = <$handle>) {
- next unless $line =~ (/^\/dev\/([sh]d[a-z])/);
+ next unless $line =~ m{^/dev/([sh]d[a-z])};
push(@names, $1);
}
close $handle;
================================================================
Commit: 20620c2efce96d8ad78edfe890abe067789f8df0
https://github.com/fusinv/fusioninventory-agent/commit/20620c2efce96d8ad78edfe890abe067789f8df0
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Linux.pm
Log Message:
-----------
handle virtual drives too (#1075)
diff --git a/lib/FusionInventory/Agent/Tools/Linux.pm b/lib/FusionInventory/Agent/Tools/Linux.pm
index f4c8b07..7745423 100644
--- a/lib/FusionInventory/Agent/Tools/Linux.pm
+++ b/lib/FusionInventory/Agent/Tools/Linux.pm
@@ -170,7 +170,7 @@ sub getDevicesFromProc {
my @names;
foreach my $file (glob ("/sys/block/*")) {
- next unless $file =~ /([sh]d[a-z]|fd\d)$/;
+ next unless $file =~ /([shv]d[a-z]|fd\d)$/;
push(@names, $1);
}
@@ -186,7 +186,7 @@ sub getDevicesFromProc {
return unless $handle;
while (my $line = <$handle>) {
- next unless $line =~ m{^/dev/([sh]d[a-z])};
+ next unless $line =~ m{^/dev/([shv]d[a-z])};
push(@names, $1);
}
close $handle;
================================================================
Commit: 9c47ab4e9bb6bff17fa14d0ae4afb537f370229c
https://github.com/fusinv/fusioninventory-agent/commit/9c47ab4e9bb6bff17fa14d0ae4afb537f370229c
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Linux.pm
Log Message:
-----------
fix _getValueFromSysProc usage
pass it the device name, not the device object
make _getValueFromSysProc return undef in whatever context
diff --git a/lib/FusionInventory/Agent/Tools/Linux.pm b/lib/FusionInventory/Agent/Tools/Linux.pm
index 7745423..ec5a364 100644
--- a/lib/FusionInventory/Agent/Tools/Linux.pm
+++ b/lib/FusionInventory/Agent/Tools/Linux.pm
@@ -166,12 +166,14 @@ sub getDevicesFromHal {
sub getDevicesFromProc {
my (%params) = @_;
+ my $logger = $params{logger};
+
# compute list of devices
my @names;
foreach my $file (glob ("/sys/block/*")) {
next unless $file =~ /([shv]d[a-z]|fd\d)$/;
- push(@names, $1);
+ push @names, $1;
}
my $command = getFirstLine(command => '/sbin/fdisk -v') =~ '^GNU' ?
@@ -180,14 +182,14 @@ sub getDevicesFromProc {
my $handle = getFileHandle(
command => $command,
- logger => $params{logger}
+ logger => $logger
);
return unless $handle;
while (my $line = <$handle>) {
next unless $line =~ m{^/dev/([shv]d[a-z])};
- push(@names, $1);
+ push @names, $1;
}
close $handle;
@@ -198,25 +200,17 @@ sub getDevicesFromProc {
# extract informations
my @devices;
foreach my $name (@names) {
- my $device;
- $device->{NAME} = $name;
- $device->{MANUFACTURER} = _getValueFromSysProc(
- $params{logger}, $device, 'vendor'
- );
- $device->{MODEL} = _getValueFromSysProc(
- $params{logger}, $device, 'model'
- );
- $device->{FIRMWARE} = _getValueFromSysProc(
- $params{logger}, $device, 'rev'
- );
- $device->{SERIALNUMBER} = _getValueFromSysProc(
- $params{logger}, $device, 'serial'
- );
- $device->{TYPE} = _getValueFromSysProc(
- $params{logger}, $device, 'removable'
- ) ?
- 'removable' : 'disk';
- push (@devices, $device);
+ my $device = {
+ NAME => $name,
+ MANUFACTURER => _getValueFromSysProc($logger, $name, 'vendor'),
+ MODEL => _getValueFromSysProc($logger, $name, 'model'),
+ FIRMWARE => _getValueFromSysProc($logger, $name, 'rev'),
+ SERIALNUMBER => _getValueFromSysProc($logger, $name, 'serial'),
+ TYPE =>
+ _getValueFromSysProc($logger, $name, 'removable') ?
+ 'removable' : 'disk'
+ };
+ push @devices, $device;
}
return @devices;
@@ -225,15 +219,17 @@ sub getDevicesFromProc {
sub _getValueFromSysProc {
my ($logger, $device, $key) = @_;
+ ## no critic (ExplicitReturnUndef)
+
my $file =
-f "/sys/block/$device/device/$key" ? "/sys/block/$device/device/$key" :
-f "/proc/ide/$device/$key" ? "/proc/ide/$device/$key" :
undef;
- return unless $file;
+ return undef unless $file;
my $handle = getFileHandle(file => $file, logger => $logger);
- return unless $handle;
+ return undef unless $handle;
my $value = <$handle>;
close $handle;
================================================================
Commit: 1b660ce0b1d4e7293938a2c0221055509c844f07
https://github.com/fusinv/fusioninventory-agent/commit/1b660ce0b1d4e7293938a2c0221055509c844f07
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory.pm
Log Message:
-----------
use default PATH if needed (close #1129)
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index 0e25fd0..9c9aac7 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -60,6 +60,14 @@ sub run {
);
}
+ if (not $ENV{PATH}) {
+ # set a minimal PATH if none is set (#1129)
+ $ENV{PATH} = '/sbin:/usr/sbin:/bin:/usr/bin';
+ $self->{logger}->debug(
+ "PATH is not set, using /sbin:/usr/sbin:/bin:/usr/bin as default"
+ );
+ }
+
my %disabled = map { $_ => 1 } @{$self->{config}->{'no-category'}};
$self->_initModulesList(\%disabled);
================================================================
Commit: ed800a6a315aa5b3e04dc073e9daf2a6445938bf
https://github.com/fusinv/fusioninventory-agent/commit/ed800a6a315aa5b3e04dc073e9daf2a6445938bf
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm
Log Message:
-----------
fix function name
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm
index fd478b7..fdf2227 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm
@@ -200,7 +200,7 @@ sub _getStatus {
file => '/proc/scsi/scsi',
logger => $logger
);
- $result = _matchPattern($handle);
+ $result = _matchPatterns($handle);
close $handle;
}
return $result if $result;
================================================================
Commit: 3737dbb5864feb5c18ade6751c87a3046e93b370
https://github.com/fusinv/fusioninventory-agent/commit/3737dbb5864feb5c18ade6751c87a3046e93b370
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm
Log Message:
-----------
pass logger object
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm
index e024296..ea790ad 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm
@@ -16,7 +16,7 @@ sub doInventory {
my $logger = $params{logger};
# get a list of devices from /etc/fstab
- my @devices = _getDevicesFromFstab();
+ my @devices = _getDevicesFromFstab(logger => $logger);
# parse dmesg
my @lines = getAllLines(
================================================================
Commit: 52596773e88e4faed6e28ed41705956b8fa9c302
https://github.com/fusinv/fusioninventory-agent/commit/52596773e88e4faed6e28ed41705956b8fa9c302
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Win32.pm
Log Message:
-----------
document new function
diff --git a/lib/FusionInventory/Agent/Tools/Win32.pm b/lib/FusionInventory/Agent/Tools/Win32.pm
index eaa0396..8654023 100644
--- a/lib/FusionInventory/Agent/Tools/Win32.pm
+++ b/lib/FusionInventory/Agent/Tools/Win32.pm
@@ -209,6 +209,20 @@ E.g: HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/ProductName
=back
+=head2 getRegistryKey(%params)
+
+Returns a key from the registry.
+
+=over
+
+=item path a string in hive/key format
+
+E.g: HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion
+
+=item logger
+
+=back
+
=head2 getHostnameFromKernel32
Returns the computer name and its domain, as a list.
================================================================
Commit: fa98dee777dc5da225b0a529cca3bdf9882f0ac5
https://github.com/fusinv/fusioninventory-agent/commit/fa98dee777dc5da225b0a529cca3bdf9882f0ac5
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Win32.pm
Log Message:
-----------
drop removed function documentation
diff --git a/lib/FusionInventory/Agent/Tools/Win32.pm b/lib/FusionInventory/Agent/Tools/Win32.pm
index 8654023..f062ac7 100644
--- a/lib/FusionInventory/Agent/Tools/Win32.pm
+++ b/lib/FusionInventory/Agent/Tools/Win32.pm
@@ -222,7 +222,3 @@ E.g: HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion
=item logger
=back
-
-=head2 getHostnameFromKernel32
-
-Returns the computer name and its domain, as a list.
================================================================
Commit: 3b17ce63274c17f2ae13a0648d11afab77ff1408
https://github.com/fusinv/fusioninventory-agent/commit/3b17ce63274c17f2ae13a0648d11afab77ff1408
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M Makefile.PL
Log Message:
-----------
revert junit format test target for now
it breaks test harness files list
diff --git a/Makefile.PL b/Makefile.PL
index f325069..baf80b9 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -203,16 +203,3 @@ fusioninventory-agent.1.html: fusioninventory-agent
EOF
return $manifypods;
}
-
-sub test {
- my ($self) = @_;
- my $test = $self->SUPER::test(@_);
-
- $test .= <<'EOF';
-%-junit.xml:
- prove --lib --timer --recurse --formatter TAP::Formatter::JUnit t \
- > $@
-EOF
-
- return $test;
-}
================================================================
Commit: 14ae58d0df7ea077b82e8a54654dabc794ea164e
https://github.com/fusinv/fusioninventory-agent/commit/14ae58d0df7ea077b82e8a54654dabc794ea164e
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M t/tools/network.t
Log Message:
-----------
fix getNetworkMask usage
diff --git a/t/tools/network.t b/t/tools/network.t
index 915d24e..6bb1121 100755
--- a/t/tools/network.t
+++ b/t/tools/network.t
@@ -67,7 +67,7 @@ foreach my $test (@alt2canonical_tests) {
foreach my $test (@mask_tests) {
is(
- getNetworkMask($test->[0], $test->[1]),
+ getNetworkMask($test->[1]),
$test->[2],
"$test->[0]/$test->[1] mask extraction"
);
================================================================
Commit: f6d43adcffb8590235cfe16f4429e27c90b51ad9
https://github.com/fusinv/fusioninventory-agent/commit/f6d43adcffb8590235cfe16f4429e27c90b51ad9
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
A resources/solaris/psrinfo/sample1
A resources/solaris/smbios/x86-3
Log Message:
-----------
initial import
diff --git a/resources/solaris/psrinfo/sample1 b/resources/solaris/psrinfo/sample1
new file mode 100644
index 0000000..a3394c3
--- /dev/null
+++ b/resources/solaris/psrinfo/sample1
@@ -0,0 +1,32 @@
+Status of virtual processor 0 as of: 08/10/2011 11:48:03
+ on-line since 08/02/2011 11:06:56.
+ The i386 processor operates at 2133 MHz,
+ and has an i387 compatible floating point processor.
+Status of virtual processor 1 as of: 08/10/2011 11:48:03
+ on-line since 08/02/2011 11:07:02.
+ The i386 processor operates at 2133 MHz,
+ and has an i387 compatible floating point processor.
+Status of virtual processor 2 as of: 08/10/2011 11:48:03
+ on-line since 08/02/2011 11:07:02.
+ The i386 processor operates at 2133 MHz,
+ and has an i387 compatible floating point processor.
+Status of virtual processor 3 as of: 08/10/2011 11:48:03
+ on-line since 08/02/2011 11:07:02.
+ The i386 processor operates at 2133 MHz,
+ and has an i387 compatible floating point processor.
+Status of virtual processor 4 as of: 08/10/2011 11:48:03
+ on-line since 08/02/2011 11:07:02.
+ The i386 processor operates at 2133 MHz,
+ and has an i387 compatible floating point processor.
+Status of virtual processor 5 as of: 08/10/2011 11:48:03
+ on-line since 08/02/2011 11:07:02.
+ The i386 processor operates at 2133 MHz,
+ and has an i387 compatible floating point processor.
+Status of virtual processor 6 as of: 08/10/2011 11:48:03
+ on-line since 08/02/2011 11:07:03.
+ The i386 processor operates at 2133 MHz,
+ and has an i387 compatible floating point processor.
+Status of virtual processor 7 as of: 08/10/2011 11:48:03
+ on-line since 08/02/2011 11:07:03.
+ The i386 processor operates at 2133 MHz,
+ and has an i387 compatible floating point processor.
diff --git a/resources/solaris/smbios/x86-3 b/resources/solaris/smbios/x86-3
new file mode 100644
index 0000000..834f8c0
--- /dev/null
+++ b/resources/solaris/smbios/x86-3
@@ -0,0 +1,90 @@
+ID SIZE TYPE
+1 18 SMB_TYPE_IPMIDEV (IPMI device information)
+
+ Type: 1 (KCS: Keyboard Controller Style)
+ BMC IPMI Version: 2.0
+ i2c Bus Slave Address: 0x20
+ NV Storage Device Bus ID: 0xffffffff
+ BMC Base Address: 0xca2
+ Interrupt Number: 0
+ Register Spacing: 1
+ Flags: 0x9
+ SMB_IPMI_F_IOADDR (base address is in i/o space)
+ SMB_IPMI_F_INTREDGE (intr is edge triggered (else lvl))
+
+ID SIZE TYPE
+2 53 SMB_TYPE_SYSTEM (system information)
+
+ Manufacturer: Intel
+ Product: MP Server
+
+ UUID: 4b713db6-6d40-11dd-b32c-000123456789
+ Wake-Up Event: 0x6 (power switch)
+ SKU Number: 6I012345TF
+ Family:
+
+ID SIZE TYPE
+3 56 SMB_TYPE_BASEBOARD (base board)
+
+ Manufacturer: Intel
+ Product: S7000FC4UR
+ Serial Number: QSFX12345678
+ Asset Tag: 6I012345TF
+
+ Chassis: 0
+ Flags: 0x9
+ SMB_BBFL_MOTHERBOARD (board is a motherboard)
+ SMB_BBFL_REPLACABLE (board is field-replacable)
+ Board Type: 0xa (motherboard)
+
+ID SIZE TYPE
+4 64 SMB_TYPE_CHASSIS (system enclosure or chassis)
+
+ Manufacturer: TRANSTEC
+ Version: E10476-011
+ Serial Number: QSDH1234567
+ Asset Tag: 6I012345TF
+
+ OEM Data: 0x81581cf8
+ Lock Present: N
+ Chassis Type: 0x17 (rack mount chassis)
+ Boot-Up State: 0x3 (safe)
+ Power Supply State: 0x3 (safe)
+ Thermal State: 0x3 (safe)
+ Chassis Height: 1u
+ Power Cords: 1
+ Element Records: 0
+
+ID SIZE TYPE
+5 87 SMB_TYPE_BIOS (BIOS information)
+
+ Vendor: Intel Corporation
+ Version String: SFC4UR.86B.01.00.0029.071220092126
+ Release Date: 07/12/2009
+ Address Segment: 0xe800
+ ROM Size: 8388608 bytes
+ Image Size: 98304 bytes
+ Characteristics: 0x15c099a80
+ SMB_BIOSFL_PCI (PCI is supported)
+ SMB_BIOSFL_PLUGNPLAY (Plug and Play is supported)
+ SMB_BIOSFL_FLASH (BIOS is Flash Upgradeable)
+ SMB_BIOSFL_SHADOW (BIOS shadowing is allowed)
+ SMB_BIOSFL_CDBOOT (Boot from CD is supported)
+ SMB_BIOSFL_SELBOOT (Selectable Boot supported)
+ SMB_BIOSFL_EDD (EDD Spec is supported)
+ SMB_BIOSFL_I5_PRINT (int 0x5 print screen svcs)
+ SMB_BIOSFL_I9_KBD (int 0x9 8042 keyboard svcs)
+ SMB_BIOSFL_I14_SER (int 0x14 serial svcs)
+ SMB_BIOSFL_I10_CGA (int 0x10 CGA svcs)
+ 0x100000000
+ Characteristics Extension Byte 1: 0x33
+ SMB_BIOSXB1_ACPI (ACPI is supported)
+ SMB_BIOSXB1_USBL (USB legacy is supported)
+ SMB_BIOSXB1_LS120 (LS-120 boot is supported)
+ SMB_BIOSXB1_ATZIP (ATAPI ZIP drive boot is supported)
+ Characteristics Extension Byte 2: 0x7
+ SMB_BIOSXB2_BBOOT (BIOS Boot Specification supported)
+ SMB_BIOSXB2_FKNETSVC (F-key Network Svc boot supported)
+ SMB_BIOSXB2_ETCDIST (Enable Targeted Content Distrib.)
+ Version Number: 0.0
+ Embedded Ctlr Firmware Version Number: 0.0
================================================================
Commit: 919b1ca2312d9de05b0ede4d30ea632e817fe018
https://github.com/fusinv/fusioninventory-agent/commit/919b1ca2312d9de05b0ede4d30ea632e817fe018
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Hostname.pm
Log Message:
-----------
silent warning, end user don't care
diff --git a/lib/FusionInventory/Agent/Tools/Hostname.pm b/lib/FusionInventory/Agent/Tools/Hostname.pm
index 3c73a80..fdc2091 100644
--- a/lib/FusionInventory/Agent/Tools/Hostname.pm
+++ b/lib/FusionInventory/Agent/Tools/Hostname.pm
@@ -9,6 +9,7 @@ use English qw(-no_match_vars);
BEGIN {
if ($OSNAME eq 'MSWin32') {
+ no warnings 'redefine';
Win32::API->require();
# Kernel32.dll is used more or less everywhere.
# Without this, Win32::API will release the DLL even
================================================================
Commit: d6a36a8f1a2a2d4e935d4d44c7231784efc68009
https://github.com/fusinv/fusioninventory-agent/commit/d6a36a8f1a2a2d4e935d4d44c7231784efc68009
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Hostname.pm
Log Message:
-----------
cosmetics
diff --git a/lib/FusionInventory/Agent/Tools/Hostname.pm b/lib/FusionInventory/Agent/Tools/Hostname.pm
index fdc2091..16fcfed 100644
--- a/lib/FusionInventory/Agent/Tools/Hostname.pm
+++ b/lib/FusionInventory/Agent/Tools/Hostname.pm
@@ -20,21 +20,22 @@ BEGIN {
sub getHostname {
- if ($OSNAME eq 'MSWin32') {
- my $GetComputerName = Win32::API->new("kernel32", "GetComputerNameExW", ["I", "P", "P"], "N");
- my $buffer = "\x00" x 1024;
- my $N=1024;#pack ("c4", 160,0,0,0);
-
- $GetComputerName->Call(3, $buffer, $N);
-
- # GetComputerNameExW returns the string in UTF16, we have to change it
- # to UTF8
- return encode("UTF-8", substr(decode("UCS-2le", $buffer),0,ord $N));
- } else {
+ if ($OSNAME ne 'MSWin32') {
Sys::Hostname->require();
return Sys::Hostname::hostname();
}
+ my $getComputerName = Win32::API->new(
+ "kernel32", "GetComputerNameExW", ["I", "P", "P"], "N"
+ );
+ my $buffer = "\x00" x 1024;
+ my $n = 1024; #pack ("c4", 160,0,0,0);
+
+ $getComputerName->Call(3, $buffer, $n);
+
+ # GetComputerNameExW returns the string in UTF16, we have to change it
+ # to UTF8
+ return encode("UTF-8", substr(decode("UCS-2le", $buffer), 0, ord $n));
}
1;
================================================================
Commit: 6787614687d5fc4262e86ae399c5185f6102cdc6
https://github.com/fusinv/fusioninventory-agent/commit/6787614687d5fc4262e86ae399c5185f6102cdc6
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-03-04 (Sun, 04 Mar 2012)
Changed paths:
M t/apps/agent.t
Log Message:
-----------
use another variable under Windows
diff --git a/t/apps/agent.t b/t/apps/agent.t
index ec53755..a76ebdd 100755
--- a/t/apps/agent.t
+++ b/t/apps/agent.t
@@ -145,7 +145,10 @@ ok(
'inventory has environment variables'
);
-my $path = $ENV{PATH};
+# PATH through WMI appears with %SystemRoot% templates, preventing direct
+# comparaison with %ENV content
+my $name = $OSNAME eq 'MSWin32' ? 'PATHEXT' : 'PATH';
+my $value = $ENV{$name};
($out, $err, $rc) = run_agent(
"$base_options --no-category printer,software"
@@ -173,7 +176,7 @@ ok(
ok(
(any
- { $_->{KEY} eq 'PATH' && $_->{VAL} eq $path }
+ { $_->{KEY} eq $name && $_->{VAL} eq $value }
@{$content->{REQUEST}->{CONTENT}->{ENVS}}
),
'inventory has expected environment variable value'
================================================================
Commit: 9d4cdff42dde567ad77894a6ec4b69e7490b52da
https://github.com/fusinv/fusioninventory-agent/commit/9d4cdff42dde567ad77894a6ec4b69e7490b52da
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-05 (Mon, 05 Mar 2012)
Changed paths:
M README
Log Message:
-----------
doc: add comment regarding printer in user settings
closes: #980
Reported-by: jerome slayer <slayerjerome at yahoo.fr>
diff --git a/README b/README
index 754f87c..8a6ed04 100644
--- a/README
+++ b/README
@@ -67,6 +67,12 @@ to that.
On Solaris/SPARC, you must install sneep and record the Serial Number with it.
Download it from http://www.sun.com/download/products.xml?id=4304155a.
+The Windows installer will run the agent with the SYSTEM account. If you use
+an user GPO to configure the printer, the information will hidden and so not
+collected.
+To avoid this situation, you can turn off the server, and run the agent with
+user privilege, for example during the login.
+
On Windows, if you don't want to use the installer for Windows you can follow
the installation process avalailable from
http://forge.fusioninventory.org/projects/fusioninventory-agent/wiki/RunAgentWin32.
================================================================
Commit: 69c7d3869b82249e3eadf222d4af808092cd3b16
https://github.com/fusinv/fusioninventory-agent/commit/69c7d3869b82249e3eadf222d4af808092cd3b16
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-05 (Mon, 05 Mar 2012)
Changed paths:
M Makefile.PL
M README
M lib/FusionInventory/Agent/Task/Inventory.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Bios.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/i386.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/PowerPC.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Memory.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
M lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
M lib/FusionInventory/Agent/Tools/Hostname.pm
M lib/FusionInventory/Agent/Tools/Linux.pm
M lib/FusionInventory/Agent/Tools/Win32.pm
A resources/bsd/fstab/freebsd-1
A resources/generic/dmidecode/windows-7
A resources/generic/dmidecode/windows-xppro
A resources/solaris/prtconf/SPARC-1
R resources/solaris/psrinfo/sample-1
A resources/solaris/psrinfo/sample1
R resources/solaris/showrev-SPARC-1
R resources/solaris/showrev-SPARC-2
R resources/solaris/showrev-x86-1
R resources/solaris/showrev-x86-2
A resources/solaris/showrev/SPARC-1
A resources/solaris/showrev/SPARC-2
A resources/solaris/showrev/x86-1
A resources/solaris/showrev/x86-2
A resources/solaris/showrev/x86-3
A resources/solaris/smbios/x86-1
A resources/solaris/smbios/x86-3
A resources/win32/registry/2003-CentralProcessor.reg
A resources/win32/registry/2003SP2-CentralProcessor.reg
A resources/win32/registry/7-CentralProcessor.reg
A resources/win32/registry/xp-CentralProcessor.reg
A resources/win32/wmi/2003-Win32_PhysicalMemory.wmi
A resources/win32/wmi/2003-Win32_Processor.wmi
A resources/win32/wmi/2003SP2-Win32_PhysicalMemory.wmi
A resources/win32/wmi/2003SP2-Win32_Processor.wmi
A resources/win32/wmi/7-Win32_PhysicalMemory.wmi
A resources/win32/wmi/7-Win32_PhysicalMemoryArray.wmi
A resources/win32/wmi/7-Win32_Processor.wmi
A resources/win32/wmi/xp-Win32_PhysicalMemory.wmi
A resources/win32/wmi/xp-Win32_Processor.wmi
M t/FusionInventory/Test/Utils.pm
M t/apps/agent.t
A t/inventory/bsd/storages.t
M t/inventory/generic/dmidecode/memory.t
A t/inventory/solaris/bios.t
M t/inventory/solaris/cpu.t
A t/inventory/windows/cpu.t
A t/inventory/windows/memory.t
M t/inventory/windows/printers.t
M t/inventory/windows/usb.t
M t/tools/generic.t
M t/tools/network.t
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/Makefile.PL b/Makefile.PL
index a5863a6..baf80b9 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -37,13 +37,14 @@ if ($OSNAME ne 'MSWin32') {
}
# test dependencies
-test_requires 'Test::More' => '0.93'; # subtest
-test_requires 'IPC::Run' => undef;
test_requires 'HTTP::Proxy' => undef;
test_requires 'HTTP::Server::Simple' => undef;
test_requires 'HTTP::Server::Simple::Authen' => undef;
test_requires 'IO::Capture::Stderr' => undef;
+test_requires 'IPC::Run' => undef;
test_requires 'Test::Exception' => undef;
+test_requires 'Test::MockModule' => undef;
+test_requires 'Test::More' => '0.93'; # subtest
test_requires 'YAML' => undef;
install_script 'fusioninventory-agent';
@@ -202,16 +203,3 @@ fusioninventory-agent.1.html: fusioninventory-agent
EOF
return $manifypods;
}
-
-sub test {
- my ($self) = @_;
- my $test = $self->SUPER::test(@_);
-
- $test .= <<'EOF';
-%-junit.xml:
- prove --lib --timer --recurse --formatter TAP::Formatter::JUnit t \
- > $@
-EOF
-
- return $test;
-}
diff --git a/README b/README
index 8a6ed04..893398d 100644
--- a/README
+++ b/README
@@ -58,12 +58,6 @@ The available workaround:
System-specific informations
----------------------------
-
-On Solaris, Sun Studio seems to be needed to build the dependency. The
-generated Makefile needs gmake to be executed. The default installation will
-install the binary in /usr/perl5/5.XXXXX/bin, set your $PATH variable according
-to that.
-
On Solaris/SPARC, you must install sneep and record the Serial Number with it.
Download it from http://www.sun.com/download/products.xml?id=4304155a.
@@ -84,10 +78,10 @@ They are two different ways to run the agent:
- as a permanent process, staying in memory permanently (daemon under Unix,
service under Windows)
-In the first case, the agent execution scheduling is completly controlled by
-the agent, through a dedicated system, such as cron under Unix, or XXX under
-Windows. In second case, the agent execution scheduling is server-controlled,
-as the agent runs regulary according to a parameter initially set in its
+In the first case, the agent execution scheduling is controlled from local
+system, through cron under Unix, or scheduled tasks under Windows. In second
+case, the agent execution scheduling is controlled from GLPI server, as the
+agent runs regulary according to a parameter initially set in its
configuration (delaytime), overrided by the server at the first connection
(PROLOG_FREQ). Additionaly, the server may also initiate additional
out-of-schedule executions by sending HTTP requests if the web interface is
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index 0e25fd0..9c9aac7 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -60,6 +60,14 @@ sub run {
);
}
+ if (not $ENV{PATH}) {
+ # set a minimal PATH if none is set (#1129)
+ $ENV{PATH} = '/sbin:/usr/sbin:/bin:/usr/bin';
+ $self->{logger}->debug(
+ "PATH is not set, using /sbin:/usr/sbin:/bin:/usr/bin as default"
+ );
+ }
+
my %disabled = map { $_ => 1 } @{$self->{config}->{'no-category'}};
$self->_initModulesList(\%disabled);
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Bios.pm
index 245c73b..00dc9ee 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/Bios.pm
@@ -22,30 +22,26 @@ sub doInventory {
my $inventory = $params{inventory};
my $logger = $params{logger};
- my ($serial, $model, $version, $date);
+ my $bios = {
+ BMANUFACTURER => 'IBM',
+ SMANUFACTURER => 'IBM',
+ };
my @infos = getLsvpdInfos(logger => $logger);
my $system = first { $_->{DS} eq 'System Firmware' } @infos;
- $version = $system->{RM} if $system;
+ $bios->{BVERSION} = $system->{RM} if $system;
my $platform = first { $_->{DS} eq 'Platform Firmware' } @infos;
- $version .= "(Firmware : $platform->{RM})" if $platform;
+ $bios->{BVERSION} .= "(Firmware : $platform->{RM})" if $platform;
my $vpd = first { $_->{DS} eq 'System VPD' } @infos;
if ($vpd) {
- $model = $vpd->{TM};
- $serial = $vpd->{SE};
+ $bios->{SMODEL} = $vpd->{TM};
+ $bios->{SSN} = $vpd->{SE};
}
- $inventory->setBios({
- BVERSION => $version,
- BDATE => $date,
- BMANUFACTURER => 'IBM',
- SMANUFACTURER => 'IBM',
- SMODEL => $model,
- SSN => $serial,
- });
+ $inventory->setBios($bios);
}
1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
index f8c6bc0..3bb8c7f 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
@@ -76,19 +76,37 @@ sub _getLogicalVolume {
}
close $handle;
- my $size;
- foreach (`lslv $volume->{LV_NAME}`) {
- if (/.*PP SIZE:\s+(\d+) .*/) {
+ my ($size, $uuid) = _getVolumeInfo(
+ name => $volume->{LV_NAME},
+ logger => $logger
+ );
+ $volume->{SIZE} = int($volume->{SEG_COUNT} * $size);
+ $volume->{LV_UUID} = $uuid;
+
+ return $volume;
+}
+
+sub _getVolumeInfo {
+ my (%params) = @_;
+
+ my $handle = getFileHandle(
+ command => "lslv $params{name}",
+ logger => $params{logger}
+ );
+ return unless $handle;
+
+ my ($size, $uuid);
+ while (my $line = <$handle>) {
+ if ($line =~ /.*PP SIZE:\s+(\d+) .*/) {
$size = $1;
}
- if (/LV IDENTIFIER:\s+(\S+)/) {
- $volume->{LV_UUID} = $1;
+ if ($line =~ /LV IDENTIFIER:\s+(\S+)/) {
+ $uuid = $1;
}
}
+ close $handle;
- $volume->{SIZE} = int($volume->{SEG_COUNT} * $size);
-
- return $volume;
+ return ($size, $uuid);
}
sub _getPhysicalVolumes {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
index b9d5d21..f89f671 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/Alpha.pm
@@ -16,12 +16,16 @@ sub doInventory {
my $inventory = $params{inventory};
+ my $bios = {
+ SMANUFACTURER => 'DEC',
+ };
+
# sysctl infos
# example on *BSD: AlphaStation 255 4/232
- my $SystemModel = getFirstLine(command => 'sysctl -n hw.model');
+ $bios->{SMODEL} = getFirstLine(command => 'sysctl -n hw.model');
- my $processorn = getFirstLine(command => 'sysctl -n hw.ncpu');
+ my $count = getFirstLine(command => 'sysctl -n hw.ncpu');
# dmesg infos
@@ -35,24 +39,18 @@ sub doInventory {
# AlphaStation 255 4/232, 232MHz
# CPU: EV45 (21064A) major=6 minor=2
- my ($processort, $processors);
+ my $cpu;
foreach my $line (getAllLines(command => 'dmesg')) {
- if ($line =~ /$SystemModel,\s*(\S+)\s*MHz/) { $processors = $1; }
- if ($line =~ /^cpu[^:]*:\s*(.*)$/i) { $processort = $1; }
+ if ($line =~ /$bios->{SMODEL},\s*(\S+)\s*MHz/) { $cpu->{SPEED} = $1; }
+ if ($line =~ /^cpu[^:]*:\s*(.*)$/i) { $cpu->{NAME} = $1; }
}
- $inventory->setBios({
- SMANUFACTURER => 'DEC',
- SMODEL => $SystemModel,
- });
+ $inventory->setBios($bios);
- for my $i (1 .. $processorn) {
+ while ($count--) {
$inventory->addEntry(
section => 'CPUS',
- entry => {
- NAME => $processort,
- SPEED => $processors,
- }
+ entry => $cpu
);
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
index e79dbd0..00a7464 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/MIPS.pm
@@ -15,14 +15,18 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
+
+ my $bios = {
+ SMANUFACTURER => 'SGI',
+ };
# sysctl infos
# example on NetBSD: SGI-IP22
# example on OpenBSD: SGI-O2 (IP32)
- my $SystemModel = getFirstLine(command => 'sysctl -n hw.model');
+ $bios->{SMODEL} = getFirstLine(command => 'sysctl -n hw.model');
- my $processorn = getFirstLine(command => 'sysctl -n hw.ncpu');
+ my $count = getFirstLine(command => 'sysctl -n hw.ncpu');
# dmesg infos
@@ -41,26 +45,19 @@ sub doInventory {
# cpu0 at mainbus0: MIPS R5000 CPU rev 2.1 180 MHz with R5000 based FPC rev 1.0
# cpu0: cache L1-I 32KB D 32KB 2 way, L2 512KB direct
- my ($SystemSerial, $processort, $processors);
+ my $cpu;
foreach my $line (getAllLines(command => 'dmesg')) {
- if ($line =~ /$SystemModel\s*\[\S*\s*(\S*)\]/) { $SystemSerial = $1; }
- if ($line =~ /cpu0 at mainbus0:\s*(.*)$/) { $processort = $1; }
- if ($line =~ /CPU\s*.*\D(\d+)\s*MHz/) { $processors = $1; }
+ if ($line =~ /$bios->{SMODEL}\s*\[\S*\s*(\S*)\]/) { $bios->{SSN} = $1; }
+ if ($line =~ /cpu0 at mainbus0:\s*(.*)$/) { $cpu->{NAME} = $1; }
+ if ($line =~ /CPU\s*.*\D(\d+)\s*MHz/) { $cpu->{SPEED} = $1; }
}
- $inventory->setBios({
- SMANUFACTURER => 'SGI',
- SMODEL => $SystemModel,
- SSN => $SystemSerial,
- });
+ $inventory->setBios($bios);
- for my $i (1 .. $processorn) {
+ while ($count--) {
$inventory->addEntry(
section => 'CPUS',
- entry => {
- NAME => $processort,
- SPEED => $processors,
- }
+ entry => $cpu
);
}
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
index 9cb1786..e467769 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/SPARC.pm
@@ -16,19 +16,23 @@ sub doInventory {
my $inventory = $params{inventory};
+ my $bios = {
+ SMANUFACTURER => 'SUN',
+ };
+
# sysctl infos
# it gives only the CPU on OpenBSD/sparc64
- my $SystemModel = getFirstLine(command => 'sysctl -n hw.model');
+ $bios->{SMODEL} = getFirstLine(command => 'sysctl -n hw.model');
# example on NetBSD: 0x807b65c
# example on OpenBSD: 2155570635
- my $SystemSerial = getFirstLine(command => 'sysctl -n kern.hostid');
+ $bios->{SSN} = getFirstLine(command => 'sysctl -n kern.hostid');
# force hexadecimal, but remove 0x to make it appear as in the firmware
- $SystemSerial = dec2hex($SystemSerial);
- $SystemSerial =~ s/^0x//;
+ $bios->{SSN} = dec2hex($bios->{SSN});
+ $bios->{SSN} =~ s/^0x//;
- my $processorn = getFirstLine(command => 'sysctl -n hw.ncpu');
+ my $count = getFirstLine(command => 'sysctl -n hw.ncpu');
# dmesg infos
@@ -50,40 +54,32 @@ sub doInventory {
# FreeBSD:
# cpu0: Sun Microsystems UltraSparc-I Processor (167.00 MHz CPU)
- my $processort;
+ my $cpu;
foreach my $line (getAllLines(command => 'dmesg')) {
- if ($line=~ /^mainbus0 \(root\):\s*(.*)$/) { $SystemModel = $1; }
- if ($line =~ /^cpu[^:]*:\s*(.*)$/i) { $processort = $1; }
+ if ($line=~ /^mainbus0 \(root\):\s*(.*)$/) { $bios->{SMODEL} = $1; }
+ if ($line =~ /^cpu[^:]*:\s*(.*)$/i) { $cpu->{NAME} = $1; }
}
- $SystemModel =~ s/SUNW,//;
- $SystemModel =~ s/[:\(].*$//;
- $SystemModel =~ s/^\s*//;
- $SystemModel =~ s/\s*$//;
+ $bios->{SMODEL} =~ s/SUNW,//;
+ $bios->{SMODEL} =~ s/[:\(].*$//;
+ $bios->{SMODEL} =~ s/^\s*//;
+ $bios->{SMODEL} =~ s/\s*$//;
- $processort =~ s/SUNW,//;
- $processort =~ s/^\s*//;
- $processort =~ s/\s*$//;
+ $cpu->{NAME} =~ s/SUNW,//;
+ $cpu->{NAME} =~ s/^\s*//;
+ $cpu->{NAME} =~ s/\s*$//;
- my $processors;
# XXX quick and dirty _attempt_ to get proc speed
- if ( $processort =~ /(\d+)(\.\d+|)\s*mhz/i ) { # possible decimal point
- $processors = sprintf("%.0f", "$1$2"); # round number
+ if ($cpu->{NAME} =~ /(\d+)(\.\d+|)\s*mhz/i ) { # possible decimal point
+ $cpu->{SPEED} = sprintf("%.0f", "$1$2"); # round number
}
- $inventory->setBios({
- SMANUFACTURER => 'SUN',
- SMODEL => $SystemModel,
- SSN => $SystemSerial,
- });
+ $inventory->setBios($bios);
- for my $i (1 .. $processorn) {
+ while ($count--) {
$inventory->addEntry(
section => 'CPUS',
- entry => {
- NAME => $processort,
- SPEED => $processors,
- }
+ entry => $cpu
);
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/i386.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/i386.pm
index 3cfefbf..bfa8b96 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/i386.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Archs/i386.pm
@@ -24,29 +24,25 @@ sub doInventory {
my $logger = $params{logger};
# sysctl infos
+ my $bios = {
+ SMODEL => getFirstLine(command => 'sysctl -n hw.model')
+ };
+ my $cpu = {
+ NAME => getFirstLine(command => 'sysctl -n hw.machine'),
+ SPEED => (getCanonicalSpeed(split(/\s+/, $bios->{SMODEL})))[-1]
+ };
+ my $count = getFirstLine(command => 'sysctl -n hw.ncpu');
- my $SystemModel = getFirstLine(command => 'sysctl -n hw.model');
- my $processorn = getFirstLine(command => 'sysctl -n hw.ncpu');
- my $processort = getFirstLine(command => 'sysctl -n hw.machine');
- my $processors = getCanonicalSpeed(
- (split(/\s+/, $SystemModel))[-1]
- );
-
- $inventory->setBios({
- SMODEL => $SystemModel,
- });
+ $inventory->setBios($bios);
# don't deal with CPUs if information can be computed from dmidecode
my $infos = getInfosFromDmidecode(logger => $logger);
return if $infos->{4};
- for my $i (1 .. $processorn) {
+ while ($count--) {
$inventory->addEntry(
section => 'CPUS',
- entry => {
- NAME => $processort,
- SPEED => $processors,
- }
+ entry => $cpu
);
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm
index 1da4c35..ea790ad 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Storages.pm
@@ -16,16 +16,7 @@ sub doInventory {
my $logger = $params{logger};
# get a list of devices from /etc/fstab
- my $handle = getFileHandle(file => '/etc/fstab', logger => $logger);
- return unless $handle;
-
- my (@devices, %seen);
- while (my $line = <$handle>) {
- next unless $line =~ m{/^/dev/(\S+)};
- next if $seen{$1}++;
- push @devices, { DESCRIPTION => $1 };
- }
- close $handle;
+ my @devices = _getDevicesFromFstab(logger => $logger);
# parse dmesg
my @lines = getAllLines(
@@ -60,4 +51,24 @@ sub doInventory {
}
}
+sub _getDevicesFromFstab {
+ my (%params) = (
+ file => '/etc/fstab',
+ @_
+ );
+
+ my $handle = getFileHandle(%params);
+ return unless $handle;
+
+ my (@devices, %seen);
+ while (my $line = <$handle>) {
+ next unless $line =~ m{^/dev/(\S+)};
+ next if $seen{$1}++;
+ push @devices, { DESCRIPTION => $1 };
+ }
+ close $handle;
+
+ return @devices;
+}
+
1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/PowerPC.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/PowerPC.pm
index b8c4fc0..50433f3 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/PowerPC.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/PowerPC.pm
@@ -44,35 +44,30 @@ sub doInventory {
);
}
- my $SystemSerial = getFirstLine(file => '/proc/device-tree/serial-number');
- $SystemSerial =~ s/[^\,^\.^\w^\ ]//g; # I remove some unprintable char
+ my $bios;
- my $SystemModel = getFirstLine(file => '/proc/device-tree/model');
- $SystemModel =~ s/[^\,^\.^\w^\ ]//g;
+ $bios->{SSN} = getFirstLine(file => '/proc/device-tree/serial-number');
+ $bios->{SSN} =~ s/[^\,^\.^\w^\ ]//g; # I remove some unprintable char
+
+ $bios->{SMODEL} = getFirstLine(file => '/proc/device-tree/model');
+ $bios->{SMODEL} =~ s/[^\,^\.^\w^\ ]//g;
my $colorCode = getFirstLine(file => '/proc/device-tree/color-code');
my ($color) = unpack "h7" , $colorCode;
- $SystemModel .= " color: $color" if $color;
+ $bios->{SMODEL} .= " color: $color" if $color;
- my $BiosVersion = getFirstLine(file => '/proc/device-tree/openprom/model');
- $BiosVersion =~ s/[^\,^\.^\w^\ ]//g;
+ $bios->{BVERSION} =
+ getFirstLine(file => '/proc/device-tree/openprom/model');
+ $bios->{BVERSION} =~ s/[^\,^\.^\w^\ ]//g;
- my ($BiosManufacturer, $SystemManufacturer);
my $copyright = getFirstLine(file => '/proc/device-tree/copyright');
if ($copyright && $copyright =~ /Apple/) {
# What about the Apple clone?
- $BiosManufacturer = "Apple Computer, Inc.";
- $SystemManufacturer = "Apple Computer, Inc."
+ $bios->{BMANUFACTURER} = "Apple Computer, Inc.";
+ $bios->{SMANUFACTURER} = "Apple Computer, Inc."
}
- $inventory->setBios({
- SMANUFACTURER => $SystemManufacturer,
- SMODEL => $SystemModel,
- SSN => $SystemSerial,
- BMANUFACTURER => $BiosManufacturer,
- BVERSION => $BiosVersion,
- });
-
+ $inventory->setBios($bios);
}
sub _getCPUsFromProc {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages.pm
index d0733bb..1b01862 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Storages.pm
@@ -106,15 +106,13 @@ sub _getDescription {
# detected as USB by udev
# TODO maybe we should trust udev detection by default?
- return "USB" if (defined ($description) && $description =~ /usb/i);
+ return "USB" if ($description && $description =~ /usb/i);
if ($name =~ /^s/) { # /dev/sd* are SCSI _OR_ SATA
if (
- ($manufacturer && ($manufacturer =~ /ATA/))
- ||
- ($serialnumber && ($serialnumber =~ /ATA/))
- ||
- ($description && ($description =~ /ATA/))
+ ($manufacturer && $manufacturer =~ /ATA/) ||
+ ($serialnumber && $serialnumber =~ /ATA/) ||
+ ($description && $description =~ /ATA/)
) {
return "SATA";
} else {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
index 08de6b0..65c1546 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
@@ -18,17 +18,16 @@ sub doInventory {
my $inventory = $params{inventory};
my $logger = $params{logger};
- my ($SystemSerial, $SystemModel, $SystemManufacturer, $BiosManufacturer,
- $BiosVersion, $BiosDate, $uuid);
+ my ($bios, $hardware);
my $zone = getZone();
if ($zone) {
my $arch;
if (canRun('showrev')) {
- my $infos = _parseShowRev($logger);
- $SystemModel = $infos->{'Application architecture'};
- $SystemManufacturer = $infos->{'Hardware provider'};
+ my $infos = _parseShowRev(logger => $logger);
+ $bios->{SMODEL} = $infos->{'Application architecture'};
+ $bios->{SMANUFACTURER} = $infos->{'Hardware provider'};
$arch = $infos->{'Application architecture'};
} else {
$arch =
@@ -36,63 +35,62 @@ sub doInventory {
}
if ($arch eq "i386") {
- my $infos = _parseSmbios($logger);
- $SystemManufacturer = $infos->{'Manufacturer'};
- $SystemSerial = $infos->{'Serial Number'};
- $SystemModel = $infos->{'Product'};
- $BiosManufacturer = $infos->{'Vendor'};
- $BiosVersion = $infos->{'Version String'};
- $BiosDate = $infos->{'Release Date'};
- $uuid = $infos->{'UUID'};
+ my $infos = _parseSmbios(logger => $logger);
+
+ my $biosInfos = $infos->{SMB_TYPE_BIOS};
+ $bios->{BMANUFACTURER} = $biosInfos->{'Vendor'};
+ $bios->{BVERSION} = $biosInfos->{'Version String'};
+ $bios->{BDATE} = $biosInfos->{'Release Date'};
+
+ my $systemInfos = $infos->{SMB_TYPE_SYSTEM};
+ $bios->{SMANUFACTURER} = $systemInfos->{'Manufacturer'};
+ $bios->{SMODEL} = $systemInfos->{'Product'};
+ $bios->{SKUNUMBER} = $systemInfos->{'SKU Number'};
+ $hardware->{UUID} = $systemInfos->{'UUID'};
+
+ my $motherboardInfos = $infos->{SMB_TYPE_BASEBOARD};
+ $bios->{MMODEL} = $motherboardInfos->{'Product'};
+ $bios->{MSN} = $motherboardInfos->{'Serial Number'};
+ $bios->{MMANUFACTURER} = $motherboardInfos->{'Manufacturer'};
} elsif ($arch =~ /sparc/i) {
- my $infos = _parsePrtconf($logger);
- $SystemModel = $infos->{'banner-name'};
- $SystemModel .= " ($infos->{name})" if $infos->{name};
+ my $infos = _parsePrtconf(logger => $logger);
+ $bios->{SMODEL} = $infos->{'banner-name'};
+ $bios->{SMODEL} .= " ($infos->{name})" if $infos->{name};
# looks like : "OBP 4.16.4 2004/12/18 05:18"
# with further informations sometime
if ($infos->{version} =~ m{OBP\s+([\d|\.]+)\s+(\d+)/(\d+)/(\d+)}) {
- $BiosVersion = "OBP $1";
- $BiosDate = "$2/$3/$4";
+ $bios->{BVERSION} = "OBP $1";
+ $bios->{BDATE} = "$2/$3/$4";
} else {
- $BiosVersion = $infos->{version};
+ $bios->{BVERSION} = $infos->{version};
}
my $command = -x '/opt/SUNWsneep/bin/sneep' ?
'/opt/SUNWsneep/bin/sneep' : 'sneep';
- $SystemSerial = getFirstLine(
+ $bios->{SSN} = getFirstLine(
command => $command,
logger => $logger
);
}
} else {
- my $infos = _parseShowRev($logger);
- $SystemManufacturer = $infos->{'Hardware provider'};
- $SystemModel = "Solaris Containers";
+ my $infos = _parseShowRev(logger => $logger);
+ $bios->{SMANUFACTURER} = $infos->{'Hardware provider'};
+ $bios->{SMODEL} = "Solaris Containers";
}
- $inventory->setBios({
- BVERSION => $BiosVersion,
- BDATE => $BiosDate,
- BMANUFACTURER => $BiosManufacturer,
- SMANUFACTURER => $SystemManufacturer,
- SMODEL => $SystemModel,
- SSN => $SystemSerial
- });
-
- $inventory->setHardware({
- UUID => $uuid
- });
+ $inventory->setBios($bios);
+ $inventory->setHardware($hardware);
}
sub _parseShowRev {
- my ($logger) = @_;
-
- my $handle = getFileHandle(
- command => "showrev",
- logger => $logger
+ my (%params) = (
+ command => 'showrev',
+ @_
);
+
+ my $handle = getFileHandle(%params);
return unless $handle;
my $infos;
@@ -106,18 +104,25 @@ sub _parseShowRev {
}
sub _parseSmbios {
- my ($logger) = @_;
-
- my $handle = getFileHandle(
- command => "/usr/sbin/smbios",
- logger => $logger
+ my (%params) = (
+ command => '/usr/sbin/smbios',
+ @_
);
+
+ my $handle = getFileHandle(%params);
return unless $handle;
- my $infos;
+ my ($infos, $current);
while (my $line = <$handle>) {
- next unless $line =~ /^ \s* ([^:]+) : \s* (.+) $/x;
- $infos->{$1} = $2;
+ if ($line =~ /^ \d+ \s+ \d+ \s+ (\S+)/x) {
+ $current = $1;
+ next;
+ }
+
+ if ($line =~ /^ \s* ([^:]+) : \s* (.+) $/x) {
+ $infos->{$current}->{$1} = $2;
+ next;
+ }
}
close $handle;
@@ -125,12 +130,12 @@ sub _parseSmbios {
}
sub _parsePrtconf {
- my ($logger) = @_;
-
- my $handle = getFileHandle(
- command => "/usr/sbin/prtconf -pv",
- logger => $logger
+ my (%params) = (
+ command => '/usr/sbin/prtconf -pv',
+ @_
);
+
+ my $handle = getFileHandle(%params);
return unless $handle;
my $infos;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
index ee3b03b..6fc0d9f 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
@@ -3,6 +3,8 @@ package FusionInventory::Agent::Task::Inventory::Input::Solaris::CPU;
use strict;
use warnings;
+use English qw(-no_match_vars);
+
use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Solaris;
@@ -24,15 +26,7 @@ sub doInventory {
_getCPUFromMemconf(logger => $logger);
# fallback on generic method
- if (!$count) {
- foreach (`psrinfo -v`) {
- if (/^\s+The\s(\w+)\sprocessor\soperates\sat\s(\d+)\sMHz,/) {
- $cpu->{NAME} = $1;
- $cpu->{SPEED} = $2;
- $count++;
- }
- }
- }
+ ($count, $cpu) = _getCPUFromPrsinfo(logger => $logger) if !$count;
$cpu->{MANUFACTURER} = "SPARC";
@@ -68,22 +62,13 @@ sub _getCPUFromMemconf {
sub _parseCoreString {
my ($v) = @_;
- if ($v =~ /Dual/i) {
- return 2;
- } elsif ($v =~ /Quad/i) {
- return 4;
- } elsif ($v =~ /(\d+)-(core|thread)/) {
- return $1;
- }elsif ($v =~ /^dual/) {
- return 2;
- } elsif ($v =~ /^quad/) {
- return 4;
- }
-
- return $v;
+ return
+ $v =~ /dual/i ? 2 :
+ $v =~ /quad/i ? 4 :
+ $v =~ /(\d+)-(core|thread)/ ? $1 :
+ $v;
}
-
sub _parseSpec {
my ($spec) = @_;
@@ -172,12 +157,43 @@ sub _parseSpec {
}
+sub _getCPUFromPsrinfo {
+ my (%params) = (
+ command => 'psrinfo -v',
+ @_
+ );
+
+ my $handle = getFileHandle(%params);
+ return unless $handle;
+
+ my $count = 0;
+ my $cpu;
+ while (my $line = <$handle>) {
+ next unless $line =~
+ /^\s+The\s(\w+)\sprocessor\soperates\sat\s(\d+)\sMHz,/;
+
+ $cpu->{NAME} = $1;
+ $cpu->{SPEED} = $2;
+ $count++;
+ }
+ close $handle;
+
+ return ($count, $cpu);
+}
+
sub _getCPUFromPrtcl {
- my ($count, $cpu);
+ my (%params) = (
+ command => "prctl -n zone.cpu-shares $PID",
+ @_
+ );
- foreach (`prctl -n zone.cpu-shares $$`) {
- $cpu->{NAME} = $1 if /^zone.(\S+)$/;
- $cpu->{NAME} .= " " . $1 if /^\s*privileged+\s*(\d+)/;
+ my $handle = getFileHandle(%params);
+ return unless $handle;
+
+ my ($count, $cpu);
+ while (my $line = <$handle>) {
+ $cpu->{NAME} = $1 if $line =~ /^zone.(\S+)$/;
+ $cpu->{NAME} .= " " . $1 if $line =~ /^\s*privileged+\s*(\d+)/;
#$count = 1 if /^\s*privileged+\s*(\d+)/;
foreach (`memconf 2>&1`) {
if(/\s+\((\d+).*\s+(\d+)MHz/) {
@@ -186,6 +202,7 @@ sub _getCPUFromPrtcl {
}
}
}
+ close $handle;
return ($count, $cpu);
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm
index fd478b7..fdf2227 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm
@@ -200,7 +200,7 @@ sub _getStatus {
file => '/proc/scsi/scsi',
logger => $logger
);
- $result = _matchPattern($handle);
+ $result = _matchPatterns($handle);
close $handle;
}
return $result if $result;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
index 5ec74eb..b664c67 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Bios.pm
@@ -4,11 +4,6 @@ use strict;
use warnings;
use English qw(-no_match_vars);
-use Win32::TieRegistry (
- Delimiter => '/',
- ArrayValues => 0,
- qw/KEY_READ/
-);
use FusionInventory::Agent::Tools::Win32;
@@ -89,30 +84,36 @@ sub doInventory {
$inventory->setBios($bios);
- if (
- ($bios->{VERSION} && ($bios->{VERSION} eq 'VirtualBox'))
- ||
- ($bios->{MMODEL} && ($bios->{MMODEL} eq 'VirtualBox'))
- ) {
- $inventory->setHardware ({
- VMSYSTEM => 'VirtualBox'
- });
- } elsif (
- ($bios->{BIOSSERIAL} && ($bios->{BIOSSERIAL} =~ /VMware/i))
- ||
- ($bios->{SMODEL} && ($bios->{SMODEL} eq 'VirtualBox'))
- ) {
- $inventory->setHardware ({
- VMSYSTEM => 'VMware'
- });
- } elsif (
- ($bios->{SMANUFACTURER} eq 'Xen')
- ||
- ($bios->{BMANUFACTURER} eq 'Xen')
- ) {
- $inventory->setHardware ({
- VMSYSTEM => 'Xen'
- });
+ SWITCH: {
+ if (
+ ($bios->{VERSION} && $bios->{VERSION} eq 'VirtualBox') ||
+ ($bios->{MMODEL} && $bios->{MMODEL} eq 'VirtualBox')
+ ) {
+ $inventory->setHardware ({
+ VMSYSTEM => 'VirtualBox'
+ });
+ last SWITCH;
+ }
+
+ if (
+ ($bios->{BIOSSERIAL} && $bios->{BIOSSERIAL} =~ /VMware/i) ||
+ ($bios->{SMODEL} && $bios->{SMODEL} eq 'VirtualBox')
+ ) {
+ $inventory->setHardware ({
+ VMSYSTEM => 'VMware'
+ });
+ last SWITCH;
+ }
+
+ if (
+ ($bios->{SMANUFACTURER} && $bios->{SMANUFACTURER} eq 'Xen') ||
+ ($bios->{BMANUFACTURER} && $bios->{BMANUFACTURER} eq 'Xen')
+ ) {
+ $inventory->setHardware ({
+ VMSYSTEM => 'Xen'
+ });
+ last SWITCH;
+ }
}
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
index 8f1d49c..768d796 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/CPU.pm
@@ -4,20 +4,11 @@ use strict;
use warnings;
use English qw(-no_match_vars);
-use Win32;
-use Win32::TieRegistry (
- Delimiter => '/',
- ArrayValues => 0,
- qw/KEY_READ/
-);
use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Win32;
use FusionInventory::Agent::Tools::Generic;
-our $runMeIfTheseChecksFailed =
- ["FusionInventory::Agent::Task::Inventory::Input::Generic::Dmidecode"];
-
sub isEnabled {
return 1;
}
@@ -28,89 +19,92 @@ sub doInventory {
my $inventory = $params{inventory};
my $logger = $params{logger};
- my @dmidecodeCpu = getCpusFromDmidecode();
+ my @cpus = _getCPUs($logger);
+
+ foreach my $cpu (@cpus) {
+ $inventory->addEntry(
+ section => 'CPUS',
+ entry => $cpu
+ );
+ }
+
+ if (any { $_->{NAME} =~ /QEMU/i } @cpus) {
+ $inventory->setHardware ({
+ VMSYSTEM => 'QEMU'
+ });
+ }
+}
+
+sub _getCPUs {
+ my ($logger) = @_;
+
+ my @dmidecodeInfos = getCpusFromDmidecode();
+ # the CPU description in WMI is false, we use the registry instead
+ my $registryInfos = getRegistryKey(
+ path => "HKEY_LOCAL_MACHINE/Hardware/Description/System/CentralProcessor",
+ logger => $logger
+ );
- my $vmsystem;
my $cpuId = 0;
+ my @cpus;
foreach my $object (getWmiObjects(
class => 'Win32_Processor',
properties => [ qw/NumberOfCores ProcessorId MaxClockSpeed/ ]
)) {
- # the CPU description in WMI is false, we use the registry instead
- # Hardware\Description\System\CentralProcessor\1
- # thank you Nicolas Richard
- my $info = getRegistryValue(
- path => "HKEY_LOCAL_MACHINE/Hardware/Description/System/CentralProcessor/$cpuId",
- logger => $logger
- );
+ my $dmidecodeInfo = $dmidecodeInfos[$cpuId];
+ my $registryInfo = $registryInfos->{"$cpuId/"};
-# my $cache = $object->{L2CacheSize}+$object->{L3CacheSize};
- my $core = $dmidecodeCpu[$cpuId]->{CORE} || $object->{NumberOfCores};
- my $thread = $dmidecodeCpu[$cpuId]->{THREAD};
- my $description = $info->{Identifier};
- my $name = $info->{ProcessorNameString};
- my $manufacturer = $info->{VendorIdentifier};
- my $id = $dmidecodeCpu[$cpuId]->{ID} || $object->{ProcessorId};
- my $speed = $dmidecodeCpu[$cpuId]->{SPEED} || $object->{MaxClockSpeed};
- my $serial = $dmidecodeCpu[$cpuId]->{SERIAL};
+ my $cpu = {
+ CORE => $dmidecodeInfo->{CORE} || $object->{NumberOfCores},
+ THREAD => $dmidecodeInfo->{THREAD},
+ DESCRIPTION => $registryInfo->{'/Identifier'},
+ NAME => $registryInfo->{'/ProcessorNameString'},
+ MANUFACTURER => $registryInfo->{'/VendorIdentifier'},
+ SERIAL => $dmidecodeInfo->{SERIAL},
+ SPEED => $dmidecodeInfo->{SPEED} || $object->{MaxClockSpeed},
+ ID => $dmidecodeInfo->{ID} || $object->{ProcessorId}
+ };
# Some information are missing on Win2000
- if (!$name) {
- $name = $ENV{PROCESSOR_IDENTIFIER};
- if ($name =~ s/,\s(\S+)$//) {
- $manufacturer = $1;
+ if (!$cpu->{NAME}) {
+ $cpu->{NAME} = $ENV{PROCESSOR_IDENTIFIER};
+ if ($cpu->{NAME} =~ s/,\s(\S+)$//) {
+ $cpu->{MANUFACTURER} = $1;
}
}
- if ($manufacturer) {
- $manufacturer =~ s/Genuine//;
- $manufacturer =~ s/(TMx86|TransmetaCPU)/Transmeta/;
- $manufacturer =~ s/CyrixInstead/Cyrix/;
- $manufacturer=~ s/CentaurHauls/VIA/;
+ if ($cpu->{MANUFACTURER}) {
+ $cpu->{MANUFACTURER} =~ s/Genuine//;
+ $cpu->{MANUFACTURER} =~ s/(TMx86|TransmetaCPU)/Transmeta/;
+ $cpu->{MANUFACTURER} =~ s/CyrixInstead/Cyrix/;
+ $cpu->{MANUFACTURER} =~ s/CentaurHauls/VIA/;
}
- if ($serial) {
- $serial =~ s/\s//g;
+
+ if ($cpu->{SERIAL}) {
+ $cpu->{SERIAL} =~ s/\s//g;
}
- if ($name) {
- $name =~ s/^\s+//;
- $name =~ s/\s+$//;
+ if ($cpu->{NAME}) {
+ $cpu->{NAME} =~ s/^\s+//;
+ $cpu->{NAME} =~ s/\s+$//;
- $vmsystem = "QEMU"if $name =~ /QEMU/i;
- if ($name =~ /([\d\.]+)s*(GHZ)/i) {
- $speed = {
+ if ($cpu->{NAME} =~ /([\d\.]+)s*(GHZ)/i) {
+ $cpu->{SPEED} = {
ghz => 1000,
mhz => 1,
- }->{lc($2)}*$1;
+ }->{lc($2)} * $1;
}
-
}
- $inventory->addEntry(
- section => 'CPUS',
- entry => {
- CORE => $core,
- THREAD => $thread,
- DESCRIPTION => $description,
- NAME => $name,
- MANUFACTURER => $manufacturer,
- SERIAL => $serial,
- SPEED => $speed,
- ID => $id
- }
- );
+ push @cpus, $cpu;
$cpuId++;
}
- if ($vmsystem) {
- $inventory->setHardware ({
- VMSYSTEM => $vmsystem
- });
- }
+ return @cpus;
}
1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Memory.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Memory.pm
index 4d74c2e..b2799b8 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Memory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Memory.pm
@@ -80,6 +80,16 @@ sub doInventory {
my $inventory = $params{inventory};
+ foreach my $memory (_getMemories()) {
+ $inventory->addEntry(
+ section => 'MEMORIES',
+ entry => $memory
+ );
+ }
+}
+
+sub _getMemories {
+
my $cpt = 0;
my @memories;
@@ -134,13 +144,7 @@ sub doInventory {
}
}
- foreach my $memory (@memories) {
- $inventory->addEntry(
- section => 'MEMORIES',
- entry => $memory
- );
- }
-
+ return @memories;
}
1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
index 6350989..794b4cd 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/OS.pm
@@ -57,11 +57,11 @@ sub doInventory {
OSCOMMENTS => $object->{CSDVersion},
SWAP => $object->{TotalSwapSpaceSize},
DESCRIPTION => $description,
- OSINSTALLDATE => $installDate
});
$inventory->setOperatingSystem({
NAME => "Windows",
+ INSTALL_DATE => $installDate,
# VERSION => $OSVersion,
KERNEL_VERSION => $object->{Version},
FULL_NAME => $object->{Caption},
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
index d74b45b..9db485d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Printers.pm
@@ -4,11 +4,6 @@ use strict;
use warnings;
use English qw(-no_match_vars);
-use Win32::TieRegistry (
- Delimiter => '/',
- ArrayValues => 0,
- qw/KEY_READ/
-);
use FusionInventory::Agent::Tools::Win32;
@@ -52,6 +47,7 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
+ my $logger = $params{logger};
foreach my $object (getWmiObjects(
class => 'Win32_Printer',
@@ -76,7 +72,7 @@ sub doInventory {
$object->{VerticalResolution};
}
- $object->{Serial} = _getUSBPrinterSerial($object->{PortName})
+ $object->{Serial} = _getUSBPrinterSerial($object->{PortName}, $logger)
if $object->{PortName} && $object->{PortName} =~ /USB/;
$inventory->addEntry(
@@ -103,29 +99,30 @@ sub doInventory {
}
sub _getUSBPrinterSerial {
- my ($portName) = @_;
-
- my $machKey = $Registry->Open('LMachine', {
- Access => KEY_READ | KEY_WOW64_64 ## no critic (ProhibitBitwise)
- }) or die "Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR";
+ my ($portName, $logger) = @_;
- # first, find the USB container ID for this printer
+ # find the ParentIdPrefix value for the printer matching given portname
my $prefix = _getUSBPrefix(
- $machKey->{"SYSTEM/CurrentControlSet/Enum/USBPRINT"},
+ getRegistryKey(
+ path => "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/USBPRINT",
+ logger => $logger
+ ),
$portName
);
return unless $prefix;
- # second, get the serial number from the ID container entry
+ # find the key name for the device matching given parentIdPrefix
my $serial = _getUSBSerial(
- $machKey->{"SYSTEM/CurrentControlSet/Enum/USB"},
+ getRegistryKey(
+ path => "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/USB",
+ logger => $logger
+ ),
$prefix
);
return $serial;
}
-# find the ParentIdPrefix value for the printer matching given portname
sub _getUSBPrefix {
my ($print, $portName) = @_;
@@ -153,7 +150,6 @@ sub _getUSBPrefix {
return;
}
-# find the key name for the device matching given parentIdPrefix
sub _getUSBSerial {
my ($usb, $prefix) = @_;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index e65d362..5b182ee 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -27,6 +27,7 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
+ my $logger = $params{logger};
if (is64bit()) {
@@ -43,10 +44,9 @@ sub doInventory {
foreach my $software (_getSoftwares(
softwares => $softwares64,
- is64bit => 1,
- logger => $logger
+ is64bit => 1
)) {
- _addSoftware(inventory => $inventory, entry => $software, logger => $logger);
+ _addSoftware(inventory => $inventory, entry => $software);
}
_processMSIE(
machKey => $machKey64,
@@ -66,7 +66,7 @@ sub doInventory {
is64bit => 0,
logger => $logger
)) {
- _addSoftware(inventory => $inventory, entry => $software, logger => $logger);
+ _addSoftware(inventory => $inventory, entry => $software);
}
_processMSIE(
machKey => $machKey32,
@@ -87,7 +87,7 @@ sub doInventory {
softwares => $softwares,
is64bit => 0
)) {
- _addSoftware(inventory => $inventory, entry => $software, logger => $logger);
+ _addSoftware(inventory => $inventory, entry => $software);
}
_processMSIE(
machKey => $machKey,
@@ -167,7 +167,6 @@ sub _addSoftware {
my $entry = $params{entry};
- $params{logger}->debug("_addSoftware() begin") if $params{logger};
# avoid duplicates
return if $seen->{$entry->{NAME}}->{$entry->{IS64BIT}}{$entry->{VERSION} || '_undef_'}++;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
index df701fd..1242d90 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
@@ -52,6 +52,19 @@ my %fields = (
PRINTERS => [ qw/COMMENT DESCRIPTION DRIVER NAME NETWORK PORT RESOLUTION
SHARED STATUS ERRSTATUS SERVERNAME SHARENAME
PRINTPROCESSOR SERIAL/ ],
+ BIOS => [ qw/SMODEL SMANUFACTURER SSN BDATE BVERSION
+ BMANUFACTURER MMANUFACTURER MSN MMODEL ASSETTAG
+ ENCLOSURESERIAL BIOSSERIAL
+ TYPE SKUNUMBER/ ],
+ HARDWARE => [ qw/USERID OSVERSION PROCESSORN OSCOMMENTS CHECKSUM
+ PROCESSORT NAME PROCESSORS SWAP ETIME TYPE OSNAME
+ IPADDR WORKGROUP DESCRIPTION MEMORY UUID DNS
+ LASTLOGGEDUSER USERDOMAIN DATELASTLOGGEDUSER
+ DEFAULTGATEWAY VMSYSTEM WINOWNER WINPRODID
+ WINPRODKEY WINCOMPANY WINLANG CHASSIS_TYPE/ ],
+ OPERATINGSYSTEM => [ qw/KERNEL_NAME KERNEL_VERSION NAME VERSION FULL_NAME
+ SERVICE_PACK INSTALL_DATE/ ],
+ ACCESSLOG => [ qw/USERID LOGDATE/ ],
VIRTUALMACHINES => [ qw/MEMORY NAME UUID STATUS SUBSYSTEM VMTYPE VCPU
VMID MAC COMMENT OWNER/ ],
LOGICAL_VOLUMES => [ qw/LV_NAME VGN_AME ATTR SIZE LV_UUID SEG_COUNT
@@ -60,7 +73,6 @@ my %fields = (
SIZE FREE PE_SIZE/ ],
VOLUME_GROUPS => [ qw/VG_NAME PV_COUNT LV_COUNT ATTR SIZE FREE VG_UUID
VG_EXTENT_SIZE/ ],
-
);
my %checks = (
@@ -242,52 +254,58 @@ sub computeLegacyValues {
sub setHardware {
my ($self, $args) = @_;
- foreach my $key (qw/USERID OSVERSION PROCESSORN OSCOMMENTS CHECKSUM
- PROCESSORT NAME PROCESSORS SWAP ETIME TYPE OSNAME IPADDR WORKGROUP
- DESCRIPTION MEMORY UUID DNS LASTLOGGEDUSER USERDOMAIN
- DATELASTLOGGEDUSER DEFAULTGATEWAY VMSYSTEM WINOWNER WINPRODID
- WINPRODKEY WINCOMPANY WINLANG CHASSIS_TYPE OSINSTALLDATE/) {
-# WINLANG: Windows Language, see MSDN Win32_OperatingSystem documentation
- if (exists $args->{$key}) {
- my $string = getSanitizedString($args->{$key});
- $self->{content}{HARDWARE}{$key} = $string;
+ foreach my $field (keys %$args) {
+ if (!$fields{HARDWARE}->{$field}) {
+ $self->{logger}->debug("unknown field $field for section HARDWARE");
+ next
}
+ $self->{content}->{HARDWARE}->{$field} =
+ getSanitizedString($args->{$field});
}
}
sub setOperatingSystem {
my ($self, $args) = @_;
- foreach my $key (qw/KERNEL_NAME KERNEL_VERSION NAME VERSION FULL_NAME SERVICE_PACK/) {
- next unless exists $args->{$key};
-
- my $string = getSanitizedString($args->{$key});
- $self->{content}{OPERATINGSYSTEM}{$key} = $string;
+ foreach my $field (keys %$args) {
+ if (!$fields{OPERATINGSYSTEM}->{$field}) {
+ $self->{logger}->debug(
+ "unknown field $field for section OPERATINGSYSTEM"
+ );
+ next
+ }
+ $self->{content}->{OPERATINGSYSTEM}->{$field} =
+ getSanitizedString($args->{$field});
}
}
sub setBios {
my ($self, $args) = @_;
- foreach my $key (qw/SMODEL SMANUFACTURER SSN BDATE BVERSION BMANUFACTURER
- MMANUFACTURER MSN MMODEL ASSETTAG ENCLOSURESERIAL BASEBOARDSERIAL
- BIOSSERIAL TYPE SKUNUMBER/) {
-
- if (exists $args->{$key}) {
- my $string = getSanitizedString($args->{$key});
- $self->{content}{BIOS}{$key} = $string;
+ foreach my $field (keys %$args) {
+ if (!$fields{BIOS}->{$field}) {
+ $self->{logger}->debug("unknown field $field for section BIOS");
+ next
}
+
+ $self->{content}->{BIOS}->{$field} =
+ getSanitizedString($args->{$field});
}
}
sub setAccessLog {
my ($self, $args) = @_;
- foreach my $key (qw/USERID LOGDATE/) {
-
- if (exists $args->{$key}) {
- $self->{content}{ACCESSLOG}{$key} = $args->{$key};
+ foreach my $field (keys %$args) {
+ if (!$fields{ACCESSLOG}->{$field}) {
+ $self->{logger}->debug(
+ "unknown field $field for section ACCESSLOG"
+ );
+ next
}
+
+ $self->{content}->{ACCESSLOG}->{$field} =
+ getSanitizedString($args->{$field});
}
}
@@ -887,6 +905,10 @@ deprecated in the future.
The Service Pack level reported by the operating system. This field is only
present on systems which use this notion.
+=item INSTALL_DATE
+
+The operating system installation date.
+
=back
=head2 MONITORS
diff --git a/lib/FusionInventory/Agent/Tools/Hostname.pm b/lib/FusionInventory/Agent/Tools/Hostname.pm
index 3c73a80..16fcfed 100644
--- a/lib/FusionInventory/Agent/Tools/Hostname.pm
+++ b/lib/FusionInventory/Agent/Tools/Hostname.pm
@@ -9,6 +9,7 @@ use English qw(-no_match_vars);
BEGIN {
if ($OSNAME eq 'MSWin32') {
+ no warnings 'redefine';
Win32::API->require();
# Kernel32.dll is used more or less everywhere.
# Without this, Win32::API will release the DLL even
@@ -19,21 +20,22 @@ BEGIN {
sub getHostname {
- if ($OSNAME eq 'MSWin32') {
- my $GetComputerName = Win32::API->new("kernel32", "GetComputerNameExW", ["I", "P", "P"], "N");
- my $buffer = "\x00" x 1024;
- my $N=1024;#pack ("c4", 160,0,0,0);
-
- $GetComputerName->Call(3, $buffer, $N);
-
- # GetComputerNameExW returns the string in UTF16, we have to change it
- # to UTF8
- return encode("UTF-8", substr(decode("UCS-2le", $buffer),0,ord $N));
- } else {
+ if ($OSNAME ne 'MSWin32') {
Sys::Hostname->require();
return Sys::Hostname::hostname();
}
+ my $getComputerName = Win32::API->new(
+ "kernel32", "GetComputerNameExW", ["I", "P", "P"], "N"
+ );
+ my $buffer = "\x00" x 1024;
+ my $n = 1024; #pack ("c4", 160,0,0,0);
+
+ $getComputerName->Call(3, $buffer, $n);
+
+ # GetComputerNameExW returns the string in UTF16, we have to change it
+ # to UTF8
+ return encode("UTF-8", substr(decode("UCS-2le", $buffer), 0, ord $n));
}
1;
diff --git a/lib/FusionInventory/Agent/Tools/Linux.pm b/lib/FusionInventory/Agent/Tools/Linux.pm
index f2e90d4..ec5a364 100644
--- a/lib/FusionInventory/Agent/Tools/Linux.pm
+++ b/lib/FusionInventory/Agent/Tools/Linux.pm
@@ -166,12 +166,14 @@ sub getDevicesFromHal {
sub getDevicesFromProc {
my (%params) = @_;
+ my $logger = $params{logger};
+
# compute list of devices
my @names;
foreach my $file (glob ("/sys/block/*")) {
- next unless $file =~ /([sh]d[a-z]|fd\d)$/;
- push(@names, $1);
+ next unless $file =~ /([shv]d[a-z]|fd\d)$/;
+ push @names, $1;
}
my $command = getFirstLine(command => '/sbin/fdisk -v') =~ '^GNU' ?
@@ -180,14 +182,14 @@ sub getDevicesFromProc {
my $handle = getFileHandle(
command => $command,
- logger => $params{logger}
+ logger => $logger
);
return unless $handle;
while (my $line = <$handle>) {
- next unless $line =~ (/^\/dev\/([sh]d[a-z])/);
- push(@names, $1);
+ next unless $line =~ m{^/dev/([shv]d[a-z])};
+ push @names, $1;
}
close $handle;
@@ -198,25 +200,17 @@ sub getDevicesFromProc {
# extract informations
my @devices;
foreach my $name (@names) {
- my $device;
- $device->{NAME} = $name;
- $device->{MANUFACTURER} = _getValueFromSysProc(
- $params{logger}, $device, 'vendor'
- );
- $device->{MODEL} = _getValueFromSysProc(
- $params{logger}, $device, 'model'
- );
- $device->{FIRMWARE} = _getValueFromSysProc(
- $params{logger}, $device, 'rev'
- );
- $device->{SERIALNUMBER} = _getValueFromSysProc(
- $params{logger}, $device, 'serial'
- );
- $device->{TYPE} = _getValueFromSysProc(
- $params{logger}, $device, 'removable'
- ) ?
- 'removable' : 'disk';
- push (@devices, $device);
+ my $device = {
+ NAME => $name,
+ MANUFACTURER => _getValueFromSysProc($logger, $name, 'vendor'),
+ MODEL => _getValueFromSysProc($logger, $name, 'model'),
+ FIRMWARE => _getValueFromSysProc($logger, $name, 'rev'),
+ SERIALNUMBER => _getValueFromSysProc($logger, $name, 'serial'),
+ TYPE =>
+ _getValueFromSysProc($logger, $name, 'removable') ?
+ 'removable' : 'disk'
+ };
+ push @devices, $device;
}
return @devices;
@@ -225,15 +219,17 @@ sub getDevicesFromProc {
sub _getValueFromSysProc {
my ($logger, $device, $key) = @_;
+ ## no critic (ExplicitReturnUndef)
+
my $file =
-f "/sys/block/$device/device/$key" ? "/sys/block/$device/device/$key" :
-f "/proc/ide/$device/$key" ? "/proc/ide/$device/$key" :
undef;
- return unless $file;
+ return undef unless $file;
my $handle = getFileHandle(file => $file, logger => $logger);
- return unless $handle;
+ return undef unless $handle;
my $value = <$handle>;
close $handle;
diff --git a/lib/FusionInventory/Agent/Tools/Win32.pm b/lib/FusionInventory/Agent/Tools/Win32.pm
index 1c49573..f062ac7 100644
--- a/lib/FusionInventory/Agent/Tools/Win32.pm
+++ b/lib/FusionInventory/Agent/Tools/Win32.pm
@@ -30,6 +30,7 @@ our @EXPORT = qw(
KEY_WOW64_64
KEY_WOW64_32
getRegistryValue
+ getRegistryKey
getWmiObjects
getLocalCodepage
);
@@ -96,7 +97,7 @@ sub getRegistryValue {
my (%params) = @_;
my ($root, $keyName, $valueName);
- if ($params{path} =~ /^(HKEY\S+?)\/(.*)\/([^\/.]*)/ ) {
+ if ($params{path} =~ /^(HKEY_\S+)\/(.+)\/([^\/]+)/ ) {
$root = $1;
$keyName = $2;
$valueName = $3;
@@ -107,20 +108,52 @@ sub getRegistryValue {
return;
}
- my $machKey = is64bit() ?
- $Registry->Open($root, { Access=> KEY_READ | KEY_WOW64_64 } ) : ## no critic (ProhibitBitwise)
- $Registry->Open($root, { Access=> KEY_READ } ) ;
+ my $key = _getRegistryKey(
+ logger => $params{logger},
+ root => $root,
+ keyName => $keyName
+ );
+ return $key->{"/$valueName"};
+}
+
+sub getRegistryKey {
+ my (%params) = @_;
+
+ my ($root, $keyName);
+ if ($params{path} =~ /^(HKEY_\S+)\/(.+)/ ) {
+ $root = $1;
+ $keyName = $2;
+ } else {
+ $params{logger}->error(
+ "Failed to parse '$params{path}'. Does it start with HKEY_?"
+ ) if $params{logger};
+ return;
+ }
+
+ return _getRegistryKey(
+ logger => $params{logger},
+ root => $root,
+ keyName => $keyName
+ );
+}
+
+sub _getRegistryKey {
+ my (%params) = @_;
- if (!$machKey) {
- $params{logger}->error("Can't open 'root': $EXTENDED_OS_ERROR")
- if $params{logger};
+ ## no critic (ProhibitBitwise)
+ my $rootKey = is64bit() ?
+ $Registry->Open($params{root}, { Access=> KEY_READ | KEY_WOW64_64 } ) :
+ $Registry->Open($params{root}, { Access=> KEY_READ } ) ;
+
+ if (!$rootKey) {
+ $params{logger}->error(
+ "Can't open $params{root} key: $EXTENDED_OS_ERROR"
+ ) if $params{logger};
return;
}
- my $key = $machKey->Open($keyName);
- my $value = $key->{$valueName};
+ my $key = $rootKey->Open($params{keyName});
- return if ref $value;
- return $value;
+ return $key;
}
1;
@@ -176,6 +209,16 @@ E.g: HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/ProductName
=back
-=head2 getHostnameFromKernel32
+=head2 getRegistryKey(%params)
+
+Returns a key from the registry.
-Returns the computer name and its domain, as a list.
+=over
+
+=item path a string in hive/key format
+
+E.g: HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion
+
+=item logger
+
+=back
diff --git a/resources/bsd/fstab/freebsd-1 b/resources/bsd/fstab/freebsd-1
new file mode 100644
index 0000000..41bfd9a
--- /dev/null
+++ b/resources/bsd/fstab/freebsd-1
@@ -0,0 +1,5 @@
+# Device Mountpoint FStype Options Dump Pass#
+/dev/da0s1b none swap sw 0 0
+/dev/da0s1a / ufs rw 1 1
+/dev/da0s1d /usr ufs rw 2 2
+/dev/acd0 /cdrom cd9660 ro,noauto 0 0
diff --git a/resources/generic/dmidecode/windows-7 b/resources/generic/dmidecode/windows-7
new file mode 100644
index 0000000..3ff0578
--- /dev/null
+++ b/resources/generic/dmidecode/windows-7
@@ -0,0 +1,1034 @@
+# dmidecode 2.10
+SMBIOS 2.6 present.
+101 structures occupying 3552 bytes.
+Table at 0x003B3688.
+
+Handle 0x0000, DMI type 0, 24 bytes
+BIOS Information
+ Vendor: American Megatrends Inc.
+ Version: 1503
+ Release Date: 03/10/2011
+ Address: 0xF0000
+ Runtime Size: 64 kB
+ ROM Size: 4096 kB
+ Characteristics:
+ PCI is supported
+ BIOS is upgradeable
+ BIOS shadowing is allowed
+ Boot from CD is supported
+ Selectable boot is supported
+ BIOS ROM is socketed
+ EDD is supported
+ 5.25"/1.2 MB floppy services are supported (int 13h)
+ 3.5"/720 kB floppy services are supported (int 13h)
+ 3.5"/2.88 MB floppy services are supported (int 13h)
+ Print screen service is supported (int 5h)
+ 8042 keyboard services are supported (int 9h)
+ Serial services are supported (int 14h)
+ Printer services are supported (int 17h)
+ ACPI is supported
+ USB legacy is supported
+ BIOS boot specification is supported
+ Targeted content distribution is supported
+ BIOS Revision: 4.6
+
+Handle 0x0001, DMI type 1, 27 bytes
+System Information
+ Manufacturer: System manufacturer
+ Product Name: System Product Name
+ Version: System Version
+ Serial Number: System Serial Number
+ UUID: 1E00E6E0-008C-4400-9AAD-F46D04972D3E
+ Wake-up Type: Power Switch
+ SKU Number: To be filled by O.E.M.
+ Family: To be filled by O.E.M.
+
+Handle 0x0002, DMI type 2, 15 bytes
+Base Board Information
+ Manufacturer: ASUSTeK Computer INC.
+ Product Name: P8P67
+ Version: Rev 1.xx
+ Serial Number: MT7013K30709271
+ Asset Tag: To be filled by O.E.M.
+ Features:
+ Board is a hosting board
+ Board is replaceable
+ Location In Chassis: To be filled by O.E.M.
+ Chassis Handle: 0x0003
+ Type: Motherboard
+ Contained Object Handles: 0
+
+Handle 0x0003, DMI type 3, 21 bytes
+Chassis Information
+ Manufacturer: Chassis Manufacture
+ Type: Desktop
+ Lock: Not Present
+ Version: Chassis Version
+ Serial Number: Chassis Serial Number
+ Asset Tag: Asset-1234567890
+ Boot-up State: Safe
+ Power Supply State: Safe
+ Thermal State: Safe
+ Security Status: None
+ OEM Information: 0x00000000
+ Height: Unspecified
+ Number Of Power Cords: 1
+ Contained Elements: 0
+
+Handle 0x0004, DMI type 4, 42 bytes
+Processor Information
+ Socket Designation: LGA1155
+ Type: Central Processor
+ Family: Core 2 Duo
+ Manufacturer: Intel
+ ID: A7 06 02 00 FF FB EB BF
+ Signature: Type 0, Family 6, Model 42, Stepping 7
+ Flags:
+ FPU (Floating-point unit on-chip)
+ VME (Virtual mode extension)
+ DE (Debugging extension)
+ PSE (Page size extension)
+ TSC (Time stamp counter)
+ MSR (Model specific registers)
+ PAE (Physical address extension)
+ MCE (Machine check exception)
+ CX8 (CMPXCHG8 instruction supported)
+ APIC (On-chip APIC hardware supported)
+ SEP (Fast system call)
+ MTRR (Memory type range registers)
+ PGE (Page global enable)
+ MCA (Machine check architecture)
+ CMOV (Conditional move instruction supported)
+ PAT (Page attribute table)
+ PSE-36 (36-bit page size extension)
+ CLFSH (CLFLUSH instruction supported)
+ DS (Debug store)
+ ACPI (ACPI supported)
+ MMX (MMX technology supported)
+ FXSR (Fast floating-point save and restore)
+ SSE (Streaming SIMD extensions)
+ SSE2 (Streaming SIMD extensions 2)
+ SS (Self-snoop)
+ HTT (Hyper-threading technology)
+ TM (Thermal monitor supported)
+ PBE (Pending break enabled)
+ Version: Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz
+ Voltage: 1.0 V
+ External Clock: 100 MHz
+ Max Speed: 3800 MHz
+ Current Speed: 2800 MHz
+ Status: Populated, Enabled
+ Upgrade: Other
+ L1 Cache Handle: 0x0005
+ L2 Cache Handle: 0x0006
+ L3 Cache Handle: 0x0007
+ Serial Number: To Be Filled By O.E.M.
+ Asset Tag: To Be Filled By O.E.M.
+ Part Number: To Be Filled By O.E.M.
+ Core Count: 4
+ Core Enabled: 1
+ Characteristics:
+ 64-bit capable
+
+Handle 0x0005, DMI type 7, 19 bytes
+Cache Information
+ Socket Designation: L1-Cache
+ Configuration: Enabled, Not Socketed, Level 1
+ Operational Mode: Write Back
+ Location: Internal
+ Installed Size: 256 kB
+ Maximum Size: 256 kB
+ Supported SRAM Types:
+ Other
+ Installed SRAM Type: Other
+ Speed: Unknown
+ Error Correction Type: None
+ System Type: Unified
+ Associativity: 8-way Set-associative
+
+Handle 0x0006, DMI type 7, 19 bytes
+Cache Information
+ Socket Designation: L2-Cache
+ Configuration: Enabled, Not Socketed, Level 2
+ Operational Mode: Varies With Memory Address
+ Location: Internal
+ Installed Size: 1024 kB
+ Maximum Size: 1024 kB
+ Supported SRAM Types:
+ Other
+ Installed SRAM Type: Other
+ Speed: Unknown
+ Error Correction Type: None
+ System Type: Unified
+ Associativity: 8-way Set-associative
+
+Handle 0x0007, DMI type 7, 19 bytes
+Cache Information
+ Socket Designation: L3-Cache
+ Configuration: Disabled, Not Socketed, Level 3
+ Operational Mode: Unknown
+ Location: Internal
+ Installed Size: 6144 kB
+ Maximum Size: 6144 kB
+ Supported SRAM Types:
+ Other
+ Installed SRAM Type: Other
+ Speed: Unknown
+ Error Correction Type: None
+ System Type: Unified
+ Associativity: Other
+
+Handle 0x0008, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: PS/2 Keyboard
+ Internal Connector Type: None
+ External Reference Designator: PS/2 Keyboard
+ External Connector Type: PS/2
+ Port Type: Keyboard Port
+
+Handle 0x0009, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: USB9_10
+ Internal Connector Type: None
+ External Reference Designator: USB9_10
+ External Connector Type: Access Bus (USB)
+ Port Type: USB
+
+Handle 0x000A, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: USB11_12
+ Internal Connector Type: None
+ External Reference Designator: USB11_12
+ External Connector Type: Access Bus (USB)
+ Port Type: USB
+
+Handle 0x000B, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: GbE LAN
+ Internal Connector Type: None
+ External Reference Designator: GbE LAN
+ External Connector Type: RJ-45
+ Port Type: Network Port
+
+Handle 0x000C, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: AUDIO
+ Internal Connector Type: None
+ External Reference Designator: AUDIO
+ External Connector Type: Other
+ Port Type: Audio Port
+
+Handle 0x000D, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: SATA1
+ Internal Connector Type: SAS/SATA Plug Receptacle
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: SATA
+
+Handle 0x000E, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: SATA2
+ Internal Connector Type: SAS/SATA Plug Receptacle
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: SATA
+
+Handle 0x000F, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: SATA3
+ Internal Connector Type: SAS/SATA Plug Receptacle
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: SATA
+
+Handle 0x0010, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: SATA4
+ Internal Connector Type: SAS/SATA Plug Receptacle
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: SATA
+
+Handle 0x0011, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: SATA5
+ Internal Connector Type: SAS/SATA Plug Receptacle
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: SATA
+
+Handle 0x0012, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: SATA6
+ Internal Connector Type: SAS/SATA Plug Receptacle
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: SATA
+
+Handle 0x0013, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: USB1_2
+ Internal Connector Type: Access Bus (USB)
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: USB
+
+Handle 0x0014, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: USB3_4
+ Internal Connector Type: Access Bus (USB)
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: USB
+
+Handle 0x0015, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: USB5_6
+ Internal Connector Type: Access Bus (USB)
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: USB
+
+Handle 0x0016, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: USB7_8
+ Internal Connector Type: Access Bus (USB)
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: USB
+
+Handle 0x0017, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: AAFP
+ Internal Connector Type: Mini Jack (headphones)
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: Audio Port
+
+Handle 0x0018, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: CPU_FAN
+ Internal Connector Type: Other
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: Other
+
+Handle 0x0019, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: CHA_FAN1
+ Internal Connector Type: Other
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: Other
+
+Handle 0x001A, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: PWR_FAN
+ Internal Connector Type: Other
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: Other
+
+Handle 0x001B, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: PATA_IDE
+ Internal Connector Type: On Board IDE
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: Other
+
+Handle 0x001C, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: F_ESATA
+ Internal Connector Type: SAS/SATA Plug Receptacle
+ External Reference Designator: Not Specified
+ External Connector Type: None
+ Port Type: SATA
+
+Handle 0x001D, DMI type 9, 17 bytes
+System Slot Information
+ Designation: PCIEX16_1
+ Type: 32-bit PCI Express
+ Current Usage: In Use
+ Length: Short
+ ID: 1
+ Characteristics:
+ 3.3 V is provided
+ Opening is shared
+ PME signal is supported
+ Bus Address: 0000:00:01.0
+
+Handle 0x001E, DMI type 9, 17 bytes
+System Slot Information
+ Designation: PCIEX1_1
+ Type: 32-bit PCI Express
+ Current Usage: In Use
+ Length: Short
+ ID: 2
+ Characteristics:
+ 3.3 V is provided
+ Opening is shared
+ PME signal is supported
+ Bus Address: 0000:00:1c.3
+
+Handle 0x001F, DMI type 9, 17 bytes
+System Slot Information
+ Designation: PCIEX1_2
+ Type: 32-bit PCI Express
+ Current Usage: In Use
+ Length: Short
+ ID: 3
+ Characteristics:
+ 3.3 V is provided
+ Opening is shared
+ PME signal is supported
+ Bus Address: 0000:00:1c.4
+
+Handle 0x0020, DMI type 9, 17 bytes
+System Slot Information
+ Designation: PCI1
+ Type: 32-bit PCI
+ Current Usage: In Use
+ Length: Short
+ ID: 4
+ Characteristics:
+ 3.3 V is provided
+ Opening is shared
+ PME signal is supported
+ Bus Address: 0000:00:1c.6
+
+Handle 0x0021, DMI type 10, 6 bytes
+On Board Device Information
+ Type: Ethernet
+ Status: Enabled
+ Description: Onboard Ethernet
+
+Handle 0x0022, DMI type 11, 5 bytes
+OEM Strings
+ String 1: To Be Filled By O.E.M.
+
+Handle 0x0023, DMI type 12, 5 bytes
+System Configuration Options
+ Option 1: To Be Filled By O.E.M.
+
+Handle 0x0024, DMI type 16, 15 bytes
+Physical Memory Array
+ Location: System Board Or Motherboard
+ Use: System Memory
+ Error Correction Type: None
+ Maximum Capacity: 32 GB
+ Error Information Handle: No Error
+ Number Of Devices: 4
+
+Handle 0x0025, DMI type 18, 23 bytes
+32-bit Memory Error Information
+ Type: OK
+ Granularity: Unknown
+ Operation: Unknown
+ Vendor Syndrome: Unknown
+ Memory Array Address: Unknown
+ Device Address: Unknown
+ Resolution: Unknown
+
+Handle 0x0026, DMI type 19, 15 bytes
+Memory Array Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x000FFFFFFFF
+ Range Size: 4 GB
+ Physical Array Handle: 0x0024
+ Partition Width: 0
+
+Handle 0x0027, DMI type 17, 28 bytes
+Memory Device
+ Array Handle: 0x0024
+ Error Information Handle: No Error
+ Total Width: 64 bits
+ Data Width: 64 bits
+ Size: No Module Installed
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM0
+ Bank Locator: BANK0
+ Type: Unknown
+ Type Detail: Synchronous
+ Speed: Unknown
+ Manufacturer: Manufacturer0
+ Serial Number: SerNum0
+ Asset Tag: AssetTagNum0
+ Part Number: Array1_PartNumber0
+ Rank: Unknown
+
+Handle 0x0028, DMI type 18, 23 bytes
+32-bit Memory Error Information
+ Type: OK
+ Granularity: Unknown
+ Operation: Unknown
+ Vendor Syndrome: Unknown
+ Memory Array Address: Unknown
+ Device Address: Unknown
+ Resolution: Unknown
+
+Handle 0x0029, DMI type 126, 19 bytes
+Inactive
+
+Handle 0x002A, DMI type 17, 28 bytes
+Memory Device
+ Array Handle: 0x0024
+ Error Information Handle: No Error
+ Total Width: 64 bits
+ Data Width: 64 bits
+ Size: 2048 MB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM1
+ Bank Locator: BANK1
+ Type: <OUT OF SPEC>
+ Type Detail: Synchronous
+ Speed: 1600 MHz
+ Manufacturer: Undefined
+ Serial Number: 0000000
+ Asset Tag: AssetTagNum1
+ Part Number: F3-12800CL9-2GBXL
+ Rank: 2
+
+Handle 0x002B, DMI type 18, 23 bytes
+32-bit Memory Error Information
+ Type: OK
+ Granularity: Unknown
+ Operation: Unknown
+ Vendor Syndrome: Unknown
+ Memory Array Address: Unknown
+ Device Address: Unknown
+ Resolution: Unknown
+
+Handle 0x002C, DMI type 20, 19 bytes
+Memory Device Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x0007FFFFFFF
+ Range Size: 2 GB
+ Physical Device Handle: 0x002A
+ Memory Array Mapped Address Handle: 0x0026
+ Partition Row Position: 1
+
+Handle 0x002D, DMI type 17, 28 bytes
+Memory Device
+ Array Handle: 0x0024
+ Error Information Handle: No Error
+ Total Width: 64 bits
+ Data Width: 64 bits
+ Size: No Module Installed
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM2
+ Bank Locator: BANK2
+ Type: Unknown
+ Type Detail: Synchronous
+ Speed: Unknown
+ Manufacturer: Manufacturer2
+ Serial Number: SerNum2
+ Asset Tag: AssetTagNum2
+ Part Number: Array1_PartNumber2
+ Rank: Unknown
+
+Handle 0x002E, DMI type 18, 23 bytes
+32-bit Memory Error Information
+ Type: OK
+ Granularity: Unknown
+ Operation: Unknown
+ Vendor Syndrome: Unknown
+ Memory Array Address: Unknown
+ Device Address: Unknown
+ Resolution: Unknown
+
+Handle 0x002F, DMI type 126, 19 bytes
+Inactive
+
+Handle 0x0030, DMI type 17, 28 bytes
+Memory Device
+ Array Handle: 0x0024
+ Error Information Handle: No Error
+ Total Width: 64 bits
+ Data Width: 64 bits
+ Size: 2048 MB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM3
+ Bank Locator: BANK3
+ Type: <OUT OF SPEC>
+ Type Detail: Synchronous
+ Speed: 1600 MHz
+ Manufacturer: Undefined
+ Serial Number: 0000000
+ Asset Tag: AssetTagNum3
+ Part Number: F3-12800CL9-2GBXL
+ Rank: 2
+
+Handle 0x0031, DMI type 18, 23 bytes
+32-bit Memory Error Information
+ Type: OK
+ Granularity: Unknown
+ Operation: Unknown
+ Vendor Syndrome: Unknown
+ Memory Array Address: Unknown
+ Device Address: Unknown
+ Resolution: Unknown
+
+Handle 0x0032, DMI type 20, 19 bytes
+Memory Device Mapped Address
+ Starting Address: 0x00080000000
+ Ending Address: 0x000FFFFFFFF
+ Range Size: 2 GB
+ Physical Device Handle: 0x0030
+ Memory Array Mapped Address Handle: 0x0026
+ Partition Row Position: 1
+
+Handle 0x0033, DMI type 32, 20 bytes
+System Boot Information
+ Status: No errors detected
+
+Handle 0x0034, DMI type 34, 11 bytes
+Management Device
+ Description: LM78-1
+ Type: LM78
+ Address: 0x00000000
+ Address Type: I/O Port
+
+Handle 0x0035, DMI type 26, 22 bytes
+Voltage Probe
+ Description: LM78A
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x0036, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 1
+ Upper Non-critical Threshold: 2
+ Lower Critical Threshold: 3
+ Upper Critical Threshold: 4
+ Lower Non-recoverable Threshold: 5
+ Upper Non-recoverable Threshold: 6
+
+Handle 0x0037, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0034
+ Component Handle: 0x0034
+ Threshold Handle: 0x0035
+
+Handle 0x0038, DMI type 28, 22 bytes
+Temperature Probe
+ Description: LM78A
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x0039, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 1
+ Upper Non-critical Threshold: 2
+ Lower Critical Threshold: 3
+ Upper Critical Threshold: 4
+ Lower Non-recoverable Threshold: 5
+ Upper Non-recoverable Threshold: 6
+
+Handle 0x003A, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0034
+ Component Handle: 0x0037
+ Threshold Handle: 0x0038
+
+Handle 0x003B, DMI type 27, 14 bytes
+Cooling Device
+ Temperature Probe Handle: 0x0038
+ Type: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Cooling Unit Group: 1
+ OEM-specific Information: 0x00000000
+ Nominal Speed: Unknown Or Non-rotating
+
+Handle 0x003C, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 1
+ Upper Non-critical Threshold: 2
+ Lower Critical Threshold: 3
+ Upper Critical Threshold: 4
+ Lower Non-recoverable Threshold: 5
+ Upper Non-recoverable Threshold: 6
+
+Handle 0x003D, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0034
+ Component Handle: 0x003A
+ Threshold Handle: 0x003B
+
+Handle 0x003E, DMI type 27, 14 bytes
+Cooling Device
+ Temperature Probe Handle: 0x0038
+ Type: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Cooling Unit Group: 1
+ OEM-specific Information: 0x00000000
+ Nominal Speed: Unknown Or Non-rotating
+
+Handle 0x003F, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 1
+ Upper Non-critical Threshold: 2
+ Lower Critical Threshold: 3
+ Upper Critical Threshold: 4
+ Lower Non-recoverable Threshold: 5
+ Upper Non-recoverable Threshold: 6
+
+Handle 0x0040, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0034
+ Component Handle: 0x003D
+ Threshold Handle: 0x003E
+
+Handle 0x0041, DMI type 29, 22 bytes
+Electrical Current Probe
+ Description: ABC
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x0042, DMI type 36, 16 bytes
+Management Device Threshold Data
+
+Handle 0x0043, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0034
+ Component Handle: 0x0040
+ Threshold Handle: 0x003E
+
+Handle 0x0044, DMI type 39, 22 bytes
+System Power Supply
+ Power Unit Group: 1
+ Location: To Be Filled By O.E.M.
+ Name: To Be Filled By O.E.M.
+ Manufacturer: To Be Filled By O.E.M.
+ Serial Number: To Be Filled By O.E.M.
+ Asset Tag: To Be Filled By O.E.M.
+ Model Part Number: To Be Filled By O.E.M.
+ Revision: To Be Filled By O.E.M.
+ Max Power Capacity: Unknown
+ Status: Not Present
+ Type: <OUT OF SPEC>
+ Input Voltage Range Switching: <OUT OF SPEC>
+ Plugged: Yes
+ Hot Replaceable: No
+ Input Voltage Probe Handle: 0x0035
+ Cooling Device Handle: 0x003B
+ Input Current Probe Handle: 0x0041
+
+Handle 0x0045, DMI type 34, 16 bytes
+Management Device
+ Description: 2
+ Type: LM78
+ Address: 0x00000000
+ Address Type: I/O Port
+
+Handle 0x0046, DMI type 26, 22 bytes
+Voltage Probe
+ Description: LM78B
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x0047, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 7
+ Upper Non-critical Threshold: 8
+ Lower Critical Threshold: 8
+ Upper Critical Threshold: 10
+ Lower Non-recoverable Threshold: 11
+ Upper Non-recoverable Threshold: 12
+
+Handle 0x0048, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0045
+ Component Handle: 0x0045
+ Threshold Handle: 0x0046
+
+Handle 0x0049, DMI type 26, 22 bytes
+Voltage Probe
+ Description: LM78B
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x004A, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 13
+ Upper Non-critical Threshold: 14
+ Lower Critical Threshold: 15
+ Upper Critical Threshold: 16
+ Lower Non-recoverable Threshold: 17
+ Upper Non-recoverable Threshold: 18
+
+Handle 0x004B, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0045
+ Component Handle: 0x0048
+ Threshold Handle: 0x0049
+
+Handle 0x004C, DMI type 28, 22 bytes
+Temperature Probe
+ Description: LM78B
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x004D, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 1
+ Upper Non-critical Threshold: 2
+ Lower Critical Threshold: 3
+ Upper Critical Threshold: 4
+ Lower Non-recoverable Threshold: 5
+ Upper Non-recoverable Threshold: 6
+
+Handle 0x004E, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0045
+ Component Handle: 0x004B
+ Threshold Handle: 0x004C
+
+Handle 0x004F, DMI type 27, 14 bytes
+Cooling Device
+ Temperature Probe Handle: 0x004C
+ Type: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Cooling Unit Group: 1
+ OEM-specific Information: 0x00000000
+ Nominal Speed: Unknown Or Non-rotating
+
+Handle 0x0050, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 1
+ Upper Non-critical Threshold: 2
+ Lower Critical Threshold: 3
+ Upper Critical Threshold: 4
+ Lower Non-recoverable Threshold: 5
+ Upper Non-recoverable Threshold: 6
+
+Handle 0x0051, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0045
+ Component Handle: 0x004E
+ Threshold Handle: 0x004F
+
+Handle 0x0052, DMI type 28, 22 bytes
+Temperature Probe
+ Description: LM78B
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x0053, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 1
+ Upper Non-critical Threshold: 2
+ Lower Critical Threshold: 3
+ Upper Critical Threshold: 4
+ Lower Non-recoverable Threshold: 5
+ Upper Non-recoverable Threshold: 6
+
+Handle 0x0054, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0045
+ Component Handle: 0x0051
+ Threshold Handle: 0x0052
+
+Handle 0x0055, DMI type 27, 14 bytes
+Cooling Device
+ Temperature Probe Handle: 0x0052
+ Type: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Cooling Unit Group: 1
+ OEM-specific Information: 0x00000000
+ Nominal Speed: Unknown Or Non-rotating
+
+Handle 0x0056, DMI type 36, 16 bytes
+Management Device Threshold Data
+ Lower Non-critical Threshold: 1
+ Upper Non-critical Threshold: 2
+ Lower Critical Threshold: 3
+ Upper Critical Threshold: 4
+ Lower Non-recoverable Threshold: 5
+ Upper Non-recoverable Threshold: 6
+
+Handle 0x0057, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0045
+ Component Handle: 0x0054
+ Threshold Handle: 0x0055
+
+Handle 0x0058, DMI type 29, 22 bytes
+Electrical Current Probe
+ Description: DEF
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x0059, DMI type 36, 16 bytes
+Management Device Threshold Data
+
+Handle 0x005A, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0045
+ Component Handle: 0x0057
+ Threshold Handle: 0x0055
+
+Handle 0x005B, DMI type 29, 22 bytes
+Electrical Current Probe
+ Description: GHI
+ Location: <OUT OF SPEC>
+ Status: <OUT OF SPEC>
+ Maximum Value: Unknown
+ Minimum Value: Unknown
+ Resolution: Unknown
+ Tolerance: Unknown
+ Accuracy: Unknown
+ OEM-specific Information: 0x00000000
+ Nominal Value: Unknown
+
+Handle 0x005C, DMI type 36, 16 bytes
+Management Device Threshold Data
+
+Handle 0x005D, DMI type 35, 11 bytes
+Management Device Component
+ Description: To Be Filled By O.E.M.
+ Management Device Handle: 0x0045
+ Component Handle: 0x005A
+ Threshold Handle: 0x0055
+
+Handle 0x005E, DMI type 39, 22 bytes
+System Power Supply
+ Power Unit Group: 1
+ Location: To Be Filled By O.E.M.
+ Name: To Be Filled By O.E.M.
+ Manufacturer: To Be Filled By O.E.M.
+ Serial Number: To Be Filled By O.E.M.
+ Asset Tag: To Be Filled By O.E.M.
+ Model Part Number: To Be Filled By O.E.M.
+ Revision: To Be Filled By O.E.M.
+ Max Power Capacity: Unknown
+ Status: Not Present
+ Type: <OUT OF SPEC>
+ Input Voltage Range Switching: <OUT OF SPEC>
+ Plugged: Yes
+ Hot Replaceable: No
+ Input Voltage Probe Handle: 0x0035
+ Cooling Device Handle: 0x003B
+ Input Current Probe Handle: 0x0041
+
+Handle 0x005F, DMI type 41, 11 bytes
+Onboard Device
+ Reference Designation: Onboard IGD
+ Type: Video
+ Status: Enabled
+ Type Instance: 1
+ Bus Address: 0000:00:02.0
+
+Handle 0x0060, DMI type 41, 11 bytes
+Onboard Device
+ Reference Designation: Onboard LAN
+ Type: Ethernet
+ Status: Enabled
+ Type Instance: 1
+ Bus Address: 0000:00:19.0
+
+Handle 0x0061, DMI type 41, 11 bytes
+Onboard Device
+ Reference Designation: Onboard 1394
+ Type: Other
+ Status: Enabled
+ Type Instance: 1
+ Bus Address: 0000:03:1c.2
+
+Handle 0x0062, DMI type 139, 54 bytes
+OEM-specific Type
+ Header and Data:
+ 8B 36 62 00 00 1E 8C 00 00 44 9A AD 04 04 32 55
+ F8 00 A2 02 A1 00 40 63 43 10 FE 81 03 DF 40 B2
+ 00 20 00 73 3C 10 08 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 01
+ Strings:
+ V1394GUID
+
+Handle 0x0063, DMI type 13, 22 bytes
+BIOS Language Information
+ Installable Languages: 6
+ eng
+ fra
+ ger
+ chs
+ chi
+ jpn
+ Currently Installed Language: eng
+
+Handle 0x0064, DMI type 127, 4 bytes
+End Of Table
+
diff --git a/resources/generic/dmidecode/windows-xppro b/resources/generic/dmidecode/windows-xppro
new file mode 100644
index 0000000..6b999c7
--- /dev/null
+++ b/resources/generic/dmidecode/windows-xppro
@@ -0,0 +1,586 @@
+# dmidecode 2.11
+SMBIOS 2.4 present.
+57 structures occupying 2822 bytes.
+Table at 0x000F6570.
+
+Handle 0xDA00, DMI type 218, 251 bytes
+OEM-specific Type
+ Header and Data:
+ DA FB 00 DA B2 00 0D 5F 1F 37 40 7D 00 00 00 00
+ 00 40 00 02 00 01 00 41 00 02 00 00 00 65 00 03
+ 00 00 00 66 00 03 00 01 00 F1 00 04 00 00 00 F2
+ 00 04 00 01 00 F3 00 04 00 02 00 0F 00 05 00 00
+ 00 11 00 05 00 01 00 05 00 05 00 02 00 12 00 05
+ 00 03 00 06 00 05 00 04 00 07 00 06 00 00 00 0B
+ 00 06 00 01 00 0C 00 06 00 02 00 0D 00 06 00 03
+ 00 89 01 07 00 00 00 8A 01 07 00 01 00 42 00 08
+ 00 01 00 43 00 08 00 00 00 55 00 09 00 00 00 6D
+ 00 09 00 01 00 16 02 09 00 02 00 98 01 09 00 03
+ 00 0A 01 0A 00 01 00 0B 01 0A 00 00 00 2D 00 0B
+ 00 02 00 6E 00 0B 00 01 00 2E 00 0B 00 00 00 11
+ 01 0C 00 00 00 10 01 0C 00 01 00 F0 00 0D 00 01
+ 00 ED 00 0D 00 00 00 41 01 0E 00 01 00 40 01 0E
+ 00 00 00 47 01 0F 00 01 00 46 01 0F 00 00 00 4A
+ 01 10 00 00 00 FF FF 00 00 00 00
+
+Handle 0xDA01, DMI type 218, 251 bytes
+OEM-specific Type
+ Header and Data:
+ DA FB 01 DA B2 00 0D 5F 1F 37 40 4B 01 10 00 01
+ 00 04 02 11 00 00 00 05 02 11 00 01 00 02 02 12
+ 00 00 00 03 02 12 00 01 00 52 01 13 00 01 00 53
+ 01 13 00 00 00 80 01 14 00 01 00 7F 01 14 00 00
+ 00 7C 01 15 00 01 00 7B 01 15 00 00 00 E8 02 16
+ 00 00 00 E9 02 16 00 01 00 7E 01 17 00 01 00 7D
+ 01 17 00 00 00 92 01 18 00 00 00 91 01 18 00 01
+ 00 94 01 19 00 00 00 93 01 19 00 01 00 86 01 1A
+ 00 01 00 85 01 1A 00 00 00 82 01 1B 00 01 00 81
+ 01 1B 00 00 00 84 01 1C 00 01 00 83 01 1C 00 00
+ 00 9B 01 1D 00 00 00 9C 01 1D 00 01 00 9D 01 1D
+ 00 02 00 9E 01 1D 00 03 00 8D 01 1E 00 00 00 8E
+ 01 1E 00 01 00 85 02 1F 00 00 00 86 02 1F 00 01
+ 00 EA 00 20 00 00 00 EB 00 20 00 01 00 EC 00 20
+ 00 02 00 A1 00 21 00 00 00 A3 00 21 00 01 00 28
+ 00 22 00 00 00 FF FF 00 00 00 00
+
+Handle 0xDA02, DMI type 218, 251 bytes
+OEM-specific Type
+ Header and Data:
+ DA FB 02 DA B2 00 0D 5F 1F 37 40 29 00 22 00 01
+ 00 2A 00 22 00 02 00 2B 00 23 00 00 00 2C 00 24
+ 00 00 00 0E 01 25 00 01 00 0F 01 25 00 00 00 9B
+ 00 26 00 01 00 9C 00 26 00 00 00 4D 01 27 00 01
+ 00 4C 01 27 00 00 00 87 01 28 00 00 00 88 01 28
+ 00 01 00 35 01 29 00 03 00 37 01 29 00 00 00 38
+ 01 29 00 01 00 39 01 29 00 02 00 D9 01 2A 00 01
+ 00 D8 01 2A 00 00 00 DF 01 2B 00 01 00 DE 01 2B
+ 00 00 00 45 02 2C 00 00 00 44 02 2C 00 01 00 49
+ 02 2D 00 00 00 48 02 2D 00 01 00 45 01 45 01 01
+ 00 44 01 44 01 00 00 76 01 76 01 01 00 75 01 75
+ 01 01 00 9F 00 9F 00 00 00 A0 00 A0 00 01 00 E1
+ 01 E1 01 00 00 E3 01 E3 01 01 00 E2 01 E2 01 02
+ 00 29 02 29 02 01 00 28 02 28 02 02 00 2A 02 2A
+ 02 03 00 30 02 30 02 01 00 2F 02 2F 02 00 00 35
+ 02 35 02 01 00 FF FF 00 00 00 00
+
+Handle 0xDA03, DMI type 218, 77 bytes
+OEM-specific Type
+ Header and Data:
+ DA 4D 03 DA B2 00 0D 5F 1F 37 40 36 02 36 02 00
+ 00 37 02 37 02 02 00 4A 02 4A 02 01 00 0C 80 0C
+ 80 01 00 6C 02 6C 02 01 00 6D 02 6D 02 00 00 01
+ F0 01 F0 00 00 02 F0 02 F0 00 00 03 F0 03 F0 00
+ 00 04 F0 04 F0 00 00 FF FF 00 00 00 00
+
+Handle 0x0000, DMI type 0, 24 bytes
+BIOS Information
+ Vendor: Dell Inc.
+ Version: A24
+ Release Date: 08/19/2010
+ Address: 0xF0000
+ Runtime Size: 64 kB
+ ROM Size: 1728 kB
+ Characteristics:
+ ISA is supported
+ PCI is supported
+ PC Card (PCMCIA) is supported
+ PNP is supported
+ BIOS is upgradeable
+ BIOS shadowing is allowed
+ Boot from CD is supported
+ Selectable boot is supported
+ 3.5"/720 kB floppy services are supported (int 13h)
+ Print screen service is supported (int 5h)
+ 8042 keyboard services are supported (int 9h)
+ Serial services are supported (int 14h)
+ Printer services are supported (int 17h)
+ CGA/mono video services are supported (int 10h)
+ ACPI is supported
+ USB legacy is supported
+ AGP is supported
+ Smart battery is supported
+ BIOS boot specification is supported
+ Function key-initiated network boot is supported
+ Targeted content distribution is supported
+ BIOS Revision: 2.4
+ Firmware Revision: 2.4
+
+Handle 0x0100, DMI type 1, 27 bytes
+System Information
+ Manufacturer: Dell Inc.
+ Product Name: Precision M4400
+ Version: Not Specified
+ Serial Number: HLG964J
+ UUID: 44454C4C-4C00-1047-8039-C8C04F36344A
+ Wake-up Type: Power Switch
+ SKU Number: Not Specified
+ Family:
+
+Handle 0x0200, DMI type 2, 9 bytes
+Base Board Information
+ Manufacturer: Dell Inc.
+ Product Name: 0P019G
+ Version:
+ Serial Number: .HLG964J.CN129618C52450.
+ Asset Tag:
+
+Handle 0x0300, DMI type 3, 13 bytes
+Chassis Information
+ Manufacturer: Dell Inc.
+ Type: Portable
+ Lock: Not Present
+ Version: Not Specified
+ Serial Number: HLG964J
+ Asset Tag: Not Specified
+ Boot-up State: Safe
+ Power Supply State: Safe
+ Thermal State: Safe
+ Security Status: None
+
+Handle 0x0400, DMI type 4, 40 bytes
+Processor Information
+ Socket Designation: Microprocessor
+ Type: Central Processor
+ Family: Core 2 Duo
+ Manufacturer: Intel
+ ID: 76 06 01 00 FF FB EB BF
+ Signature: Type 0, Family 6, Model 23, Stepping 6
+ Flags:
+ FPU (Floating-point unit on-chip)
+ VME (Virtual mode extension)
+ DE (Debugging extension)
+ PSE (Page size extension)
+ TSC (Time stamp counter)
+ MSR (Model specific registers)
+ PAE (Physical address extension)
+ MCE (Machine check exception)
+ CX8 (CMPXCHG8 instruction supported)
+ APIC (On-chip APIC hardware supported)
+ SEP (Fast system call)
+ MTRR (Memory type range registers)
+ PGE (Page global enable)
+ MCA (Machine check architecture)
+ CMOV (Conditional move instruction supported)
+ PAT (Page attribute table)
+ PSE-36 (36-bit page size extension)
+ CLFSH (CLFLUSH instruction supported)
+ DS (Debug store)
+ ACPI (ACPI supported)
+ MMX (MMX technology supported)
+ FXSR (FXSAVE and FXSTOR instructions supported)
+ SSE (Streaming SIMD extensions)
+ SSE2 (Streaming SIMD extensions 2)
+ SS (Self-snoop)
+ HTT (Multi-threading)
+ TM (Thermal monitor supported)
+ PBE (Pending break enabled)
+ Version: Not Specified
+ Voltage: 3.3 V
+ External Clock: 266 MHz
+ Max Speed: 2534 MHz
+ Current Speed: 2534 MHz
+ Status: Populated, Enabled
+ Upgrade: None
+ L1 Cache Handle: 0x0700
+ L2 Cache Handle: 0x0701
+ L3 Cache Handle: Not Provided
+ Serial Number: Not Specified
+ Asset Tag: Not Specified
+ Part Number: Not Specified
+ Core Count: 2
+ Core Enabled: 2
+ Thread Count: 2
+ Characteristics:
+ 64-bit capable
+
+Handle 0x0700, DMI type 7, 19 bytes
+Cache Information
+ Socket Designation: Not Specified
+ Configuration: Enabled, Not Socketed, Level 1
+ Operational Mode: Write Back
+ Location: Internal
+ Installed Size: 128 kB
+ Maximum Size: 128 kB
+ Supported SRAM Types:
+ Unknown
+ Installed SRAM Type: Unknown
+ Speed: Unknown
+ Error Correction Type: None
+ System Type: Data
+ Associativity: 4-way Set-associative
+
+Handle 0x0701, DMI type 7, 19 bytes
+Cache Information
+ Socket Designation: Not Specified
+ Configuration: Enabled, Not Socketed, Level 2
+ Operational Mode: Varies With Memory Address
+ Location: Internal
+ Installed Size: 6144 kB
+ Maximum Size: 6144 kB
+ Supported SRAM Types:
+ Pipeline Burst
+ Installed SRAM Type: Pipeline Burst
+ Speed: 15 ns
+ Error Correction Type: None
+ System Type: Unified
+ Associativity: Other
+
+Handle 0x0800, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: PARALLEL
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: DB-25 female
+ Port Type: Parallel Port PS/2
+
+Handle 0x0801, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: SERIAL1
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: DB-9 male
+ Port Type: Serial Port 16550A Compatible
+
+Handle 0x0804, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: USB
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: Access Bus (USB)
+ Port Type: USB
+
+Handle 0x0806, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: MONITOR
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: DB-15 female
+ Port Type: Video Port
+
+Handle 0x080B, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: FireWire
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: IEEE 1394
+ Port Type: Firewire (IEEE P1394)
+
+Handle 0x080C, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: Modem
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: RJ-11
+ Port Type: Modem Port
+
+Handle 0x080D, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: Ethernet
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: RJ-45
+ Port Type: Network Port
+
+Handle 0x0900, DMI type 9, 13 bytes
+System Slot Information
+ Designation: PCMCIA 0
+ Type: 32-bit PC Card (PCMCIA)
+ Current Usage: Available
+ Length: Other
+ ID: Adapter 0, Socket 0
+ Characteristics:
+ 5.0 V is provided
+ 3.3 V is provided
+ PC Card-16 is supported
+ Cardbus is supported
+ Zoom Video is supported
+ Modem ring resume is supported
+
+Handle 0x0A00, DMI type 10, 6 bytes
+On Board Device Information
+ Type: Video
+ Status: Enabled
+ Description: NVIDIA Quadro FX 1700M
+
+Handle 0x0A01, DMI type 10, 6 bytes
+On Board Device Information
+ Type: Sound
+ Status: Enabled
+ Description: IDT 92HD71
+
+Handle 0x0B00, DMI type 11, 5 bytes
+OEM Strings
+ String 1: Dell System
+ String 2: 5[0003]
+ String 3: 13[PP04X]
+
+Handle 0x0D00, DMI type 13, 22 bytes
+BIOS Language Information
+ Language Description Format: Long
+ Installable Languages: 1
+ en|US|iso8859-1
+ Currently Installed Language: en|US|iso8859-1
+
+Handle 0x1000, DMI type 16, 15 bytes
+Physical Memory Array
+ Location: System Board Or Motherboard
+ Use: System Memory
+ Error Correction Type: None
+ Maximum Capacity: 8 GB
+ Error Information Handle: Not Provided
+ Number Of Devices: 2
+
+Handle 0x1100, DMI type 17, 27 bytes
+Memory Device
+ Array Handle: 0x1000
+ Error Information Handle: Not Provided
+ Total Width: 64 bits
+ Data Width: 64 bits
+ Size: 2048 MB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM_A
+ Bank Locator: Not Specified
+ Type: DDR2
+ Type Detail: Synchronous
+ Speed: 800 MHz
+ Manufacturer: 7F7FFE0000000000
+ Serial Number: 14FA6621
+ Asset Tag: 200840
+ Part Number: EBE21UE8ACUA-8G-E
+
+Handle 0x1101, DMI type 17, 27 bytes
+Memory Device
+ Array Handle: 0x1000
+ Error Information Handle: Not Provided
+ Total Width: 64 bits
+ Data Width: 64 bits
+ Size: 2048 MB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM_B
+ Bank Locator: Not Specified
+ Type: DDR2
+ Type Detail: Synchronous
+ Speed: 800 MHz
+ Manufacturer: 7F7FFE0000000000
+ Serial Number: AEF96621
+ Asset Tag: 200840
+ Part Number: EBE21UE8ACUA-8G-E
+
+Handle 0x1301, DMI type 19, 15 bytes
+Memory Array Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x000FFFFFFFF
+ Range Size: 4 GB
+ Physical Array Handle: 0x1000
+ Partition Width: 1
+
+Handle 0x1401, DMI type 20, 19 bytes
+Memory Device Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x000FFFFFFFF
+ Range Size: 4 GB
+ Physical Device Handle: 0x1100
+ Memory Array Mapped Address Handle: 0x1301
+ Partition Row Position: 1
+ Interleave Position: 1
+ Interleaved Data Depth: 8
+
+Handle 0x1411, DMI type 126, 19 bytes
+Inactive
+
+Handle 0x1402, DMI type 20, 19 bytes
+Memory Device Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x000FFFFFFFF
+ Range Size: 4 GB
+ Physical Device Handle: 0x1101
+ Memory Array Mapped Address Handle: 0x1301
+ Partition Row Position: 1
+ Interleave Position: 2
+ Interleaved Data Depth: 8
+
+Handle 0x1412, DMI type 126, 19 bytes
+Inactive
+
+Handle 0x1500, DMI type 21, 7 bytes
+Built-in Pointing Device
+ Type: Touch Pad
+ Interface: Bus Mouse
+ Buttons: 2
+
+Handle 0x1600, DMI type 22, 26 bytes
+Portable Battery
+ Location: Sys. Battery Bay
+ Manufacturer: SMP
+ Name: DELL HJ59008
+ Design Capacity: 84000 mWh
+ Design Voltage: 11100 mV
+ SBDS Version: 1.0
+ Maximum Error: 3%
+ SBDS Serial Number: 02C7
+ SBDS Manufacture Date: 2010-08-31
+ SBDS Chemistry: LION
+ OEM-specific Information: 0x00000001
+
+Handle 0x1601, DMI type 126, 26 bytes
+Inactive
+
+Handle 0x1B00, DMI type 27, 12 bytes
+Cooling Device
+ Type: Fan
+ Status: OK
+ OEM-specific Information: 0x0000DD00
+
+Handle 0x1C00, DMI type 28, 20 bytes
+Temperature Probe
+ Description: CPU Internal Temperature
+ Location: Processor
+ Status: OK
+ Maximum Value: 127.0 deg C
+ Minimum Value: 0.0 deg C
+ Resolution: 1.000 deg C
+ Tolerance: 0.5 deg C
+ Accuracy: Unknown
+ OEM-specific Information: 0x0000DC00
+
+Handle 0x2000, DMI type 32, 11 bytes
+System Boot Information
+ Status: No errors detected
+
+Handle 0xB000, DMI type 176, 5 bytes
+OEM-specific Type
+ Header and Data:
+ B0 05 00 B0 3A
+
+Handle 0xB100, DMI type 177, 12 bytes
+OEM-specific Type
+ Header and Data:
+ B1 0C 00 B1 82 00 00 00 00 00 00 00
+
+Handle 0xB200, DMI type 178, 96 bytes
+OEM-specific Type
+ Header and Data:
+ B2 60 00 B2 07 01 0C 00 08 01 0A 00 09 01 0B 00
+ 0A 01 12 00 3B 00 20 00 3C 00 1F 00 3D 00 0E 00
+ 41 00 12 00 42 00 18 00 00 02 FF FF 4B 00 15 00
+ 48 00 14 00 50 00 13 00 10 00 FF 00 11 00 FF 00
+ 12 00 FF 00 13 00 FF 00 14 00 FF 00 1E 00 FF 00
+ 1F 00 FF 00 20 00 FF 00 21 00 FF 00 22 00 FF 00
+
+Handle 0xD000, DMI type 208, 10 bytes
+OEM-specific Type
+ Header and Data:
+ D0 0A 00 D0 01 04 FE 00 50 02
+
+Handle 0xD100, DMI type 209, 12 bytes
+OEM-specific Type
+ Header and Data:
+ D1 0C 00 D1 00 00 00 03 04 07 80 05
+
+Handle 0xD200, DMI type 210, 12 bytes
+OEM-specific Type
+ Header and Data:
+ D2 0C 00 D2 00 00 06 03 06 80 04 05
+
+Handle 0xD800, DMI type 216, 9 bytes
+OEM-specific Type
+ Header and Data:
+ D8 09 00 D8 01 03 01 F0 03
+ Strings:
+ NVidia Corp.
+
+ 62.94.8F.00.04
+
+
+Handle 0xD900, DMI type 217, 8 bytes
+OEM-specific Type
+ Header and Data:
+ D9 08 00 D9 01 02 01 03
+ Strings:
+ US-101
+ Proprietary
+
+Handle 0xDB00, DMI type 219, 9 bytes
+OEM-specific Type
+ Header and Data:
+ DB 09 00 DB 03 01 02 03 FF
+ Strings:
+ System Device Bay
+ Battery, CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
+ DVD+/-RW
+
+Handle 0xDB01, DMI type 219, 9 bytes
+OEM-specific Type
+ Header and Data:
+ DB 09 01 DB 03 01 02 03 FF
+ Strings:
+ System eSATA Bay
+ CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
+ EMPTY
+
+Handle 0xDB02, DMI type 219, 9 bytes
+OEM-specific Type
+ Header and Data:
+ DB 09 02 DB 03 01 02 03 FF
+ Strings:
+ System eSATA Dock Bay
+ CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
+ EMPTY
+
+Handle 0x8100, DMI type 129, 8 bytes
+OEM-specific Type
+ Header and Data:
+ 81 08 00 81 01 01 02 01
+ Strings:
+ Intel_ASF
+ Intel_ASF_001
+
+Handle 0x8200, DMI type 130, 20 bytes
+OEM-specific Type
+ Header and Data:
+ 82 14 00 82 24 41 4D 54 01 00 00 00 01 A5 0B 02
+ 00 00 00 00
+
+Handle 0x8300, DMI type 131, 64 bytes
+OEM-specific Type
+ Header and Data:
+ 83 40 00 83 35 00 00 00 00 00 40 2A 0F 00 00 00
+ F8 00 17 29 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 03 00 01 02 C8 00 F5 10 00 00 00 0C
+ 00 00 00 00 28 00 00 00 76 50 72 6F 00 00 00 00
+
+Handle 0xDC00, DMI type 220, 22 bytes
+OEM-specific Type
+ Header and Data:
+ DC 16 00 DC 01 F0 00 00 02 F0 00 00 00 00 03 F0
+ 04 F0 00 00 00 00
+
+Handle 0xDD00, DMI type 221, 19 bytes
+OEM-specific Type
+ Header and Data:
+ DD 13 00 DD 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00
+
+Handle 0xD400, DMI type 212, 47 bytes
+OEM-specific Type
+ Header and Data:
+ D4 2F 00 D4 74 00 75 00 00 10 2D 2E 5C 00 78 BF
+ 40 5D 00 78 BF 00 2D 01 1D EF 10 2E 01 1D EF 00
+ 08 00 1D DF 00 03 00 1D DF 00 FF FF 00 00 00
+
+Handle 0xD401, DMI type 212, 17 bytes
+OEM-specific Type
+ Header and Data:
+ D4 11 01 D4 74 00 75 00 03 40 49 4A FF FF 00 00
+ 00
+
+Handle 0xDE00, DMI type 222, 16 bytes
+OEM-specific Type
+ Header and Data:
+ DE 10 00 DE 01 02 FF FF 00 00 00 00 00 00 00 01
+
+Handle 0x7F00, DMI type 127, 4 bytes
+End Of Table
+
diff --git a/resources/solaris/prtconf/SPARC-1 b/resources/solaris/prtconf/SPARC-1
new file mode 100644
index 0000000..8229c44
--- /dev/null
+++ b/resources/solaris/prtconf/SPARC-1
@@ -0,0 +1,17 @@
+System Configuration: Sun Microsystems sun4u
+Memory size: 16384 Megabyte
+System Peripherals (PROM Nodes):
+
+Node 0xf0819f00
+ scsi-initiator-id: 00000007
+ node#: 00000000
+ #size-cells: 00000002
+ stick-frequency: 00bebc20
+ clock-frequency: 08f0d180
+ idprom: 01840014.4f4162cb.45255cf4.4162cb16.55555555.55555555.55555555.55555555
+ breakpoint-trap: 0000007f
+ device_type: 'gptwo'
+ banner-name: 'Sun Fire E6900'
+ compatible: 'SUNW,Serengeti'
+ newio-addr: 00000001
+ name: 'SUNW,Sun-Fire'
diff --git a/resources/solaris/psrinfo/sample-1 b/resources/solaris/psrinfo/sample-1
deleted file mode 100644
index a3394c3..0000000
--- a/resources/solaris/psrinfo/sample-1
+++ /dev/null
@@ -1,32 +0,0 @@
-Status of virtual processor 0 as of: 08/10/2011 11:48:03
- on-line since 08/02/2011 11:06:56.
- The i386 processor operates at 2133 MHz,
- and has an i387 compatible floating point processor.
-Status of virtual processor 1 as of: 08/10/2011 11:48:03
- on-line since 08/02/2011 11:07:02.
- The i386 processor operates at 2133 MHz,
- and has an i387 compatible floating point processor.
-Status of virtual processor 2 as of: 08/10/2011 11:48:03
- on-line since 08/02/2011 11:07:02.
- The i386 processor operates at 2133 MHz,
- and has an i387 compatible floating point processor.
-Status of virtual processor 3 as of: 08/10/2011 11:48:03
- on-line since 08/02/2011 11:07:02.
- The i386 processor operates at 2133 MHz,
- and has an i387 compatible floating point processor.
-Status of virtual processor 4 as of: 08/10/2011 11:48:03
- on-line since 08/02/2011 11:07:02.
- The i386 processor operates at 2133 MHz,
- and has an i387 compatible floating point processor.
-Status of virtual processor 5 as of: 08/10/2011 11:48:03
- on-line since 08/02/2011 11:07:02.
- The i386 processor operates at 2133 MHz,
- and has an i387 compatible floating point processor.
-Status of virtual processor 6 as of: 08/10/2011 11:48:03
- on-line since 08/02/2011 11:07:03.
- The i386 processor operates at 2133 MHz,
- and has an i387 compatible floating point processor.
-Status of virtual processor 7 as of: 08/10/2011 11:48:03
- on-line since 08/02/2011 11:07:03.
- The i386 processor operates at 2133 MHz,
- and has an i387 compatible floating point processor.
diff --git a/resources/solaris/psrinfo/sample1 b/resources/solaris/psrinfo/sample1
new file mode 100644
index 0000000..a3394c3
--- /dev/null
+++ b/resources/solaris/psrinfo/sample1
@@ -0,0 +1,32 @@
+Status of virtual processor 0 as of: 08/10/2011 11:48:03
+ on-line since 08/02/2011 11:06:56.
+ The i386 processor operates at 2133 MHz,
+ and has an i387 compatible floating point processor.
+Status of virtual processor 1 as of: 08/10/2011 11:48:03
+ on-line since 08/02/2011 11:07:02.
+ The i386 processor operates at 2133 MHz,
+ and has an i387 compatible floating point processor.
+Status of virtual processor 2 as of: 08/10/2011 11:48:03
+ on-line since 08/02/2011 11:07:02.
+ The i386 processor operates at 2133 MHz,
+ and has an i387 compatible floating point processor.
+Status of virtual processor 3 as of: 08/10/2011 11:48:03
+ on-line since 08/02/2011 11:07:02.
+ The i386 processor operates at 2133 MHz,
+ and has an i387 compatible floating point processor.
+Status of virtual processor 4 as of: 08/10/2011 11:48:03
+ on-line since 08/02/2011 11:07:02.
+ The i386 processor operates at 2133 MHz,
+ and has an i387 compatible floating point processor.
+Status of virtual processor 5 as of: 08/10/2011 11:48:03
+ on-line since 08/02/2011 11:07:02.
+ The i386 processor operates at 2133 MHz,
+ and has an i387 compatible floating point processor.
+Status of virtual processor 6 as of: 08/10/2011 11:48:03
+ on-line since 08/02/2011 11:07:03.
+ The i386 processor operates at 2133 MHz,
+ and has an i387 compatible floating point processor.
+Status of virtual processor 7 as of: 08/10/2011 11:48:03
+ on-line since 08/02/2011 11:07:03.
+ The i386 processor operates at 2133 MHz,
+ and has an i387 compatible floating point processor.
diff --git a/resources/solaris/showrev-SPARC-1 b/resources/solaris/showrev-SPARC-1
deleted file mode 100644
index 7019112..0000000
--- a/resources/solaris/showrev-SPARC-1
+++ /dev/null
@@ -1,27 +0,0 @@
-Hostname: 157501s021plc
-Hostid: 83249bbf
-Release: 5.10
-Kernel architecture: sun4u
-Application architecture: sparc
-Hardware provider: Sun_Microsystem
-Domain: be.cnamts.fr
-Kernel version: SunOS 5.10 Generic_118833-17
-
- $ prtconf -pv (-b would be great...but doesn't work before S10)
-System Configuration: Sun Microsystems sun4u
-Memory size: 16384 Megabyte
-System Peripherals (PROM Nodes):
-
-Node 0xf0819f00
- scsi-initiator-id: 00000007
- node#: 00000000
- #size-cells: 00000002
- stick-frequency: 00bebc20
- clock-frequency: 08f0d180
- idprom: 01840014.4f4162cb.45255cf4.4162cb16.55555555.55555555.55555555.55555555
- breakpoint-trap: 0000007f
- device_type: 'gptwo'
- banner-name: 'Sun Fire E6900'
- compatible: 'SUNW,Serengeti'
- newio-addr: 00000001
- name: 'SUNW,Sun-Fire'
diff --git a/resources/solaris/showrev-SPARC-2 b/resources/solaris/showrev-SPARC-2
deleted file mode 100644
index 2d3d320..0000000
--- a/resources/solaris/showrev-SPARC-2
+++ /dev/null
@@ -1,8 +0,0 @@
-Hostname: mysunserver
-Hostid: mabox
-Release: 5.10
-Kernel architecture: sun4v
-Application architecture: sparc
-Hardware provider: Sun_Microsystems
-Domain:
-Kernel version: SunOS 5.10 Generic_125100-06
diff --git a/resources/solaris/showrev-x86-1 b/resources/solaris/showrev-x86-1
deleted file mode 100644
index aabf729..0000000
--- a/resources/solaris/showrev-x86-1
+++ /dev/null
@@ -1,22 +0,0 @@
-Hostname: stlaurent
-Hostid: 403100b
-Release: 5.10
-Kernel architecture: i86pc
-Application architecture: i386
-Hardware provider:
-Domain:
-Kernel version: SunOS 5.10 Generic_127112-07
-
- $ smbios -t SMB_TYPE_SYSTEM
-ID SIZE TYPE
-1 76 SMB_TYPE_SYSTEM (system information)
-
- Manufacturer: Sun Microsystems, Inc.
- Product: Sun Fire V40z
- Version: 00
- Serial Number: R00T34E0009
-
- UUID: be1630df-d130-41a4-be32-fd28bb4bd1ac
- Wake-Up Event: 0x6 (power switch)
- SKU Number:
- Family:
diff --git a/resources/solaris/showrev-x86-2 b/resources/solaris/showrev-x86-2
deleted file mode 100644
index 4b8f705..0000000
--- a/resources/solaris/showrev-x86-2
+++ /dev/null
@@ -1,8 +0,0 @@
-Hostname: mamachine
-Hostid: 7c31a88
-Release: 5.10
-Kernel architecture: i86pc
-Application architecture: i386
-Hardware provider:
-Domain:
-Kernel version: SunOS 5.10 Generic_144489-03
diff --git a/resources/solaris/showrev/SPARC-1 b/resources/solaris/showrev/SPARC-1
new file mode 100644
index 0000000..2e37a0a
--- /dev/null
+++ b/resources/solaris/showrev/SPARC-1
@@ -0,0 +1,8 @@
+Hostname: 157501s021plc
+Hostid: 83249bbf
+Release: 5.10
+Kernel architecture: sun4u
+Application architecture: sparc
+Hardware provider: Sun_Microsystem
+Domain: be.cnamts.fr
+Kernel version: SunOS 5.10 Generic_118833-17
diff --git a/resources/solaris/showrev/SPARC-2 b/resources/solaris/showrev/SPARC-2
new file mode 100644
index 0000000..2d3d320
--- /dev/null
+++ b/resources/solaris/showrev/SPARC-2
@@ -0,0 +1,8 @@
+Hostname: mysunserver
+Hostid: mabox
+Release: 5.10
+Kernel architecture: sun4v
+Application architecture: sparc
+Hardware provider: Sun_Microsystems
+Domain:
+Kernel version: SunOS 5.10 Generic_125100-06
diff --git a/resources/solaris/showrev/x86-1 b/resources/solaris/showrev/x86-1
new file mode 100644
index 0000000..0365490
--- /dev/null
+++ b/resources/solaris/showrev/x86-1
@@ -0,0 +1,8 @@
+Hostname: stlaurent
+Hostid: 403100b
+Release: 5.10
+Kernel architecture: i86pc
+Application architecture: i386
+Hardware provider:
+Domain:
+Kernel version: SunOS 5.10 Generic_127112-07
diff --git a/resources/solaris/showrev/x86-2 b/resources/solaris/showrev/x86-2
new file mode 100644
index 0000000..4b8f705
--- /dev/null
+++ b/resources/solaris/showrev/x86-2
@@ -0,0 +1,8 @@
+Hostname: mamachine
+Hostid: 7c31a88
+Release: 5.10
+Kernel architecture: i86pc
+Application architecture: i386
+Hardware provider:
+Domain:
+Kernel version: SunOS 5.10 Generic_144489-03
diff --git a/resources/solaris/showrev/x86-3 b/resources/solaris/showrev/x86-3
new file mode 100644
index 0000000..5285802
--- /dev/null
+++ b/resources/solaris/showrev/x86-3
@@ -0,0 +1,8 @@
+Hostname: plop
+Hostid: 7c31a36
+Release: 5.10
+Kernel architecture: i86pc
+Application architecture: i386
+Hardware provider:
+Domain:
+Kernel version: SunOS 5.10 Generic_147441-09
diff --git a/resources/solaris/smbios/x86-1 b/resources/solaris/smbios/x86-1
new file mode 100644
index 0000000..a9fbe69
--- /dev/null
+++ b/resources/solaris/smbios/x86-1
@@ -0,0 +1,12 @@
+ID SIZE TYPE
+1 76 SMB_TYPE_SYSTEM (system information)
+
+ Manufacturer: Sun Microsystems, Inc.
+ Product: Sun Fire V40z
+ Version: 00
+ Serial Number: R00T34E0009
+
+ UUID: be1630df-d130-41a4-be32-fd28bb4bd1ac
+ Wake-Up Event: 0x6 (power switch)
+ SKU Number:
+ Family:
diff --git a/resources/solaris/smbios/x86-3 b/resources/solaris/smbios/x86-3
new file mode 100644
index 0000000..834f8c0
--- /dev/null
+++ b/resources/solaris/smbios/x86-3
@@ -0,0 +1,90 @@
+ID SIZE TYPE
+1 18 SMB_TYPE_IPMIDEV (IPMI device information)
+
+ Type: 1 (KCS: Keyboard Controller Style)
+ BMC IPMI Version: 2.0
+ i2c Bus Slave Address: 0x20
+ NV Storage Device Bus ID: 0xffffffff
+ BMC Base Address: 0xca2
+ Interrupt Number: 0
+ Register Spacing: 1
+ Flags: 0x9
+ SMB_IPMI_F_IOADDR (base address is in i/o space)
+ SMB_IPMI_F_INTREDGE (intr is edge triggered (else lvl))
+
+ID SIZE TYPE
+2 53 SMB_TYPE_SYSTEM (system information)
+
+ Manufacturer: Intel
+ Product: MP Server
+
+ UUID: 4b713db6-6d40-11dd-b32c-000123456789
+ Wake-Up Event: 0x6 (power switch)
+ SKU Number: 6I012345TF
+ Family:
+
+ID SIZE TYPE
+3 56 SMB_TYPE_BASEBOARD (base board)
+
+ Manufacturer: Intel
+ Product: S7000FC4UR
+ Serial Number: QSFX12345678
+ Asset Tag: 6I012345TF
+
+ Chassis: 0
+ Flags: 0x9
+ SMB_BBFL_MOTHERBOARD (board is a motherboard)
+ SMB_BBFL_REPLACABLE (board is field-replacable)
+ Board Type: 0xa (motherboard)
+
+ID SIZE TYPE
+4 64 SMB_TYPE_CHASSIS (system enclosure or chassis)
+
+ Manufacturer: TRANSTEC
+ Version: E10476-011
+ Serial Number: QSDH1234567
+ Asset Tag: 6I012345TF
+
+ OEM Data: 0x81581cf8
+ Lock Present: N
+ Chassis Type: 0x17 (rack mount chassis)
+ Boot-Up State: 0x3 (safe)
+ Power Supply State: 0x3 (safe)
+ Thermal State: 0x3 (safe)
+ Chassis Height: 1u
+ Power Cords: 1
+ Element Records: 0
+
+ID SIZE TYPE
+5 87 SMB_TYPE_BIOS (BIOS information)
+
+ Vendor: Intel Corporation
+ Version String: SFC4UR.86B.01.00.0029.071220092126
+ Release Date: 07/12/2009
+ Address Segment: 0xe800
+ ROM Size: 8388608 bytes
+ Image Size: 98304 bytes
+ Characteristics: 0x15c099a80
+ SMB_BIOSFL_PCI (PCI is supported)
+ SMB_BIOSFL_PLUGNPLAY (Plug and Play is supported)
+ SMB_BIOSFL_FLASH (BIOS is Flash Upgradeable)
+ SMB_BIOSFL_SHADOW (BIOS shadowing is allowed)
+ SMB_BIOSFL_CDBOOT (Boot from CD is supported)
+ SMB_BIOSFL_SELBOOT (Selectable Boot supported)
+ SMB_BIOSFL_EDD (EDD Spec is supported)
+ SMB_BIOSFL_I5_PRINT (int 0x5 print screen svcs)
+ SMB_BIOSFL_I9_KBD (int 0x9 8042 keyboard svcs)
+ SMB_BIOSFL_I14_SER (int 0x14 serial svcs)
+ SMB_BIOSFL_I10_CGA (int 0x10 CGA svcs)
+ 0x100000000
+ Characteristics Extension Byte 1: 0x33
+ SMB_BIOSXB1_ACPI (ACPI is supported)
+ SMB_BIOSXB1_USBL (USB legacy is supported)
+ SMB_BIOSXB1_LS120 (LS-120 boot is supported)
+ SMB_BIOSXB1_ATZIP (ATAPI ZIP drive boot is supported)
+ Characteristics Extension Byte 2: 0x7
+ SMB_BIOSXB2_BBOOT (BIOS Boot Specification supported)
+ SMB_BIOSXB2_FKNETSVC (F-key Network Svc boot supported)
+ SMB_BIOSXB2_ETCDIST (Enable Targeted Content Distrib.)
+ Version Number: 0.0
+ Embedded Ctlr Firmware Version Number: 0.0
diff --git a/resources/win32/registry/2003-CentralProcessor.reg b/resources/win32/registry/2003-CentralProcessor.reg
new file mode 100644
index 0000000..f96533d
Binary files /dev/null and b/resources/win32/registry/2003-CentralProcessor.reg differ
diff --git a/resources/win32/registry/2003SP2-CentralProcessor.reg b/resources/win32/registry/2003SP2-CentralProcessor.reg
new file mode 100644
index 0000000..48818d3
Binary files /dev/null and b/resources/win32/registry/2003SP2-CentralProcessor.reg differ
diff --git a/resources/win32/registry/7-CentralProcessor.reg b/resources/win32/registry/7-CentralProcessor.reg
new file mode 100644
index 0000000..1d34b8c
Binary files /dev/null and b/resources/win32/registry/7-CentralProcessor.reg differ
diff --git a/resources/win32/registry/xp-CentralProcessor.reg b/resources/win32/registry/xp-CentralProcessor.reg
new file mode 100644
index 0000000..2de1ab6
Binary files /dev/null and b/resources/win32/registry/xp-CentralProcessor.reg differ
diff --git a/resources/win32/wmi/2003-Win32_PhysicalMemory.wmi b/resources/win32/wmi/2003-Win32_PhysicalMemory.wmi
new file mode 100644
index 0000000..0e86608
Binary files /dev/null and b/resources/win32/wmi/2003-Win32_PhysicalMemory.wmi differ
diff --git a/resources/win32/wmi/2003-Win32_Processor.wmi b/resources/win32/wmi/2003-Win32_Processor.wmi
new file mode 100644
index 0000000..56c6d71
Binary files /dev/null and b/resources/win32/wmi/2003-Win32_Processor.wmi differ
diff --git a/resources/win32/wmi/2003SP2-Win32_PhysicalMemory.wmi b/resources/win32/wmi/2003SP2-Win32_PhysicalMemory.wmi
new file mode 100644
index 0000000..87b20cc
Binary files /dev/null and b/resources/win32/wmi/2003SP2-Win32_PhysicalMemory.wmi differ
diff --git a/resources/win32/wmi/2003SP2-Win32_Processor.wmi b/resources/win32/wmi/2003SP2-Win32_Processor.wmi
new file mode 100644
index 0000000..4c32dac
Binary files /dev/null and b/resources/win32/wmi/2003SP2-Win32_Processor.wmi differ
diff --git a/resources/win32/wmi/7-Win32_PhysicalMemory.wmi b/resources/win32/wmi/7-Win32_PhysicalMemory.wmi
new file mode 100644
index 0000000..e5aad73
Binary files /dev/null and b/resources/win32/wmi/7-Win32_PhysicalMemory.wmi differ
diff --git a/resources/win32/wmi/7-Win32_PhysicalMemoryArray.wmi b/resources/win32/wmi/7-Win32_PhysicalMemoryArray.wmi
new file mode 100644
index 0000000..d4a7646
Binary files /dev/null and b/resources/win32/wmi/7-Win32_PhysicalMemoryArray.wmi differ
diff --git a/resources/win32/wmi/7-Win32_Processor.wmi b/resources/win32/wmi/7-Win32_Processor.wmi
new file mode 100644
index 0000000..ba554d1
Binary files /dev/null and b/resources/win32/wmi/7-Win32_Processor.wmi differ
diff --git a/resources/win32/wmi/xp-Win32_PhysicalMemory.wmi b/resources/win32/wmi/xp-Win32_PhysicalMemory.wmi
new file mode 100644
index 0000000..63775de
Binary files /dev/null and b/resources/win32/wmi/xp-Win32_PhysicalMemory.wmi differ
diff --git a/resources/win32/wmi/xp-Win32_Processor.wmi b/resources/win32/wmi/xp-Win32_Processor.wmi
new file mode 100644
index 0000000..68ba953
Binary files /dev/null and b/resources/win32/wmi/xp-Win32_Processor.wmi differ
diff --git a/t/FusionInventory/Test/Utils.pm b/t/FusionInventory/Test/Utils.pm
index 8d1cb0a..9de910c 100644
--- a/t/FusionInventory/Test/Utils.pm
+++ b/t/FusionInventory/Test/Utils.pm
@@ -4,10 +4,13 @@ use strict;
use warnings;
use base 'Exporter';
+use English qw(-no_match_vars);
use Socket;
our @EXPORT = qw(
test_port
+ mockGetWmiObjects
+ mockGetRegistryKey
);
sub test_port {
@@ -25,3 +28,118 @@ sub test_port {
return 0;
}
+
+sub mockGetWmiObjects {
+ my ($test) = @_;
+
+ return sub {
+ my (%params) = @_;
+
+ my $file = "resources/win32/wmi/$test-$params{class}.wmi";
+ return loadWMIDump($file, $params{properties});
+ };
+}
+
+sub loadWMIDump {
+ my ($file, $properties) = @_;
+
+ open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
+
+ # this is a windows file
+ binmode $handle, ':encoding(UTF-16LE)';
+ local $INPUT_RECORD_SEPARATOR="\r\n";
+
+ # build a list of desired properties indexes
+ my %properties = map { $_ => 1 } @{$properties};
+
+ my @objects;
+ my $object;
+ while (my $line = <$handle>) {
+ chomp $line;
+
+ if ($line =~ /^ (\w+) = (.+) $/x) {
+ my $key = $1;
+ my $value = $2;
+ next unless $properties{$key};
+ $value =~ s/&/&/g;
+ $object->{$key} = $value;
+ next;
+ }
+
+ if ($line =~ /^$/) {
+ push @objects, $object if $object;
+ undef $object;
+ next;
+ }
+ }
+ close $handle;
+
+ return @objects;
+}
+
+sub mockGetRegistryKey {
+ my ($test) = @_;
+
+ return sub {
+ my (%params) = @_;
+
+ my $last_elt = (split(/\//, $params{path}))[-1];
+ my $file = "resources/win32/registry/$test-$last_elt.reg";
+ return loadRegistryDump($file);
+ };
+}
+
+sub loadRegistryDump {
+ my ($file) = @_;
+
+ my $root_offset;
+ my $root_key = {};
+ my $current_key;
+
+ open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
+
+ # this is a windows file
+ binmode $handle, ':encoding(UTF-16LE)';
+ local $INPUT_RECORD_SEPARATOR="\r\n";
+
+ while (my $line = <$handle>) {
+ chomp $line;
+
+ if ($line =~ /^ \[ ([^]]+) \] $/x) {
+ my $path = $1;
+ my @path = split(/\\/, $path);
+
+ if ($root_offset) {
+ splice @path, 0, $root_offset;
+ $current_key = $root_key;
+ foreach my $element (@path) {
+ my $key_path = $element . '/';
+
+ if (!defined $current_key->{$key_path}) {
+ my $new_key = {};
+ $current_key->{$key_path} = $new_key;
+ }
+
+ $current_key = $current_key->{$key_path};
+ }
+ } else {
+ $root_offset = scalar @path;
+ }
+ next;
+ }
+
+ if ($line =~ /^ " ([^"]+) " = dword:(\d+)/x) {
+ $current_key->{'/' . $1} = "0x$2";
+ next;
+ }
+
+ if ($line =~ /^ " ([^"]+) " = " ([^"]+) "/x) {
+ $current_key->{'/' . $1} = $2;
+ next;
+ }
+
+ }
+ close $handle;
+
+ return $root_key;
+}
diff --git a/t/apps/agent.t b/t/apps/agent.t
index ec53755..a76ebdd 100755
--- a/t/apps/agent.t
+++ b/t/apps/agent.t
@@ -145,7 +145,10 @@ ok(
'inventory has environment variables'
);
-my $path = $ENV{PATH};
+# PATH through WMI appears with %SystemRoot% templates, preventing direct
+# comparaison with %ENV content
+my $name = $OSNAME eq 'MSWin32' ? 'PATHEXT' : 'PATH';
+my $value = $ENV{$name};
($out, $err, $rc) = run_agent(
"$base_options --no-category printer,software"
@@ -173,7 +176,7 @@ ok(
ok(
(any
- { $_->{KEY} eq 'PATH' && $_->{VAL} eq $path }
+ { $_->{KEY} eq $name && $_->{VAL} eq $value }
@{$content->{REQUEST}->{CONTENT}->{ENVS}}
),
'inventory has expected environment variable value'
diff --git a/t/inventory/bsd/storages.t b/t/inventory/bsd/storages.t
new file mode 100755
index 0000000..feb6f3e
--- /dev/null
+++ b/t/inventory/bsd/storages.t
@@ -0,0 +1,33 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use FusionInventory::Agent::Task::Inventory::Input::BSD::Storages;
+
+my %tests = (
+ 'freebsd-1' => [
+ {
+ 'DESCRIPTION' => 'da0s1b'
+ },
+ {
+ 'DESCRIPTION' => 'da0s1a'
+ },
+ {
+ 'DESCRIPTION' => 'da0s1d'
+ },
+ {
+ 'DESCRIPTION' => 'acd0'
+ }
+ ]
+);
+
+plan tests => scalar keys %tests;
+
+foreach my $test (keys %tests) {
+ my $file = "resources/bsd/fstab/$test";
+ my @results = FusionInventory::Agent::Task::Inventory::Input::BSD::Storages::_getDevicesFromFstab(file => $file);
+ is_deeply(\@results, $tests{$test}, $test);
+}
diff --git a/t/inventory/generic/dmidecode/memory.t b/t/inventory/generic/dmidecode/memory.t
index 025453f..b2c713b 100755
--- a/t/inventory/generic/dmidecode/memory.t
+++ b/t/inventory/generic/dmidecode/memory.t
@@ -10,1543 +10,1605 @@ use FusionInventory::Agent::Task::Inventory::Input::Generic::Dmidecode::Memory;
my %tests = (
'freebsd-6.2' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'DIMM (None)',
- SPEED => 'Unknown',
- TYPE => 'Unknown',
- CAPTION => 'A0',
- CAPACITY => '512',
+ NUMSLOTS => 1,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'DIMM (None)',
+ SPEED => 'Unknown',
+ TYPE => 'Unknown',
+ CAPTION => 'A0',
+ CAPACITY => '512',
MEMORYCORRECTION => 'None'
}
],
'freebsd-8.1' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => '1A1541FC',
- DESCRIPTION => 'SODIMM (None)',
- TYPE => '<OUT OF SPEC>',
- SPEED => '1067 MHz',
- CAPACITY => '2048',
- CAPTION => 'Bottom - Slot 1',
+ NUMSLOTS => 1,
+ SERIALNUMBER => '1A1541FC',
+ DESCRIPTION => 'SODIMM (None)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => '1067 MHz',
+ CAPACITY => '2048',
+ CAPTION => 'Bottom - Slot 1',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => '1A554239',
- DESCRIPTION => 'SODIMM (None)',
- TYPE => '<OUT OF SPEC>',
- SPEED => '1067 MHz',
- CAPACITY => '2048',
- CAPTION => 'Bottom - Slot 2',
+ NUMSLOTS => 2,
+ SERIALNUMBER => '1A554239',
+ DESCRIPTION => 'SODIMM (None)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => '1067 MHz',
+ CAPACITY => '2048',
+ CAPTION => 'Bottom - Slot 2',
MEMORYCORRECTION => 'None'
}
],
'linux-1' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => 'SerNum00',
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DDR2',
- SPEED => '1066 MHz',
- CAPACITY => '1024',
- CAPTION => 'DIMM0',
+ NUMSLOTS => 1,
+ SERIALNUMBER => 'SerNum00',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DDR2',
+ SPEED => '1066 MHz',
+ CAPACITY => '1024',
+ CAPTION => 'DIMM0',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => 'SerNum01',
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DDR2',
- SPEED => '1066 MHz',
- CAPACITY => '1024',
- CAPTION => 'DIMM1',
+ NUMSLOTS => 2,
+ SERIALNUMBER => 'SerNum01',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DDR2',
+ SPEED => '1066 MHz',
+ CAPACITY => '1024',
+ CAPTION => 'DIMM1',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => 'SerNum02',
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DDR2',
- SPEED => '1066 MHz',
- CAPACITY => '1024',
- CAPTION => 'DIMM2',
+ NUMSLOTS => 3,
+ SERIALNUMBER => 'SerNum02',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DDR2',
+ SPEED => '1066 MHz',
+ CAPACITY => '1024',
+ CAPTION => 'DIMM2',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => 'SerNum03',
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DDR2',
- SPEED => '1066 MHz',
- CAPACITY => '1024',
- CAPTION => 'DIMM3',
+ NUMSLOTS => 4,
+ SERIALNUMBER => 'SerNum03',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DDR2',
+ SPEED => '1066 MHz',
+ CAPACITY => '1024',
+ CAPTION => 'DIMM3',
MEMORYCORRECTION => 'None'
}
],
'linux-2.6' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => '02132010',
- DESCRIPTION => 'DIMM (None)',
- SPEED => '533 MHz (1.9 ns)',
- TYPE => 'DDR',
- CAPTION => 'DIMM_A',
- CAPACITY => '1024',
+ NUMSLOTS => 1,
+ SERIALNUMBER => '02132010',
+ DESCRIPTION => 'DIMM (None)',
+ SPEED => '533 MHz (1.9 ns)',
+ TYPE => 'DDR',
+ CAPTION => 'DIMM_A',
+ CAPACITY => '1024',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => '02132216',
- DESCRIPTION => 'DIMM (None)',
- SPEED => '533 MHz (1.9 ns)',
- TYPE => 'DDR',
- CAPTION => 'DIMM_B',
- CAPACITY => '1024',
+ NUMSLOTS => 2,
+ SERIALNUMBER => '02132216',
+ DESCRIPTION => 'DIMM (None)',
+ SPEED => '533 MHz (1.9 ns)',
+ TYPE => 'DDR',
+ CAPTION => 'DIMM_B',
+ CAPACITY => '1024',
MEMORYCORRECTION => 'None'
}
],
'openbsd-3.7' => [
{
- NUMSLOTS => 1,
- TYPE => 'Unknown'
+ NUMSLOTS => 1,
+ TYPE => 'Unknown'
},
{
- NUMSLOTS => 2,
- TYPE => 'DIMM SDRAM',
- CAPACITY => '64'
+ NUMSLOTS => 2,
+ TYPE => 'DIMM SDRAM',
+ CAPACITY => '64'
},
{
- NUMSLOTS => 3,
- TYPE => 'Unknown'
+ NUMSLOTS => 3,
+ TYPE => 'Unknown'
},
{
- NUMSLOTS => 4,
- TYPE => 'DIMM SDRAM',
- CAPACITY => '64'
+ NUMSLOTS => 4,
+ TYPE => 'DIMM SDRAM',
+ CAPACITY => '64'
},
{
- NUMSLOTS => 5,
- TYPE => 'DIMM SDRAM',
- CAPACITY => '64'
+ NUMSLOTS => 5,
+ TYPE => 'DIMM SDRAM',
+ CAPACITY => '64'
},
{
- NUMSLOTS => 6,
- TYPE => 'Unknown'
+ NUMSLOTS => 6,
+ TYPE => 'Unknown'
},
{
- NUMSLOTS => 7,
- TYPE => 'Unknown'
+ NUMSLOTS => 7,
+ TYPE => 'Unknown'
}
],
'openbsd-3.8' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => '50075483',
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => '400 MHz (2.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM1_A',
- CAPACITY => '512',
+ NUMSLOTS => 1,
+ SERIALNUMBER => '50075483',
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => '400 MHz (2.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM1_A',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => '500355A1',
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => '400 MHz (2.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM1_B',
- CAPACITY => '512',
+ NUMSLOTS => 2,
+ SERIALNUMBER => '500355A1',
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => '400 MHz (2.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM1_B',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => '400 MHz (2.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM2_A',
+ NUMSLOTS => 3,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => '400 MHz (2.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM2_A',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => '400 MHz (2.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM2_B',
+ NUMSLOTS => 4,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => '400 MHz (2.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM2_B',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 5,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => '400 MHz (2.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM3_A',
+ NUMSLOTS => 5,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => '400 MHz (2.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM3_A',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 6,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => '400 MHz (2.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM3_B',
+ NUMSLOTS => 6,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => '400 MHz (2.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM3_B',
MEMORYCORRECTION => 'Multi-bit ECC'
}
],
'openbsd-4.5' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR',
- SPEED => '266 MHz',
- CAPACITY => '512',
- CAPTION => 'DIMM A',
+ NUMSLOTS => 1,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR',
+ SPEED => '266 MHz',
+ CAPACITY => '512',
+ CAPTION => 'DIMM A',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR',
- SPEED => '266 MHz',
- CAPTION => 'DIMM B',
+ NUMSLOTS => 2,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR',
+ SPEED => '266 MHz',
+ CAPTION => 'DIMM B',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR',
- SPEED => '266 MHz',
- CAPTION => 'DIMM C',
+ NUMSLOTS => 3,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR',
+ SPEED => '266 MHz',
+ CAPTION => 'DIMM C',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR',
- SPEED => '266 MHz',
- CAPTION => 'DIMM D',
+ NUMSLOTS => 4,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR',
+ SPEED => '266 MHz',
+ CAPTION => 'DIMM D',
MEMORYCORRECTION => 'Multi-bit ECC'
}
],
'rhel-2.1' => [
{
- NUMSLOTS => 1,
- TYPE => 'ECC DIMM SDRAM',
- CAPACITY => '256'
+ NUMSLOTS => 1,
+ TYPE => 'ECC DIMM SDRAM',
+ CAPACITY => '256'
},
{
- NUMSLOTS => 2,
- TYPE => 'UNKNOWN'
+ NUMSLOTS => 2,
+ TYPE => 'UNKNOWN'
}
],
'rhel-3.4' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => '460360BB',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- SPEED => '400 MHz (2.5 ns)',
- TYPE => 'DDR',
- CAPTION => 'DIMM 1',
- CAPACITY => '512',
+ NUMSLOTS => 1,
+ SERIALNUMBER => '460360BB',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ SPEED => '400 MHz (2.5 ns)',
+ TYPE => 'DDR',
+ CAPTION => 'DIMM 1',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => '460360E8',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- SPEED => '400 MHz (2.5 ns)',
- TYPE => 'DDR',
- CAPTION => 'DIMM 2',
- CAPACITY => '512',
+ NUMSLOTS => 2,
+ SERIALNUMBER => '460360E8',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ SPEED => '400 MHz (2.5 ns)',
+ TYPE => 'DDR',
+ CAPTION => 'DIMM 2',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Single-bit ECC'
}
],
'rhel-4.3' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => undef,
- TYPE => 'DDR',
- CAPTION => 'DIMM1',
- CAPACITY => '512',
+ NUMSLOTS => 1,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => undef,
+ TYPE => 'DDR',
+ CAPTION => 'DIMM1',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => undef,
- TYPE => 'DDR',
- CAPTION => 'DIMM2',
- CAPACITY => '512',
+ NUMSLOTS => 2,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => undef,
+ TYPE => 'DDR',
+ CAPTION => 'DIMM2',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => undef,
- TYPE => 'DDR',
- CAPTION => 'DIMM3',
- CAPACITY => '512',
+ NUMSLOTS => 3,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => undef,
+ TYPE => 'DDR',
+ CAPTION => 'DIMM3',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- SPEED => undef,
- TYPE => 'DDR',
- CAPTION => 'DIMM4',
- CAPACITY => '512',
+ NUMSLOTS => 4,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ SPEED => undef,
+ TYPE => 'DDR',
+ CAPTION => 'DIMM4',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Multi-bit ECC'
}
],
'rhel-4.6' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => undef,
- DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
- SPEED => '667 MHz (1.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM 1A',
- CAPACITY => '512',
+ NUMSLOTS => 1,
+ SERIALNUMBER => undef,
+ DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
+ SPEED => '667 MHz (1.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM 1A',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => undef,
- DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
- SPEED => '667 MHz (1.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM 2B',
- CAPACITY => '1024',
+ NUMSLOTS => 2,
+ SERIALNUMBER => undef,
+ DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
+ SPEED => '667 MHz (1.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM 2B',
+ CAPACITY => '1024',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => undef,
- DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
- SPEED => '667 MHz (1.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM 3C',
- CAPACITY => '1024',
+ NUMSLOTS => 3,
+ SERIALNUMBER => undef,
+ DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
+ SPEED => '667 MHz (1.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM 3C',
+ CAPACITY => '1024',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => undef,
- DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
- SPEED => 'Unknown',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM 4D',
+ NUMSLOTS => 4,
+ SERIALNUMBER => undef,
+ DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
+ SPEED => 'Unknown',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM 4D',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 5,
- SERIALNUMBER => undef,
- DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
- SPEED => '667 MHz (1.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM 5A',
- CAPACITY => '512',
+ NUMSLOTS => 5,
+ SERIALNUMBER => undef,
+ DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
+ SPEED => '667 MHz (1.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM 5A',
+ CAPACITY => '512',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 6,
- SERIALNUMBER => undef,
- DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
- SPEED => '667 MHz (1.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM 6B',
- CAPACITY => '1024',
+ NUMSLOTS => 6,
+ SERIALNUMBER => undef,
+ DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
+ SPEED => '667 MHz (1.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM 6B',
+ CAPACITY => '1024',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 7,
- SERIALNUMBER => undef,
- DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
- SPEED => '667 MHz (1.5 ns)',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM 7C',
- CAPACITY => '1024',
+ NUMSLOTS => 7,
+ SERIALNUMBER => undef,
+ DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
+ SPEED => '667 MHz (1.5 ns)',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM 7C',
+ CAPACITY => '1024',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 8,
- SERIALNUMBER => undef,
- DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
- SPEED => 'Unknown',
- TYPE => '<OUT OF SPEC>',
- CAPTION => 'DIMM 8D',
+ NUMSLOTS => 8,
+ SERIALNUMBER => undef,
+ DESCRIPTION => '<OUT OF SPEC> (Single-bit ECC)',
+ SPEED => 'Unknown',
+ TYPE => '<OUT OF SPEC>',
+ CAPTION => 'DIMM 8D',
MEMORYCORRECTION => 'Single-bit ECC'
}
],
'hp-dl180' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => '94D657D7',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => '1333 MHz (0.8 ns)',
- CAPACITY => '2048',
- CAPTION => 'PROC 1 DIMM 2A',
+ NUMSLOTS => 1,
+ SERIALNUMBER => '94D657D7',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => '1333 MHz (0.8 ns)',
+ CAPACITY => '2048',
+ CAPTION => 'PROC 1 DIMM 2A',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => 'SerNum01',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 1 DIMM 1D',
+ NUMSLOTS => 2,
+ SERIALNUMBER => 'SerNum01',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 1 DIMM 1D',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => '93D657D7',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => '1333 MHz (0.8 ns)',
- CAPACITY => '2048',
- CAPTION => 'PROC 1 DIMM 4B',
+ NUMSLOTS => 3,
+ SERIALNUMBER => '93D657D7',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => '1333 MHz (0.8 ns)',
+ CAPACITY => '2048',
+ CAPTION => 'PROC 1 DIMM 4B',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => 'SerNum03',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 1 DIMM 3E',
+ NUMSLOTS => 4,
+ SERIALNUMBER => 'SerNum03',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 1 DIMM 3E',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 5,
- SERIALNUMBER => 'SerNum04',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 1 DIMM 6C',
+ NUMSLOTS => 5,
+ SERIALNUMBER => 'SerNum04',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 1 DIMM 6C',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 6,
- SERIALNUMBER => 'SerNum05',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 1 DIMM 5F',
+ NUMSLOTS => 6,
+ SERIALNUMBER => 'SerNum05',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 1 DIMM 5F',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 7,
- SERIALNUMBER => 'SerNum06',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 2 DIMM 2A',
+ NUMSLOTS => 7,
+ SERIALNUMBER => 'SerNum06',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 2 DIMM 2A',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 8,
- SERIALNUMBER => 'SerNum07',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 2 DIMM 1D',
+ NUMSLOTS => 8,
+ SERIALNUMBER => 'SerNum07',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 2 DIMM 1D',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 9,
- SERIALNUMBER => 'SerNum08',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 2 DIMM 4B',
+ NUMSLOTS => 9,
+ SERIALNUMBER => 'SerNum08',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 2 DIMM 4B',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 10,
- SERIALNUMBER => 'SerNum09',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 2 DIMM 3E',
+ NUMSLOTS => 10,
+ SERIALNUMBER => 'SerNum09',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 2 DIMM 3E',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 11,
- SERIALNUMBER => 'SerNum10',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 2 DIMM 6C',
+ NUMSLOTS => 11,
+ SERIALNUMBER => 'SerNum10',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 2 DIMM 6C',
MEMORYCORRECTION => 'Single-bit ECC'
},
{
- NUMSLOTS => 12,
- SERIALNUMBER => 'SerNum11',
- DESCRIPTION => 'DIMM (Single-bit ECC)',
- TYPE => '<OUT OF SPEC>',
- SPEED => 'Unknown',
- CAPTION => 'PROC 2 DIMM 5F',
+ NUMSLOTS => 12,
+ SERIALNUMBER => 'SerNum11',
+ DESCRIPTION => 'DIMM (Single-bit ECC)',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => 'Unknown',
+ CAPTION => 'PROC 2 DIMM 5F',
MEMORYCORRECTION => 'Single-bit ECC'
}
],
'S3000AHLX' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => '0x750174F7',
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DDR2',
- SPEED => '533 MHz (1.9 ns)',
- CAPACITY => '1024',
- CAPTION => 'J8J1',
+ NUMSLOTS => 1,
+ SERIALNUMBER => '0x750174F7',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DDR2',
+ SPEED => '533 MHz (1.9 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'J8J1',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => '0x9DCCE4ED',
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DDR2',
- SPEED => '533 MHz (1.9 ns)',
- CAPACITY => '2048',
- CAPTION => 'J8J2',
+ NUMSLOTS => 2,
+ SERIALNUMBER => '0x9DCCE4ED',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DDR2',
+ SPEED => '533 MHz (1.9 ns)',
+ CAPACITY => '2048',
+ CAPTION => 'J8J2',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => '0x750174FF',
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DDR2',
- SPEED => '533 MHz (1.9 ns)',
- CAPACITY => '1024',
- CAPTION => 'J9J1',
+ NUMSLOTS => 3,
+ SERIALNUMBER => '0x750174FF',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DDR2',
+ SPEED => '533 MHz (1.9 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'J9J1',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => 'NO DIMM',
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DDR2',
- SPEED => 'Unknown',
- CAPTION => 'J9J2',
+ NUMSLOTS => 4,
+ SERIALNUMBER => 'NO DIMM',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DDR2',
+ SPEED => 'Unknown',
+ CAPTION => 'J9J2',
MEMORYCORRECTION => 'None'
}
],
'S5000VSA' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR2',
- SPEED => '667 MHz (1.5 ns)',
- CAPACITY => '1024',
- CAPTION => 'ONBOARD DIMM_A1',
+ NUMSLOTS => 1,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR2',
+ SPEED => '667 MHz (1.5 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'ONBOARD DIMM_A1',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR2',
- SPEED => '667 MHz (1.5 ns)',
- CAPACITY => '1024',
- CAPTION => 'ONBOARD DIMM_A2',
+ NUMSLOTS => 2,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR2',
+ SPEED => '667 MHz (1.5 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'ONBOARD DIMM_A2',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR2',
- SPEED => '667 MHz (1.5 ns)',
- CAPACITY => '1024',
- CAPTION => 'ONBOARD DIMM_A3',
+ NUMSLOTS => 3,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR2',
+ SPEED => '667 MHz (1.5 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'ONBOARD DIMM_A3',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR2',
- SPEED => '667 MHz (1.5 ns)',
- CAPACITY => '1024',
- CAPTION => 'ONBOARD DIMM_A4',
+ NUMSLOTS => 4,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR2',
+ SPEED => '667 MHz (1.5 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'ONBOARD DIMM_A4',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 5,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR2',
- SPEED => '667 MHz (1.5 ns)',
- CAPACITY => '1024',
- CAPTION => 'ONBOARD DIMM_B1',
+ NUMSLOTS => 5,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR2',
+ SPEED => '667 MHz (1.5 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'ONBOARD DIMM_B1',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 6,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR2',
- SPEED => '667 MHz (1.5 ns)',
- CAPACITY => '1024',
- CAPTION => 'ONBOARD DIMM_B2',
+ NUMSLOTS => 6,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR2',
+ SPEED => '667 MHz (1.5 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'ONBOARD DIMM_B2',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 7,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR2',
- SPEED => '667 MHz (1.5 ns)',
- CAPACITY => '1024',
- CAPTION => 'ONBOARD DIMM_B3',
+ NUMSLOTS => 7,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR2',
+ SPEED => '667 MHz (1.5 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'ONBOARD DIMM_B3',
MEMORYCORRECTION => 'Multi-bit ECC'
},
{
- NUMSLOTS => 8,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (Multi-bit ECC)',
- TYPE => 'DDR2',
- SPEED => '667 MHz (1.5 ns)',
- CAPACITY => '1024',
- CAPTION => 'ONBOARD DIMM_B4',
+ NUMSLOTS => 8,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (Multi-bit ECC)',
+ TYPE => 'DDR2',
+ SPEED => '667 MHz (1.5 ns)',
+ CAPACITY => '1024',
+ CAPTION => 'ONBOARD DIMM_B4',
MEMORYCORRECTION => 'Multi-bit ECC'
}
],
'vmware' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPACITY => '2048',
- CAPTION => 'RAM slot #0',
+ NUMSLOTS => 1,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPACITY => '2048',
+ CAPTION => 'RAM slot #0',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #1',
+ NUMSLOTS => 2,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #1',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #2',
+ NUMSLOTS => 3,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #2',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #3',
+ NUMSLOTS => 4,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #3',
MEMORYCORRECTION => 'None'
}
],
'vmware-esx' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPACITY => '2048',
- CAPTION => 'RAM slot #0',
+ NUMSLOTS => 1,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPACITY => '2048',
+ CAPTION => 'RAM slot #0',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #1',
+ NUMSLOTS => 2,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #1',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #2',
+ NUMSLOTS => 3,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #2',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #3',
+ NUMSLOTS => 4,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #3',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 5,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #4',
+ NUMSLOTS => 5,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #4',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 6,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #5',
+ NUMSLOTS => 6,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #5',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 7,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #6',
+ NUMSLOTS => 7,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #6',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 8,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #7',
+ NUMSLOTS => 8,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #7',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 9,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #8',
+ NUMSLOTS => 9,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #8',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 10,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #9',
+ NUMSLOTS => 10,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #9',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 11,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #10',
+ NUMSLOTS => 11,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #10',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 12,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #11',
+ NUMSLOTS => 12,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #11',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 13,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #12',
+ NUMSLOTS => 13,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #12',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 14,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #13',
+ NUMSLOTS => 14,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #13',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 15,
- SERIALNUMBER => undef,
- DESCRIPTION => 'DIMM (None)',
- TYPE => 'DRAM',
- SPEED => 'Unknown',
- CAPTION => 'RAM slot #14',
+ NUMSLOTS => 15,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'DRAM',
+ SPEED => 'Unknown',
+ CAPTION => 'RAM slot #14',
MEMORYCORRECTION => 'None'
}
],
'vmware-esx-2.5' => [
{
- NUMSLOTS => 1,
- TYPE => 'EDO DIMM',
- CAPACITY => '1024'
+ NUMSLOTS => 1,
+ TYPE => 'EDO DIMM',
+ CAPACITY => '1024'
},
{
- NUMSLOTS => 2,
- TYPE => 'DIMM'
+ NUMSLOTS => 2,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 3,
- TYPE => 'DIMM'
+ NUMSLOTS => 3,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 4,
- TYPE => 'DIMM'
+ NUMSLOTS => 4,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 5,
- TYPE => 'DIMM'
+ NUMSLOTS => 5,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 6,
- TYPE => 'DIMM'
+ NUMSLOTS => 6,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 7,
- TYPE => 'DIMM'
+ NUMSLOTS => 7,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 8,
- TYPE => 'DIMM'
+ NUMSLOTS => 8,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 9,
- TYPE => 'DIMM'
+ NUMSLOTS => 9,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 10,
- TYPE => 'DIMM'
+ NUMSLOTS => 10,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 11,
- TYPE => 'DIMM'
+ NUMSLOTS => 11,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 12,
- TYPE => 'DIMM'
+ NUMSLOTS => 12,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 13,
- TYPE => 'DIMM'
+ NUMSLOTS => 13,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 14,
- TYPE => 'DIMM'
+ NUMSLOTS => 14,
+ TYPE => 'DIMM'
},
{
- NUMSLOTS => 15,
- TYPE => 'DIMM'
+ NUMSLOTS => 15,
+ TYPE => 'DIMM'
}
],
'windows' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => undef,
- DESCRIPTION => 'SODIMM (None)',
- SPEED => 'Unknown',
- TYPE => 'SDRAM',
- CAPTION => 'DIMM 0',
- CAPACITY => '256',
+ NUMSLOTS => 1,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'SODIMM (None)',
+ SPEED => 'Unknown',
+ TYPE => 'SDRAM',
+ CAPTION => 'DIMM 0',
+ CAPACITY => '256',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => undef,
- DESCRIPTION => 'SODIMM (None)',
- SPEED => 'Unknown',
- TYPE => 'SDRAM',
- CAPTION => 'DIMM 1',
- CAPACITY => '512',
+ NUMSLOTS => 2,
+ SERIALNUMBER => undef,
+ DESCRIPTION => 'SODIMM (None)',
+ SPEED => 'Unknown',
+ TYPE => 'SDRAM',
+ CAPTION => 'DIMM 1',
+ CAPACITY => '512',
MEMORYCORRECTION => 'None'
}
],
+ 'windows-xppro' => [
+ {
+ NUMSLOTS => 1,
+ SERIALNUMBER => '14FA6621',
+ TYPE => 'DDR2',
+ SPEED => '800 MHz',
+ CAPTION => 'DIMM_A',
+ MEMORYCORRECTION => 'None',
+ DESCRIPTION => 'DIMM (None)',
+ CAPACITY => '2048'
+ },
+ {
+ NUMSLOTS => 2,
+ SERIALNUMBER => 'AEF96621',
+ TYPE => 'DDR2',
+ SPEED => '800 MHz',
+ CAPTION => 'DIMM_B',
+ MEMORYCORRECTION => 'None',
+ DESCRIPTION => 'DIMM (None)',
+ CAPACITY => '2048'
+ }
+ ],
+ 'windows-7' => [
+ {
+ NUMSLOTS => 1,
+ MEMORYCORRECTION => 'None',
+ SERIALNUMBER => 'SerNum0',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'Unknown',
+ SPEED => 'Unknown',
+ CAPTION => 'DIMM0'
+ },
+ {
+ NUMSLOTS => 2,
+ SERIALNUMBER => '0000000',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => '1600 MHz',
+ CAPTION => 'DIMM1',
+ MEMORYCORRECTION => 'None',
+ DESCRIPTION => 'DIMM (None)',
+ CAPACITY => '2048'
+ },
+ {
+ NUMSLOTS => 3,
+ MEMORYCORRECTION => 'None',
+ SERIALNUMBER => 'SerNum2',
+ DESCRIPTION => 'DIMM (None)',
+ TYPE => 'Unknown',
+ SPEED => 'Unknown',
+ CAPTION => 'DIMM2'
+ },
+ {
+ NUMSLOTS => 4,
+ SERIALNUMBER => '0000000',
+ TYPE => '<OUT OF SPEC>',
+ SPEED => '1600 MHz',
+ CAPTION => 'DIMM3',
+ MEMORYCORRECTION => 'None',
+ DESCRIPTION => 'DIMM (None)',
+ CAPACITY => '2048'
+ }
+ ],
'windows-hyperV' => [
{
- NUMSLOTS => 1,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPACITY => '1024',
- CAPTION => 'M0',
+ NUMSLOTS => 1,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPACITY => '1024',
+ CAPTION => 'M0',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 2,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M1',
+ NUMSLOTS => 2,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M1',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 3,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M2',
+ NUMSLOTS => 3,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M2',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 4,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M3',
+ NUMSLOTS => 4,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M3',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 5,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M4',
+ NUMSLOTS => 5,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M4',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 6,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M5',
+ NUMSLOTS => 6,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M5',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 7,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M6',
+ NUMSLOTS => 7,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M6',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 8,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M7',
+ NUMSLOTS => 8,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M7',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 9,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M8',
+ NUMSLOTS => 9,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M8',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 10,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M9',
+ NUMSLOTS => 10,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M9',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 11,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M10',
+ NUMSLOTS => 11,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M10',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 12,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M11',
+ NUMSLOTS => 12,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M11',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 13,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M12',
+ NUMSLOTS => 13,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M12',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 14,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M13',
+ NUMSLOTS => 14,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M13',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 15,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M14',
+ NUMSLOTS => 15,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M14',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 16,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M15',
+ NUMSLOTS => 16,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M15',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 17,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M16',
+ NUMSLOTS => 17,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M16',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 18,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M17',
+ NUMSLOTS => 18,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M17',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 19,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M18',
+ NUMSLOTS => 19,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M18',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 20,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M19',
+ NUMSLOTS => 20,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M19',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 21,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M20',
+ NUMSLOTS => 21,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M20',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 22,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M21',
+ NUMSLOTS => 22,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M21',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 23,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M22',
+ NUMSLOTS => 23,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M22',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 24,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M23',
+ NUMSLOTS => 24,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M23',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 25,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M24',
+ NUMSLOTS => 25,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M24',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 26,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M25',
+ NUMSLOTS => 26,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M25',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 27,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M26',
+ NUMSLOTS => 27,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M26',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 28,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M27',
+ NUMSLOTS => 28,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M27',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 29,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M28',
+ NUMSLOTS => 29,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M28',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 30,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M29',
+ NUMSLOTS => 30,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M29',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 31,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M30',
+ NUMSLOTS => 31,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M30',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 32,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M31',
+ NUMSLOTS => 32,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M31',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 33,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M32',
+ NUMSLOTS => 33,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M32',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 34,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M33',
+ NUMSLOTS => 34,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M33',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 35,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M34',
+ NUMSLOTS => 35,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M34',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 36,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M35',
+ NUMSLOTS => 36,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M35',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 37,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M36',
+ NUMSLOTS => 37,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M36',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 38,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M37',
+ NUMSLOTS => 38,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M37',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 39,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M38',
+ NUMSLOTS => 39,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M38',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 40,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M39',
+ NUMSLOTS => 40,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M39',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 41,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M40',
+ NUMSLOTS => 41,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M40',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 42,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M41',
+ NUMSLOTS => 42,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M41',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 43,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M42',
+ NUMSLOTS => 43,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M42',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 44,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M43',
+ NUMSLOTS => 44,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M43',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 45,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M44',
+ NUMSLOTS => 45,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M44',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 46,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M45',
+ NUMSLOTS => 46,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M45',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 47,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M46',
+ NUMSLOTS => 47,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M46',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 48,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M47',
+ NUMSLOTS => 48,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M47',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 49,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M48',
+ NUMSLOTS => 49,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M48',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 50,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M49',
+ NUMSLOTS => 50,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M49',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 51,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M50',
+ NUMSLOTS => 51,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M50',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 52,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M51',
+ NUMSLOTS => 52,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M51',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 53,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M52',
+ NUMSLOTS => 53,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M52',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 54,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M53',
+ NUMSLOTS => 54,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M53',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 55,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M54',
+ NUMSLOTS => 55,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M54',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 56,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M55',
+ NUMSLOTS => 56,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M55',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 57,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M56',
+ NUMSLOTS => 57,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M56',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 58,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M57',
+ NUMSLOTS => 58,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M57',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 59,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M58',
+ NUMSLOTS => 59,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M58',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 60,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M59',
+ NUMSLOTS => 60,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M59',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 61,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M60',
+ NUMSLOTS => 61,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M60',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 62,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M61',
+ NUMSLOTS => 62,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M61',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 63,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M62',
+ NUMSLOTS => 63,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M62',
MEMORYCORRECTION => 'None'
},
{
- NUMSLOTS => 64,
- SERIALNUMBER => 'None',
- DESCRIPTION => 'Unknown (None)',
- TYPE => 'Other',
- SPEED => 'Unknown',
- CAPTION => 'M63',
+ NUMSLOTS => 64,
+ SERIALNUMBER => 'None',
+ DESCRIPTION => 'Unknown (None)',
+ TYPE => 'Other',
+ SPEED => 'Unknown',
+ CAPTION => 'M63',
MEMORYCORRECTION => 'None'
}
diff --git a/t/inventory/solaris/bios.t b/t/inventory/solaris/bios.t
new file mode 100755
index 0000000..b649dbd
--- /dev/null
+++ b/t/inventory/solaris/bios.t
@@ -0,0 +1,157 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use FusionInventory::Agent::Task::Inventory::Input::Solaris::Bios;
+
+my %showrev_tests = (
+ 'SPARC-1' => {
+ 'Release' => '5.10',
+ 'Hostname' => '157501s021plc',
+ 'Kernel version' => 'SunOS',
+ 'Kernel architecture' => 'sun4u',
+ 'Hardware provider' => 'Sun_Microsystem',
+ 'Domain' => 'be.cnamts.fr',
+ 'Application architecture' => 'sparc',
+ 'Hostid' => '83249bbf',
+ },
+ 'SPARC-2' => {
+ 'Kernel version' => 'SunOS',
+ 'Release' => '5.10',
+ 'Hostname' => 'mysunserver',
+ 'Hardware provider' => 'Sun_Microsystems',
+ 'Kernel architecture' => 'sun4v',
+ 'Application architecture' => 'sparc',
+ 'Hostid' => 'mabox'
+ },
+ 'x86-1' => {
+ 'Kernel version' => 'SunOS',
+ 'Hostname' => 'stlaurent',
+ 'Kernel architecture' => 'i86pc',
+ 'Application architecture' => 'i386',
+ 'Hostid' => '403100b',
+ 'Release' => '5.10',
+ },
+ 'x86-2' => {
+ 'Kernel version' => 'SunOS',
+ 'Release' => '5.10',
+ 'Hostname' => 'mamachine',
+ 'Kernel architecture' => 'i86pc',
+ 'Application architecture' => 'i386',
+ 'Hostid' => '7c31a88'
+ },
+ 'x86-3' => {
+ 'Kernel version' => 'SunOS',
+ 'Release' => '5.10',
+ 'Hostname' => 'plop',
+ 'Kernel architecture' => 'i86pc',
+ 'Application architecture' => 'i386',
+ 'Hostid' => '7c31a36'
+ }
+);
+
+my %smbios_tests = (
+ 'x86-1' => {
+ 'SMB_TYPE_SYSTEM' => {
+ 'Version' => '00',
+ 'SKU Number' => ' ',
+ 'Serial Number' => 'R00T34E0009',
+ 'Product' => 'Sun Fire V40z',
+ 'Manufacturer' => 'Sun Microsystems, Inc.',
+ 'UUID' => 'be1630df-d130-41a4-be32-fd28bb4bd1ac',
+ 'Wake-Up Event' => '0x6 (power switch)'
+ }
+ },
+ 'x86-3' => {
+ SMB_TYPE_CHASSIS => {
+ 'Chassis Height' => '1u',
+ 'Power Supply State' => '0x3 (safe)',
+ 'Element Records' => '0',
+ 'Serial Number' => 'QSDH1234567',
+ 'Thermal State' => '0x3 (safe)',
+ 'Lock Present' => 'N',
+ 'Asset Tag' => '6I012345TF',
+ 'Chassis Type' => '0x17 (rack mount chassis)',
+ 'Power Cords' => '1',
+ 'Version' => 'E10476-011',
+ 'OEM Data' => '0x81581cf8',
+ 'Boot-Up State' => '0x3 (safe)',
+ 'Manufacturer' => 'TRANSTEC'
+ },
+ SMB_TYPE_BIOS => {
+ 'Characteristics' => '0x15c099a80',
+ 'Version Number' => '0.0',
+ 'Vendor' => 'Intel Corporation',
+ 'Image Size' => '98304 bytes',
+ 'Characteristics Extension Byte 2' => '0x7',
+ 'Characteristics Extension Byte 1' => '0x33',
+ 'Address Segment' => '0xe800',
+ 'Version String' => 'SFC4UR.86B.01.00.0029.071220092126',
+ 'Embedded Ctlr Firmware Version Number' => '0.0',
+ 'Release Date' => '07/12/2009',
+ 'ROM Size' => '8388608 bytes'
+ },
+ SMB_TYPE_IPMIDEV => {
+ 'Flags' => '0x9',
+ 'NV Storage Device Bus ID' => '0xffffffff',
+ 'BMC IPMI Version' => '2.0',
+ 'Register Spacing' => '1',
+ 'Interrupt Number' => '0',
+ 'Type' => '1 (KCS: Keyboard Controller Style)',
+ 'i2c Bus Slave Address' => '0x20',
+ 'BMC Base Address' => '0xca2'
+ },
+ SMB_TYPE_BASEBOARD => {
+ 'Board Type' => '0xa (motherboard)',
+ 'Flags' => '0x9',
+ 'Serial Number' => 'QSFX12345678',
+ 'Product' => 'S7000FC4UR',
+ 'Manufacturer' => 'Intel',
+ 'Chassis' => '0',
+ 'Asset Tag' => '6I012345TF'
+ },
+ SMB_TYPE_SYSTEM => {
+ 'Family' => ' ',
+ 'SKU Number' => '6I012345TF',
+ 'Product' => 'MP Server',
+ 'Manufacturer' => 'Intel',
+ 'UUID' => '4b713db6-6d40-11dd-b32c-000123456789',
+ 'Wake-Up Event' => '0x6 (power switch)'
+ }
+ }
+);
+
+my %prtconf_tests = (
+ 'SPARC-1' => {
+ 'compatible' => 'SUNW,Serengeti',
+ 'device_type' => 'gptwo',
+ 'banner-name' => 'Sun Fire E6900',
+ 'name' => 'SUNW,Sun-Fire'
+ }
+);
+
+plan tests =>
+ (scalar keys %showrev_tests) +
+ (scalar keys %smbios_tests) +
+ (scalar keys %prtconf_tests);
+
+foreach my $test (keys %showrev_tests) {
+ my $file = "resources/solaris/showrev/$test";
+ my $result = FusionInventory::Agent::Task::Inventory::Input::Solaris::Bios::_parseShowRev(file => $file);
+ is_deeply($result, $showrev_tests{$test}, "showrev parsing: $test");
+}
+
+foreach my $test (keys %smbios_tests) {
+ my $file = "resources/solaris/smbios/$test";
+ my $result = FusionInventory::Agent::Task::Inventory::Input::Solaris::Bios::_parseSmbios(file => $file);
+ is_deeply($result, $smbios_tests{$test}, "smbios parsing: $test");
+}
+
+foreach my $test (keys %prtconf_tests) {
+ my $file = "resources/solaris/prtconf/$test";
+ my $result = FusionInventory::Agent::Task::Inventory::Input::Solaris::Bios::_parsePrtconf(file => $file);
+ is_deeply($result, $prtconf_tests{$test}, "prtconf parsing: $test");
+}
diff --git a/t/inventory/solaris/cpu.t b/t/inventory/solaris/cpu.t
index 44f3e3c..c71b4ea 100755
--- a/t/inventory/solaris/cpu.t
+++ b/t/inventory/solaris/cpu.t
@@ -37,6 +37,16 @@ my %memconf_tests = (
]
);
+my %psrinfo_tests = (
+ sample1 => [
+ 8,
+ {
+ NAME => 'i386',
+ SPEED => 2133
+ }
+ ]
+);
+
my %spec_tests = (
'Sun Microsystems, Inc. Sun-Fire-T200 (Sun Fire T2000) (8-core quad-thread UltraSPARC-T1 1000MHz)' => [
1,
@@ -140,6 +150,7 @@ my %spec_tests = (
plan tests =>
(scalar keys %memconf_tests) +
+ (scalar keys %psrinfo_tests) +
(scalar keys %spec_tests) ;
foreach my $test (keys %memconf_tests) {
@@ -148,6 +159,12 @@ foreach my $test (keys %memconf_tests) {
is_deeply(\@results, $memconf_tests{$test}, "memconf parsing: $test" );
}
+foreach my $test (keys %psrinfo_tests) {
+ my $file = "resources/solaris/psrinfo/$test";
+ my @results = FusionInventory::Agent::Task::Inventory::Input::Solaris::CPU::_getCPUFromPsrinfo(file => $file);
+ is_deeply(\@results, $psrinfo_tests{$test}, "psrinfo parsing: $test" );
+}
+
foreach my $test (keys %spec_tests) {
my @results = FusionInventory::Agent::Task::Inventory::Input::Solaris::CPU::_parseSpec($test);
is_deeply(\@results, $spec_tests{$test}, "spec parsing: $test" );
diff --git a/t/inventory/windows/cpu.t b/t/inventory/windows/cpu.t
new file mode 100755
index 0000000..ef03d46
--- /dev/null
+++ b/t/inventory/windows/cpu.t
@@ -0,0 +1,69 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use utf8;
+use lib 't';
+
+use English qw(-no_match_vars);
+use Test::More;
+use Test::MockModule;
+
+use FusionInventory::Test::Utils;
+
+BEGIN {
+ # use mock modules for non-available ones
+ push @INC, 't/fake/windows' if $OSNAME ne 'MSWin32';
+}
+
+use FusionInventory::Agent::Task::Inventory::Input::Win32::CPU;
+
+my %tests = (
+ 7 => [
+ {
+ ID => 'A7 06 02 00 FF FB EB BF',
+ NAME => 'Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz',
+ SERIAL => 'ToBeFilledByO.E.M.',
+ MANUFACTURER => 'Intel',
+ DESCRIPTION => 'x86 Family 6 Model 42 Stepping 7',
+ SPEED => '2800',
+ THREAD => undef,
+ CORE => '4'
+ }
+ ]
+);
+
+plan tests => scalar keys %tests;
+
+my $module = Test::MockModule->new(
+ 'FusionInventory::Agent::Task::Inventory::Input::Win32::CPU'
+);
+
+foreach my $test (keys %tests) {
+ $module->mock(
+ 'getWmiObjects',
+ mockGetWmiObjects($test)
+ );
+
+ $module->mock(
+ 'getCpusFromDmidecode',
+ sub {
+ return
+ FusionInventory::Agent::Tools::Generic::getCpusFromDmidecode(
+ file => "resources/generic/dmidecode/windows-$test"
+ );
+ }
+ );
+
+ $module->mock(
+ 'getRegistryKey',
+ mockGetRegistryKey($test)
+ );
+
+ my @cpus = FusionInventory::Agent::Task::Inventory::Input::Win32::CPU::_getCPUs();
+ is_deeply(
+ \@cpus,
+ $tests{$test},
+ "$test sample"
+ );
+}
diff --git a/t/inventory/windows/memory.t b/t/inventory/windows/memory.t
new file mode 100755
index 0000000..3ff1983
--- /dev/null
+++ b/t/inventory/windows/memory.t
@@ -0,0 +1,66 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use utf8;
+use lib 't';
+
+use English qw(-no_match_vars);
+use Test::More;
+use Test::MockModule;
+
+use FusionInventory::Test::Utils;
+
+BEGIN {
+ # use mock modules for non-available ones
+ push @INC, 't/fake/windows' if $OSNAME ne 'MSWin32';
+}
+
+use FusionInventory::Agent::Task::Inventory::Input::Win32::Memory;
+
+my %tests = (
+ 7 => [
+ {
+ NUMSLOTS => 0,
+ FORMFACTOR => 'DIMM',
+ SERIALNUMBER => '0000000',
+ TYPE => 'Unknown',
+ SPEED => '1600',
+ CAPTION => "Mémoire physique",
+ REMOVABLE => 0,
+ DESCRIPTION => "Mémoire physique",
+ CAPACITY => '2048'
+ },
+ {
+ NUMSLOTS => 1,
+ FORMFACTOR => 'DIMM',
+ SERIALNUMBER => '0000000',
+ TYPE => 'Unknown',
+ SPEED => '1600',
+ CAPTION => "Mémoire physique",
+ REMOVABLE => 0,
+ DESCRIPTION => "Mémoire physique",
+ CAPACITY => '2048'
+ }
+ ]
+);
+
+plan tests => scalar keys %tests;
+
+my $module = Test::MockModule->new(
+ 'FusionInventory::Agent::Task::Inventory::Input::Win32::Memory'
+);
+
+foreach my $test (keys %tests) {
+ $module->mock(
+ 'getWmiObjects',
+ mockGetWmiObjects($test)
+ );
+
+ my @memories = FusionInventory::Agent::Task::Inventory::Input::Win32::Memory::_getMemories();
+ is_deeply(
+ \@memories,
+ $tests{$test},
+ "$test sample"
+ );
+}
diff --git a/t/inventory/windows/printers.t b/t/inventory/windows/printers.t
index 8199b06..f890c4d 100755
--- a/t/inventory/windows/printers.t
+++ b/t/inventory/windows/printers.t
@@ -2,9 +2,13 @@
use strict;
use warnings;
+use lib 't';
use English qw(-no_match_vars);
use Test::More;
+use Test::MockModule;
+
+use FusionInventory::Test::Utils;
BEGIN {
# use mock modules for non-available ones
@@ -35,68 +39,21 @@ foreach my $test (keys %tests) {
}
plan tests => $plan;
-foreach my $test (keys %tests) {
- my $printKey = load_registry("resources/win32/registry/$test-USBPRINT.reg");
- my $usbKey = load_registry("resources/win32/registry/$test-USB.reg");
- foreach my $port (keys %{$tests{$test}}) {
- my $prefix = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBPrefix($printKey, $port);
- my $serial = FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBSerial($usbKey, $prefix);
-
- is($serial, $tests{$test}->{$port}, "serial for printer $port");
- }
-}
-
-sub load_registry {
- my ($file) = @_;
-
- my $root_offset;
- my $root_key = {};
- my $current_key;
-
- open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
-
- # this is a windows file
- binmode $handle, ':encoding(UTF-16LE)';
- local $INPUT_RECORD_SEPARATOR="\r\n";
-
- while (my $line = <$handle>) {
- chomp $line;
-
- if ($line =~ /^ \[ ([^]]+) \] $/x) {
- my $path = $1;
- my @path = split(/\\/, $path);
-
- if ($root_offset) {
- splice @path, 0, $root_offset;
- $current_key = $root_key;
- foreach my $element (@path) {
- my $key_path = $element . '/';
-
- if (!defined $current_key->{$key_path}) {
- my $new_key = {};
- $current_key->{$key_path} = $new_key;
- }
-
- $current_key = $current_key->{$key_path};
- }
- } else {
- $root_offset = scalar @path;
- }
- next;
- }
-
- if ($line =~ /^ " ([^"]+) " = dword:(\d+)/x) {
- $current_key->{'/' . $1} = "0x$2";
- next;
- }
+my $module = Test::MockModule->new(
+ 'FusionInventory::Agent::Task::Inventory::Input::Win32::Printers'
+);
- if ($line =~ /^ " ([^"]+) " = " ([^"]+) "/x) {
- $current_key->{'/' . $1} = $2;
- next;
- }
+foreach my $test (keys %tests) {
+ $module->mock(
+ 'getRegistryKey',
+ mockGetRegistryKey($test)
+ );
+ foreach my $port (keys %{$tests{$test}}) {
+ is(
+ FusionInventory::Agent::Task::Inventory::Input::Win32::Printers::_getUSBPrinterSerial($port),
+ $tests{$test}->{$port},
+ "$test sample, $port printer"
+ );
}
- close $handle;
-
- return $root_key;
}
diff --git a/t/inventory/windows/usb.t b/t/inventory/windows/usb.t
index f8a5147..4312095 100755
--- a/t/inventory/windows/usb.t
+++ b/t/inventory/windows/usb.t
@@ -3,11 +3,14 @@
use strict;
use warnings;
use utf8;
+use lib 't';
use English qw(-no_match_vars);
use Test::More;
use Test::MockModule;
+use FusionInventory::Test::Utils;
+
BEGIN {
# use mock modules for non-available ones
push @INC, 't/fake/windows' if $OSNAME ne 'MSWin32';
@@ -93,52 +96,15 @@ my $module = Test::MockModule->new(
);
foreach my $test (keys %tests) {
- # redefine getWmiObjects function
$module->mock(
'getWmiObjects',
- sub {
- my (%params) = @_;
-
- my $file = "resources/win32/wmi/$test-$params{class}.wmi";
- open (my $handle, '<', $file) or die "can't open $file: $ERRNO";
-
- # this is a windows file
- binmode $handle, ':encoding(UTF-16LE)';
- local $INPUT_RECORD_SEPARATOR="\r\n";
-
- # build a list of desired properties indexes
- my %properties = map { $_ => 1 } @{$params{properties}};
-
- my @objects;
- my $object;
- while (my $line = <$handle>) {
- chomp $line;
-
- if ($line =~ /^ (\w+) = (.+) $/x) {
- my $key = $1;
- my $value = $2;
- next unless $properties{$key};
- $value =~ s/&/&/g;
- $object->{$key} = $value;
- next;
- }
-
- if ($line =~ /^$/) {
- push @objects, $object if $object;
- undef $object;
- next;
- }
- }
- close $handle;
-
- return @objects;
- }
+ mockGetWmiObjects($test)
);
my @devices = FusionInventory::Agent::Task::Inventory::Input::Win32::USB::_getUSBDevices();
is_deeply(
\@devices,
$tests{$test},
- "$test USB devices list"
+ "$test sample"
);
}
diff --git a/t/tools/generic.t b/t/tools/generic.t
index 55ac597..7ae2863 100755
--- a/t/tools/generic.t
+++ b/t/tools/generic.t
@@ -4513,6 +4513,1161 @@ my %dmidecode_tests = (
'Ending Address' => '0x000400003FF'
}
]
+ },
+ 'windows-xppro' => {
+ '32' => [
+ {
+ 'Status' => 'No errors detected'
+ }
+ ],
+ '11' => [
+ {
+ 'String 1' => 'Dell System',
+ 'String 3' => '13[PP04X]',
+ 'String 2' => '5[0003]'
+ }
+ ],
+ '21' => [
+ {
+ 'Type' => 'Touch Pad',
+ 'Buttons' => '2',
+ 'Interface' => 'Bus Mouse'
+ }
+ ],
+ '7' => [
+ {
+ 'Error Correction Type' => 'None',
+ 'Installed Size' => '128 kB',
+ 'Operational Mode' => 'Write Back',
+ 'Configuration' => 'Enabled, Not Socketed, Level 1',
+ 'Installed SRAM Type' => 'Unknown',
+ 'System Type' => 'Data',
+ 'Speed' => 'Unknown',
+ 'Associativity' => '4-way Set-associative',
+ 'Location' => 'Internal',
+ 'Maximum Size' => '128 kB'
+ },
+ {
+ 'Error Correction Type' => 'None',
+ 'Installed Size' => '6144 kB',
+ 'Operational Mode' => 'Varies With Memory Address',
+ 'Configuration' => 'Enabled, Not Socketed, Level 2',
+ 'Installed SRAM Type' => 'Pipeline Burst',
+ 'System Type' => 'Unified',
+ 'Speed' => '15 ns',
+ 'Associativity' => 'Other',
+ 'Location' => 'Internal',
+ 'Maximum Size' => '6144 kB'
+ }
+ ],
+ '17' => [
+ {
+ 'Part Number' => 'EBE21UE8ACUA-8G-E',
+ 'Serial Number' => '14FA6621',
+ 'Data Width' => '64 bits',
+ 'Array Handle' => '0x1000',
+ 'Type Detail' => 'Synchronous',
+ 'Set' => 'None',
+ 'Asset Tag' => '200840',
+ 'Total Width' => '64 bits',
+ 'Type' => 'DDR2',
+ 'Speed' => '800 MHz',
+ 'Size' => '2048 MB',
+ 'Error Information Handle' => 'Not Provided',
+ 'Locator' => 'DIMM_A',
+ 'Manufacturer' => '7F7FFE0000000000',
+ 'Form Factor' => 'DIMM'
+ },
+ {
+ 'Part Number' => 'EBE21UE8ACUA-8G-E',
+ 'Serial Number' => 'AEF96621',
+ 'Data Width' => '64 bits',
+ 'Array Handle' => '0x1000',
+ 'Type Detail' => 'Synchronous',
+ 'Set' => 'None',
+ 'Asset Tag' => '200840',
+ 'Total Width' => '64 bits',
+ 'Type' => 'DDR2',
+ 'Speed' => '800 MHz',
+ 'Size' => '2048 MB',
+ 'Error Information Handle' => 'Not Provided',
+ 'Locator' => 'DIMM_B',
+ 'Manufacturer' => '7F7FFE0000000000',
+ 'Form Factor' => 'DIMM'
+ }
+ ],
+ '2' => [
+ {
+ 'Product Name' => '0P019G',
+ 'Serial Number' => '.HLG964J.CN129618C52450.',
+ 'Manufacturer' => 'Dell Inc.'
+ }
+ ],
+ '22' => [
+ {
+ 'Design Capacity' => '84000 mWh',
+ 'Maximum Error' => '3%',
+ 'OEM-specific Information' => '0x00000001',
+ 'Design Voltage' => '11100 mV',
+ 'SBDS Manufacture Date' => '2010-08-31',
+ 'SBDS Chemistry' => 'LION',
+ 'Location' => 'Sys. Battery Bay',
+ 'Manufacturer' => 'SMP',
+ 'Name' => 'DELL HJ59008',
+ 'SBDS Version' => '1.0',
+ 'SBDS Serial Number' => '02C7'
+ }
+ ],
+ '1' => [
+ {
+ 'Wake-up Type' => 'Power Switch',
+ 'Product Name' => 'Precision M4400',
+ 'Serial Number' => 'HLG964J',
+ 'Manufacturer' => 'Dell Inc.',
+ 'UUID' => '44454C4C-4C00-1047-8039-C8C04F36344A'
+ }
+ ],
+ '0' => [
+ {
+ 'BIOS Revision' => '2.4',
+ 'Address' => '0xF0000',
+ 'Vendor' => 'Dell Inc.',
+ 'Version' => 'A24',
+ 'Runtime Size' => '64 kB',
+ 'Firmware Revision' => '2.4',
+ 'Release Date' => '08/19/2010',
+ 'ROM Size' => '1728 kB'
+ }
+ ],
+ '16' => [
+ {
+ 'Number Of Devices' => '2',
+ 'Error Correction Type' => 'None',
+ 'Error Information Handle' => 'Not Provided',
+ 'Location' => 'System Board Or Motherboard',
+ 'Maximum Capacity' => '8 GB',
+ 'Use' => 'System Memory'
+ }
+ ],
+ '13' => [
+ {
+ 'Language Description Format' => 'Long',
+ 'Installable Languages' => '1',
+ 'Currently Installed Language' => 'en|US|iso8859-1'
+ }
+ ],
+ '27' => [
+ {
+ 'Type' => 'Fan',
+ 'Status' => 'OK',
+ 'OEM-specific Information' => '0x0000DD00'
+ }
+ ],
+ '28' => [
+ {
+ 'Status' => 'OK',
+ 'Minimum Value' => '0.0 deg C',
+ 'OEM-specific Information' => '0x0000DC00',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => '127.0 deg C',
+ 'Resolution' => '1.000 deg C',
+ 'Location' => 'Processor',
+ 'Tolerance' => '0.5 deg C',
+ 'Description' => 'CPU Internal Temperature'
+ }
+ ],
+ '3' => [
+ {
+ 'Type' => 'Portable',
+ 'Power Supply State' => 'Safe',
+ 'Security Status' => 'None',
+ 'Serial Number' => 'HLG964J',
+ 'Thermal State' => 'Safe',
+ 'Boot-up State' => 'Safe',
+ 'Manufacturer' => 'Dell Inc.'
+ }
+ ],
+ '9' => [
+ {
+ 'ID' => 'Adapter 0, Socket 0',
+ 'Length' => 'Other',
+ 'Designation' => 'PCMCIA 0',
+ 'Type' => '32-bit PC Card (PCMCIA)',
+ 'Current Usage' => 'Available'
+ }
+ ],
+ '20' => [
+ {
+ 'Range Size' => '4 GB',
+ 'Partition Row Position' => '1',
+ 'Starting Address' => '0x00000000000',
+ 'Memory Array Mapped Address Handle' => '0x1301',
+ 'Physical Device Handle' => '0x1100',
+ 'Interleaved Data Depth' => '8',
+ 'Interleave Position' => '1',
+ 'Ending Address' => '0x000FFFFFFFF'
+ },
+ {
+ 'Range Size' => '4 GB',
+ 'Partition Row Position' => '1',
+ 'Starting Address' => '0x00000000000',
+ 'Memory Array Mapped Address Handle' => '0x1301',
+ 'Physical Device Handle' => '0x1101',
+ 'Interleaved Data Depth' => '8',
+ 'Interleave Position' => '2',
+ 'Ending Address' => '0x000FFFFFFFF'
+ }
+ ],
+ '8' => [
+ {
+ 'Port Type' => 'Parallel Port PS/2',
+ 'External Connector Type' => 'DB-25 female',
+ 'Internal Reference Designator' => 'PARALLEL',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'Port Type' => 'Serial Port 16550A Compatible',
+ 'External Connector Type' => 'DB-9 male',
+ 'Internal Reference Designator' => 'SERIAL1',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'Port Type' => 'USB',
+ 'External Connector Type' => 'Access Bus (USB)',
+ 'Internal Reference Designator' => 'USB',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'Port Type' => 'Video Port',
+ 'External Connector Type' => 'DB-15 female',
+ 'Internal Reference Designator' => 'MONITOR',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'Port Type' => 'Firewire (IEEE P1394)',
+ 'External Connector Type' => 'IEEE 1394',
+ 'Internal Reference Designator' => 'FireWire',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'Port Type' => 'Modem Port',
+ 'External Connector Type' => 'RJ-11',
+ 'Internal Reference Designator' => 'Modem',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'Port Type' => 'Network Port',
+ 'External Connector Type' => 'RJ-45',
+ 'Internal Reference Designator' => 'Ethernet',
+ 'Internal Connector Type' => 'None'
+ }
+ ],
+ '4' => [
+ {
+ 'ID' => '76 06 01 00 FF FB EB BF',
+ 'Socket Designation' => 'Microprocessor',
+ 'Status' => 'Populated, Enabled',
+ 'Max Speed' => '2534 MHz',
+ 'Family' => 'Core 2 Duo',
+ 'Thread Count' => '2',
+ 'Current Speed' => '2534 MHz',
+ 'L2 Cache Handle' => '0x0701',
+ 'Type' => 'Central Processor',
+ 'Signature' => 'Type 0, Family 6, Model 23, Stepping 6',
+ 'L1 Cache Handle' => '0x0700',
+ 'Manufacturer' => 'Intel',
+ 'Core Enabled' => '2',
+ 'External Clock' => '266 MHz',
+ 'Upgrade' => 'None',
+ 'Core Count' => '2',
+ 'Voltage' => '3.3 V',
+ 'L3 Cache Handle' => 'Not Provided'
+ }
+ ],
+ '10' => [
+ {
+ 'Type' => 'Video',
+ 'Status' => 'Enabled',
+ 'Description' => 'NVIDIA Quadro FX 1700M'
+ },
+ {
+ 'Type' => 'Sound',
+ 'Status' => 'Enabled',
+ 'Description' => 'IDT 92HD71'
+ }
+ ],
+ '19' => [
+ {
+ 'Range Size' => '4 GB',
+ 'Partition Width' => '1',
+ 'Starting Address' => '0x00000000000',
+ 'Physical Array Handle' => '0x1000',
+ 'Ending Address' => '0x000FFFFFFFF'
+ }
+ ]
+ },
+ 'windows-7' => {
+ '35' => [
+ {
+ 'Threshold Handle' => '0x0035',
+ 'Management Device Handle' => '0x0034',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x0034'
+ },
+ {
+ 'Threshold Handle' => '0x0038',
+ 'Management Device Handle' => '0x0034',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x0037'
+ },
+ {
+ 'Threshold Handle' => '0x003B',
+ 'Management Device Handle' => '0x0034',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x003A'
+ },
+ {
+ 'Threshold Handle' => '0x003E',
+ 'Management Device Handle' => '0x0034',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x003D'
+ },
+ {
+ 'Threshold Handle' => '0x003E',
+ 'Management Device Handle' => '0x0034',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x0040'
+ },
+ {
+ 'Threshold Handle' => '0x0046',
+ 'Management Device Handle' => '0x0045',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x0045'
+ },
+ {
+ 'Threshold Handle' => '0x0049',
+ 'Management Device Handle' => '0x0045',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x0048'
+ },
+ {
+ 'Threshold Handle' => '0x004C',
+ 'Management Device Handle' => '0x0045',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x004B'
+ },
+ {
+ 'Threshold Handle' => '0x004F',
+ 'Management Device Handle' => '0x0045',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x004E'
+ },
+ {
+ 'Threshold Handle' => '0x0052',
+ 'Management Device Handle' => '0x0045',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x0051'
+ },
+ {
+ 'Threshold Handle' => '0x0055',
+ 'Management Device Handle' => '0x0045',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x0054'
+ },
+ {
+ 'Threshold Handle' => '0x0055',
+ 'Management Device Handle' => '0x0045',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x0057'
+ },
+ {
+ 'Threshold Handle' => '0x0055',
+ 'Management Device Handle' => '0x0045',
+ 'Description' => 'To Be Filled By O.E.M.',
+ 'Component Handle' => '0x005A'
+ }
+ ],
+ '32' => [
+ {
+ 'Status' => 'No errors detected'
+ }
+ ],
+ '11' => [
+ {
+ 'String 1' => 'To Be Filled By O.E.M.'
+ }
+ ],
+ '7' => [
+ {
+ 'Error Correction Type' => 'None',
+ 'Installed Size' => '256 kB',
+ 'Operational Mode' => 'Write Back',
+ 'Socket Designation' => 'L1-Cache',
+ 'Configuration' => 'Enabled, Not Socketed, Level 1',
+ 'Installed SRAM Type' => 'Other',
+ 'System Type' => 'Unified',
+ 'Speed' => 'Unknown',
+ 'Associativity' => '8-way Set-associative',
+ 'Location' => 'Internal',
+ 'Maximum Size' => '256 kB'
+ },
+ {
+ 'Error Correction Type' => 'None',
+ 'Installed Size' => '1024 kB',
+ 'Operational Mode' => 'Varies With Memory Address',
+ 'Socket Designation' => 'L2-Cache',
+ 'Configuration' => 'Enabled, Not Socketed, Level 2',
+ 'Installed SRAM Type' => 'Other',
+ 'System Type' => 'Unified',
+ 'Speed' => 'Unknown',
+ 'Associativity' => '8-way Set-associative',
+ 'Location' => 'Internal',
+ 'Maximum Size' => '1024 kB'
+ },
+ {
+ 'Error Correction Type' => 'None',
+ 'Installed Size' => '6144 kB',
+ 'Operational Mode' => 'Unknown',
+ 'Socket Designation' => 'L3-Cache',
+ 'Configuration' => 'Disabled, Not Socketed, Level 3',
+ 'Installed SRAM Type' => 'Other',
+ 'System Type' => 'Unified',
+ 'Speed' => 'Unknown',
+ 'Associativity' => 'Other',
+ 'Location' => 'Internal',
+ 'Maximum Size' => '6144 kB'
+ }
+ ],
+ '26' => [
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'LM78A'
+ },
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'LM78B'
+ },
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'LM78B'
+ }
+ ],
+ '17' => [
+ {
+ 'Part Number' => 'Array1_PartNumber0',
+ 'Serial Number' => 'SerNum0',
+ 'Type Detail' => 'Synchronous',
+ 'Set' => 'None',
+ 'Type' => 'Unknown',
+ 'Speed' => 'Unknown',
+ 'Size' => 'No Module Installed',
+ 'Manufacturer' => 'Manufacturer0',
+ 'Bank Locator' => 'BANK0',
+ 'Array Handle' => '0x0024',
+ 'Data Width' => '64 bits',
+ 'Total Width' => '64 bits',
+ 'Asset Tag' => 'AssetTagNum0',
+ 'Rank' => 'Unknown',
+ 'Locator' => 'DIMM0',
+ 'Error Information Handle' => 'No Error',
+ 'Form Factor' => 'DIMM'
+ },
+ {
+ 'Part Number' => 'F3-12800CL9-2GBXL',
+ 'Serial Number' => '0000000',
+ 'Type Detail' => 'Synchronous',
+ 'Set' => 'None',
+ 'Type' => '<OUT OF SPEC>',
+ 'Speed' => '1600 MHz',
+ 'Size' => '2048 MB',
+ 'Manufacturer' => 'Undefined',
+ 'Bank Locator' => 'BANK1',
+ 'Array Handle' => '0x0024',
+ 'Data Width' => '64 bits',
+ 'Total Width' => '64 bits',
+ 'Asset Tag' => 'AssetTagNum1',
+ 'Rank' => '2',
+ 'Locator' => 'DIMM1',
+ 'Error Information Handle' => 'No Error',
+ 'Form Factor' => 'DIMM'
+ },
+ {
+ 'Part Number' => 'Array1_PartNumber2',
+ 'Serial Number' => 'SerNum2',
+ 'Type Detail' => 'Synchronous',
+ 'Set' => 'None',
+ 'Type' => 'Unknown',
+ 'Speed' => 'Unknown',
+ 'Size' => 'No Module Installed',
+ 'Manufacturer' => 'Manufacturer2',
+ 'Bank Locator' => 'BANK2',
+ 'Array Handle' => '0x0024',
+ 'Data Width' => '64 bits',
+ 'Total Width' => '64 bits',
+ 'Asset Tag' => 'AssetTagNum2',
+ 'Rank' => 'Unknown',
+ 'Locator' => 'DIMM2',
+ 'Error Information Handle' => 'No Error',
+ 'Form Factor' => 'DIMM'
+ },
+ {
+ 'Part Number' => 'F3-12800CL9-2GBXL',
+ 'Serial Number' => '0000000',
+ 'Type Detail' => 'Synchronous',
+ 'Set' => 'None',
+ 'Type' => '<OUT OF SPEC>',
+ 'Speed' => '1600 MHz',
+ 'Size' => '2048 MB',
+ 'Manufacturer' => 'Undefined',
+ 'Bank Locator' => 'BANK3',
+ 'Array Handle' => '0x0024',
+ 'Data Width' => '64 bits',
+ 'Total Width' => '64 bits',
+ 'Asset Tag' => 'AssetTagNum3',
+ 'Rank' => '2',
+ 'Locator' => 'DIMM3',
+ 'Error Information Handle' => 'No Error',
+ 'Form Factor' => 'DIMM'
+ }
+ ],
+ '2' => [
+ {
+ 'Product Name' => 'P8P67',
+ 'Chassis Handle' => '0x0003',
+ 'Serial Number' => 'MT7013K30709271',
+ 'Asset Tag' => 'To be filled by O.E.M.',
+ 'Version' => 'Rev 1.xx',
+ 'Type' => 'Motherboard',
+ 'Manufacturer' => 'ASUSTeK Computer INC.',
+ 'Location In Chassis' => 'To be filled by O.E.M.',
+ 'Contained Object Handles' => '0'
+ }
+ ],
+ '1' => [
+ {
+ 'Product Name' => 'System Product Name',
+ 'Family' => 'To be filled by O.E.M.',
+ 'Serial Number' => 'System Serial Number',
+ 'Version' => 'System Version',
+ 'Wake-up Type' => 'Power Switch',
+ 'SKU Number' => 'To be filled by O.E.M.',
+ 'Manufacturer' => 'System manufacturer',
+ 'UUID' => '1E00E6E0-008C-4400-9AAD-F46D04972D3E'
+ }
+ ],
+ '18' => [
+ {
+ 'Memory Array Address' => 'Unknown',
+ 'Vendor Syndrome' => 'Unknown',
+ 'Granularity' => 'Unknown',
+ 'Type' => 'OK',
+ 'Resolution' => 'Unknown',
+ 'Device Address' => 'Unknown',
+ 'Operation' => 'Unknown'
+ },
+ {
+ 'Memory Array Address' => 'Unknown',
+ 'Vendor Syndrome' => 'Unknown',
+ 'Granularity' => 'Unknown',
+ 'Type' => 'OK',
+ 'Resolution' => 'Unknown',
+ 'Device Address' => 'Unknown',
+ 'Operation' => 'Unknown'
+ },
+ {
+ 'Memory Array Address' => 'Unknown',
+ 'Vendor Syndrome' => 'Unknown',
+ 'Granularity' => 'Unknown',
+ 'Type' => 'OK',
+ 'Resolution' => 'Unknown',
+ 'Device Address' => 'Unknown',
+ 'Operation' => 'Unknown'
+ },
+ {
+ 'Memory Array Address' => 'Unknown',
+ 'Vendor Syndrome' => 'Unknown',
+ 'Granularity' => 'Unknown',
+ 'Type' => 'OK',
+ 'Resolution' => 'Unknown',
+ 'Device Address' => 'Unknown',
+ 'Operation' => 'Unknown'
+ },
+ {
+ 'Memory Array Address' => 'Unknown',
+ 'Vendor Syndrome' => 'Unknown',
+ 'Granularity' => 'Unknown',
+ 'Type' => 'OK',
+ 'Resolution' => 'Unknown',
+ 'Device Address' => 'Unknown',
+ 'Operation' => 'Unknown'
+ }
+ ],
+ '0' => [
+ {
+ 'Runtime Size' => '64 kB',
+ 'Version' => '1503',
+ 'BIOS Revision' => '4.6',
+ 'Address' => '0xF0000',
+ 'ROM Size' => '4096 kB',
+ 'Release Date' => '03/10/2011',
+ 'Vendor' => 'American Megatrends Inc.'
+ }
+ ],
+ '13' => [
+ {
+ 'Installable Languages' => '6',
+ 'Currently Installed Language' => 'eng'
+ }
+ ],
+ '16' => [
+ {
+ 'Number Of Devices' => '4',
+ 'Error Correction Type' => 'None',
+ 'Error Information Handle' => 'No Error',
+ 'Location' => 'System Board Or Motherboard',
+ 'Maximum Capacity' => '32 GB',
+ 'Use' => 'System Memory'
+ }
+ ],
+ '29' => [
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'ABC'
+ },
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'DEF'
+ },
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'GHI'
+ }
+ ],
+ '27' => [
+ {
+ 'Temperature Probe Handle' => '0x0038',
+ 'Type' => '<OUT OF SPEC>',
+ 'Status' => '<OUT OF SPEC>',
+ 'OEM-specific Information' => '0x00000000',
+ 'Cooling Unit Group' => '1',
+ 'Nominal Speed' => 'Unknown Or Non-rotating'
+ },
+ {
+ 'Temperature Probe Handle' => '0x0038',
+ 'Type' => '<OUT OF SPEC>',
+ 'Status' => '<OUT OF SPEC>',
+ 'OEM-specific Information' => '0x00000000',
+ 'Cooling Unit Group' => '1',
+ 'Nominal Speed' => 'Unknown Or Non-rotating'
+ },
+ {
+ 'Temperature Probe Handle' => '0x004C',
+ 'Type' => '<OUT OF SPEC>',
+ 'Status' => '<OUT OF SPEC>',
+ 'OEM-specific Information' => '0x00000000',
+ 'Cooling Unit Group' => '1',
+ 'Nominal Speed' => 'Unknown Or Non-rotating'
+ },
+ {
+ 'Temperature Probe Handle' => '0x0052',
+ 'Type' => '<OUT OF SPEC>',
+ 'Status' => '<OUT OF SPEC>',
+ 'OEM-specific Information' => '0x00000000',
+ 'Cooling Unit Group' => '1',
+ 'Nominal Speed' => 'Unknown Or Non-rotating'
+ }
+ ],
+ '39' => [
+ {
+ 'Input Voltage Probe Handle' => '0x0035',
+ 'Revision' => 'To Be Filled By O.E.M.',
+ 'Input Voltage Range Switching' => '<OUT OF SPEC>',
+ 'Serial Number' => 'To Be Filled By O.E.M.',
+ 'Hot Replaceable' => 'No',
+ 'Asset Tag' => 'To Be Filled By O.E.M.',
+ 'Input Current Probe Handle' => '0x0041',
+ 'Type' => '<OUT OF SPEC>',
+ 'Model Part Number' => 'To Be Filled By O.E.M.',
+ 'Cooling Device Handle' => '0x003B',
+ 'Plugged' => 'Yes',
+ 'Power Unit Group' => '1',
+ 'Location' => 'To Be Filled By O.E.M.',
+ 'Manufacturer' => 'To Be Filled By O.E.M.',
+ 'Name' => 'To Be Filled By O.E.M.',
+ 'Max Power Capacity' => 'Unknown'
+ },
+ {
+ 'Input Voltage Probe Handle' => '0x0035',
+ 'Revision' => 'To Be Filled By O.E.M.',
+ 'Input Voltage Range Switching' => '<OUT OF SPEC>',
+ 'Serial Number' => 'To Be Filled By O.E.M.',
+ 'Hot Replaceable' => 'No',
+ 'Asset Tag' => 'To Be Filled By O.E.M.',
+ 'Input Current Probe Handle' => '0x0041',
+ 'Type' => '<OUT OF SPEC>',
+ 'Model Part Number' => 'To Be Filled By O.E.M.',
+ 'Cooling Device Handle' => '0x003B',
+ 'Plugged' => 'Yes',
+ 'Power Unit Group' => '1',
+ 'Location' => 'To Be Filled By O.E.M.',
+ 'Manufacturer' => 'To Be Filled By O.E.M.',
+ 'Name' => 'To Be Filled By O.E.M.',
+ 'Max Power Capacity' => 'Unknown'
+ }
+ ],
+ '28' => [
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'LM78A'
+ },
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'LM78B'
+ },
+ {
+ 'Nominal Value' => 'Unknown',
+ 'Status' => '<OUT OF SPEC>',
+ 'Minimum Value' => 'Unknown',
+ 'OEM-specific Information' => '0x00000000',
+ 'Accuracy' => 'Unknown',
+ 'Maximum Value' => 'Unknown',
+ 'Resolution' => 'Unknown',
+ 'Location' => '<OUT OF SPEC>',
+ 'Tolerance' => 'Unknown',
+ 'Description' => 'LM78B'
+ }
+ ],
+ '36' => [
+ {
+ 'Lower Non-critical Threshold' => '1',
+ 'Upper Critical Threshold' => '4',
+ 'Lower Critical Threshold' => '3',
+ 'Lower Non-recoverable Threshold' => '5',
+ 'Upper Non-recoverable Threshold' => '6',
+ 'Upper Non-critical Threshold' => '2'
+ },
+ {
+ 'Lower Non-critical Threshold' => '1',
+ 'Upper Critical Threshold' => '4',
+ 'Lower Critical Threshold' => '3',
+ 'Lower Non-recoverable Threshold' => '5',
+ 'Upper Non-recoverable Threshold' => '6',
+ 'Upper Non-critical Threshold' => '2'
+ },
+ {
+ 'Lower Non-critical Threshold' => '1',
+ 'Upper Critical Threshold' => '4',
+ 'Lower Critical Threshold' => '3',
+ 'Lower Non-recoverable Threshold' => '5',
+ 'Upper Non-recoverable Threshold' => '6',
+ 'Upper Non-critical Threshold' => '2'
+ },
+ {
+ 'Lower Non-critical Threshold' => '1',
+ 'Upper Critical Threshold' => '4',
+ 'Lower Critical Threshold' => '3',
+ 'Lower Non-recoverable Threshold' => '5',
+ 'Upper Non-recoverable Threshold' => '6',
+ 'Upper Non-critical Threshold' => '2'
+ },
+ {
+ 'Lower Non-critical Threshold' => '7',
+ 'Upper Critical Threshold' => '10',
+ 'Lower Critical Threshold' => '8',
+ 'Lower Non-recoverable Threshold' => '11',
+ 'Upper Non-recoverable Threshold' => '12',
+ 'Upper Non-critical Threshold' => '8'
+ },
+ {
+ 'Lower Non-critical Threshold' => '13',
+ 'Upper Critical Threshold' => '16',
+ 'Lower Critical Threshold' => '15',
+ 'Lower Non-recoverable Threshold' => '17',
+ 'Upper Non-recoverable Threshold' => '18',
+ 'Upper Non-critical Threshold' => '14'
+ },
+ {
+ 'Lower Non-critical Threshold' => '1',
+ 'Upper Critical Threshold' => '4',
+ 'Lower Critical Threshold' => '3',
+ 'Lower Non-recoverable Threshold' => '5',
+ 'Upper Non-recoverable Threshold' => '6',
+ 'Upper Non-critical Threshold' => '2'
+ },
+ {
+ 'Lower Non-critical Threshold' => '1',
+ 'Upper Critical Threshold' => '4',
+ 'Lower Critical Threshold' => '3',
+ 'Lower Non-recoverable Threshold' => '5',
+ 'Upper Non-recoverable Threshold' => '6',
+ 'Upper Non-critical Threshold' => '2'
+ },
+ {
+ 'Lower Non-critical Threshold' => '1',
+ 'Upper Critical Threshold' => '4',
+ 'Lower Critical Threshold' => '3',
+ 'Lower Non-recoverable Threshold' => '5',
+ 'Upper Non-recoverable Threshold' => '6',
+ 'Upper Non-critical Threshold' => '2'
+ },
+ {
+ 'Lower Non-critical Threshold' => '1',
+ 'Upper Critical Threshold' => '4',
+ 'Lower Critical Threshold' => '3',
+ 'Lower Non-recoverable Threshold' => '5',
+ 'Upper Non-recoverable Threshold' => '6',
+ 'Upper Non-critical Threshold' => '2'
+ }
+ ],
+ '3' => [
+ {
+ 'Height' => 'Unspecified',
+ 'Power Supply State' => 'Safe',
+ 'Serial Number' => 'Chassis Serial Number',
+ 'Thermal State' => 'Safe',
+ 'Contained Elements' => '0',
+ 'Asset Tag' => 'Asset-1234567890',
+ 'Type' => 'Desktop',
+ 'Version' => 'Chassis Version',
+ 'Number Of Power Cords' => '1',
+ 'Security Status' => 'None',
+ 'OEM Information' => '0x00000000',
+ 'Manufacturer' => 'Chassis Manufacture',
+ 'Boot-up State' => 'Safe'
+ }
+ ],
+ '9' => [
+ {
+ 'Bus Address' => '0000:00:01.0',
+ 'ID' => '1',
+ 'Length' => 'Short',
+ 'Designation' => 'PCIEX16_1',
+ 'Type' => '32-bit PCI Express',
+ 'Current Usage' => 'In Use'
+ },
+ {
+ 'Bus Address' => '0000:00:1c.3',
+ 'ID' => '2',
+ 'Length' => 'Short',
+ 'Designation' => 'PCIEX1_1',
+ 'Type' => '32-bit PCI Express',
+ 'Current Usage' => 'In Use'
+ },
+ {
+ 'Bus Address' => '0000:00:1c.4',
+ 'ID' => '3',
+ 'Length' => 'Short',
+ 'Designation' => 'PCIEX1_2',
+ 'Type' => '32-bit PCI Express',
+ 'Current Usage' => 'In Use'
+ },
+ {
+ 'Bus Address' => '0000:00:1c.6',
+ 'ID' => '4',
+ 'Length' => 'Short',
+ 'Designation' => 'PCI1',
+ 'Type' => '32-bit PCI',
+ 'Current Usage' => 'In Use'
+ }
+ ],
+ '41' => [
+ {
+ 'Bus Address' => '0000:00:02.0',
+ 'Type' => 'Video',
+ 'Reference Designation' => ' Onboard IGD',
+ 'Type Instance' => '1',
+ 'Status' => 'Enabled'
+ },
+ {
+ 'Bus Address' => '0000:00:19.0',
+ 'Type' => 'Ethernet',
+ 'Reference Designation' => ' Onboard LAN',
+ 'Type Instance' => '1',
+ 'Status' => 'Enabled'
+ },
+ {
+ 'Bus Address' => '0000:03:1c.2',
+ 'Type' => 'Other',
+ 'Reference Designation' => ' Onboard 1394',
+ 'Type Instance' => '1',
+ 'Status' => 'Enabled'
+ }
+ ],
+ '12' => [
+ {
+ 'Option 1' => 'To Be Filled By O.E.M.'
+ }
+ ],
+ '20' => [
+ {
+ 'Memory Array Mapped Address Handle' => '0x0026',
+ 'Range Size' => '2 GB',
+ 'Physical Device Handle' => '0x002A',
+ 'Partition Row Position' => '1',
+ 'Starting Address' => '0x00000000000',
+ 'Ending Address' => '0x0007FFFFFFF'
+ },
+ {
+ 'Memory Array Mapped Address Handle' => '0x0026',
+ 'Range Size' => '2 GB',
+ 'Physical Device Handle' => '0x0030',
+ 'Partition Row Position' => '1',
+ 'Starting Address' => '0x00080000000',
+ 'Ending Address' => '0x000FFFFFFFF'
+ }
+ ],
+ '8' => [
+ {
+ 'External Reference Designator' => 'PS/2 Keyboard',
+ 'Port Type' => 'Keyboard Port',
+ 'External Connector Type' => 'PS/2',
+ 'Internal Reference Designator' => 'PS/2 Keyboard',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'External Reference Designator' => 'USB9_10',
+ 'Port Type' => 'USB',
+ 'External Connector Type' => 'Access Bus (USB)',
+ 'Internal Reference Designator' => 'USB9_10',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'External Reference Designator' => 'USB11_12',
+ 'Port Type' => 'USB',
+ 'External Connector Type' => 'Access Bus (USB)',
+ 'Internal Reference Designator' => 'USB11_12',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'External Reference Designator' => 'GbE LAN',
+ 'Port Type' => 'Network Port',
+ 'External Connector Type' => 'RJ-45',
+ 'Internal Reference Designator' => 'GbE LAN',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'External Reference Designator' => 'AUDIO',
+ 'Port Type' => 'Audio Port',
+ 'External Connector Type' => 'Other',
+ 'Internal Reference Designator' => 'AUDIO',
+ 'Internal Connector Type' => 'None'
+ },
+ {
+ 'Port Type' => 'SATA',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'SATA1',
+ 'Internal Connector Type' => 'SAS/SATA Plug Receptacle'
+ },
+ {
+ 'Port Type' => 'SATA',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'SATA2',
+ 'Internal Connector Type' => 'SAS/SATA Plug Receptacle'
+ },
+ {
+ 'Port Type' => 'SATA',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'SATA3',
+ 'Internal Connector Type' => 'SAS/SATA Plug Receptacle'
+ },
+ {
+ 'Port Type' => 'SATA',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'SATA4',
+ 'Internal Connector Type' => 'SAS/SATA Plug Receptacle'
+ },
+ {
+ 'Port Type' => 'SATA',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'SATA5',
+ 'Internal Connector Type' => 'SAS/SATA Plug Receptacle'
+ },
+ {
+ 'Port Type' => 'SATA',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'SATA6',
+ 'Internal Connector Type' => 'SAS/SATA Plug Receptacle'
+ },
+ {
+ 'Port Type' => 'USB',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'USB1_2',
+ 'Internal Connector Type' => 'Access Bus (USB)'
+ },
+ {
+ 'Port Type' => 'USB',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'USB3_4',
+ 'Internal Connector Type' => 'Access Bus (USB)'
+ },
+ {
+ 'Port Type' => 'USB',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'USB5_6',
+ 'Internal Connector Type' => 'Access Bus (USB)'
+ },
+ {
+ 'Port Type' => 'USB',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'USB7_8',
+ 'Internal Connector Type' => 'Access Bus (USB)'
+ },
+ {
+ 'Port Type' => 'Audio Port',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'AAFP',
+ 'Internal Connector Type' => 'Mini Jack (headphones)'
+ },
+ {
+ 'Port Type' => 'Other',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'CPU_FAN',
+ 'Internal Connector Type' => 'Other'
+ },
+ {
+ 'Port Type' => 'Other',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'CHA_FAN1',
+ 'Internal Connector Type' => 'Other'
+ },
+ {
+ 'Port Type' => 'Other',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'PWR_FAN',
+ 'Internal Connector Type' => 'Other'
+ },
+ {
+ 'Port Type' => 'Other',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'PATA_IDE',
+ 'Internal Connector Type' => 'On Board IDE'
+ },
+ {
+ 'Port Type' => 'SATA',
+ 'External Connector Type' => 'None',
+ 'Internal Reference Designator' => 'F_ESATA',
+ 'Internal Connector Type' => 'SAS/SATA Plug Receptacle'
+ }
+ ],
+ '4' => [
+ {
+ 'ID' => 'A7 06 02 00 FF FB EB BF',
+ 'Socket Designation' => 'LGA1155',
+ 'Part Number' => 'To Be Filled By O.E.M.',
+ 'Status' => 'Populated, Enabled',
+ 'Max Speed' => '3800 MHz',
+ 'Serial Number' => 'To Be Filled By O.E.M.',
+ 'Family' => 'Core 2 Duo',
+ 'Current Speed' => '2800 MHz',
+ 'L2 Cache Handle' => '0x0006',
+ 'Type' => 'Central Processor',
+ 'Signature' => 'Type 0, Family 6, Model 42, Stepping 7',
+ 'L1 Cache Handle' => '0x0005',
+ 'Manufacturer' => 'Intel',
+ 'Core Enabled' => '1',
+ 'External Clock' => '100 MHz',
+ 'Asset Tag' => 'To Be Filled By O.E.M.',
+ 'Version' => 'Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz',
+ 'Core Count' => '4',
+ 'Upgrade' => 'Other',
+ 'Voltage' => '1.0 V',
+ 'L3 Cache Handle' => '0x0007'
+ }
+ ],
+ '34' => [
+ {
+ 'Type' => 'LM78',
+ 'Address Type' => 'I/O Port',
+ 'Address' => '0x00000000',
+ 'Description' => 'LM78-1'
+ },
+ {
+ 'Type' => 'LM78',
+ 'Address Type' => 'I/O Port',
+ 'Address' => '0x00000000',
+ 'Description' => '2'
+ }
+ ],
+ '10' => [
+ {
+ 'Type' => 'Ethernet',
+ 'Status' => 'Enabled',
+ 'Description' => 'Onboard Ethernet'
+ }
+ ],
+ '19' => [
+ {
+ 'Range Size' => '4 GB',
+ 'Partition Width' => '0',
+ 'Starting Address' => '0x00000000000',
+ 'Physical Array Handle' => '0x0024',
+ 'Ending Address' => '0x000FFFFFFFF'
+ }
+ ]
}
);
@@ -4779,6 +5934,30 @@ my %cpu_tests = (
MANUFACTURER => 'GenuineIntel',
CORE => undef
}
+ ],
+ 'windows-xppro' => [
+ {
+ ID => '76 06 01 00 FF FB EB BF',
+ NAME => 'Core 2 Duo',
+ EXTERNAL_CLOCK => '266',
+ SPEED => '2534',
+ THREAD => '2',
+ SERIAL => undef,
+ MANUFACTURER => 'Intel',
+ CORE => '2'
+ }
+ ],
+ 'windows-7' => [
+ {
+ ID => 'A7 06 02 00 FF FB EB BF',
+ NAME => 'Core 2 Duo',
+ EXTERNAL_CLOCK => '100',
+ SPEED => '2800',
+ THREAD => undef,
+ SERIAL => 'To Be Filled By O.E.M.',
+ MANUFACTURER => 'Intel',
+ CORE => '4'
+ }
]
);
@@ -5009,12 +6188,13 @@ foreach my $test (keys %dmidecode_tests) {
my $file = "resources/generic/dmidecode/$test";
my $infos = getDmidecodeInfos(file => $file);
is_deeply($infos, $dmidecode_tests{$test}, "$test dmidecode parsing");
+ use Data::Dumper;
}
foreach my $test (keys %cpu_tests) {
my $file = "resources/generic/dmidecode/$test";
my @cpus = getCpusFromDmidecode(file => $file);
- is_deeply(\@cpus, $cpu_tests{$test}, "$test dmidecode cpu extraction");
+ is_deeply(\@cpus, $cpu_tests{$test}, "$test dmidecode cpu extraction") or print Dumper(\@cpus);
}
foreach my $test (keys %lspci_tests) {
diff --git a/t/tools/network.t b/t/tools/network.t
index 915d24e..6bb1121 100755
--- a/t/tools/network.t
+++ b/t/tools/network.t
@@ -67,7 +67,7 @@ foreach my $test (@alt2canonical_tests) {
foreach my $test (@mask_tests) {
is(
- getNetworkMask($test->[0], $test->[1]),
+ getNetworkMask($test->[1]),
$test->[2],
"$test->[0]/$test->[1] mask extraction"
);
================================================================
Commit: 3f4cb9525edef111355302aa0b1ded8b4be1c783
https://github.com/fusinv/fusioninventory-agent/commit/3f4cb9525edef111355302aa0b1ded8b4be1c783
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-05 (Mon, 05 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools.pm
Log Message:
-----------
only set a signal handler if needed
diff --git a/lib/FusionInventory/Agent/Tools.pm b/lib/FusionInventory/Agent/Tools.pm
index 0e8e17d..fb2acf2 100644
--- a/lib/FusionInventory/Agent/Tools.pm
+++ b/lib/FusionInventory/Agent/Tools.pm
@@ -442,9 +442,12 @@ sub runFunction {
my $result;
eval {
- # set
- local $SIG{ALRM} = sub { die "alarm\n" };
- alarm $params{timeout} if $params{timeout};
+ # set a timeout if needed
+ if ($params{timeout}) {
+ local $SIG{ALRM} = sub { die "alarm\n" };
+ alarm $params{timeout};
+ }
+
no strict 'refs'; ## no critic
$result = &{$params{module} . '::' . $params{function}}(
ref $params{params} eq 'HASH' ? %{$params{params}} :
================================================================
Commit: 1f5f0fb7775837489773161d1ff042059f603183
https://github.com/fusinv/fusioninventory-agent/commit/1f5f0fb7775837489773161d1ff042059f603183
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-05 (Mon, 05 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
don't access registry directly
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index f69806b..6483daa 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -114,29 +114,12 @@ sub _getScreensFromWindows {
};
}
- my $Registry;
- Win32::TieRegistry->require();
- Win32::TieRegistry->import(
- Delimiter => '/',
- ArrayValues => 0,
- TiedRef => \$Registry
- );
-
- my $access = FusionInventory::Agent::Tools::Win32::is64bit() ?
- Win32::TieRegistry::KEY_READ() |
- FusionInventory::Agent::Tools::Win32::KEY_WOW64_64() :
- Win32::TieRegistry::KEY_READ();
-
foreach my $screen (@screens) {
-
- my $machKey = $Registry->Open('LMachine', {
- Access => $access
- } ) or $logger->fault(
- "Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR"
- );
-
$screen->{edid} =
- $machKey->{"SYSTEM/CurrentControlSet/Enum/$screen->{id}/Device Parameters/EDID"} || '';
+ FusionInventory::Agent::Tools::Win32::getRegistryValue(
+ path => "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/$screen->{id}/Device Parameters/EDID",
+ logger => $logger
+ ) || '';
$screen->{edid} =~ s/^\s+$//;
}
================================================================
Commit: e472cabb9e451f30450610329b11481f36bb3152
https://github.com/fusinv/fusioninventory-agent/commit/e472cabb9e451f30450610329b11481f36bb3152
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-05 (Mon, 05 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
use use() method to import symbols at runtime
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 6483daa..9be6880 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -71,7 +71,7 @@ sub doInventory {
sub _getScreensFromWindows {
my ($logger) = @_;
- FusionInventory::Agent::Tools::Win32->require();
+ FusionInventory::Agent::Tools::Win32->use();
if ($EVAL_ERROR) {
print
"Failed to load FusionInventory::Agent::Tools::Win32: $EVAL_ERROR";
@@ -81,7 +81,7 @@ sub _getScreensFromWindows {
my @screens;
# Vista and upper, able to get the second screen
- foreach my $object (FusionInventory::Agent::Tools::Win32::getWmiObjects(
+ foreach my $object (getWmiObjects(
moniker => 'winmgmts:{impersonationLevel=impersonate,authenticationLevel=Pkt}!//./root/wmi',
class => 'WMIMonitorID',
properties => [ qw/InstanceName/ ]
@@ -95,7 +95,7 @@ sub _getScreensFromWindows {
}
# The generic Win32_DesktopMonitor class, the second screen will be missing
- foreach my $object (FusionInventory::Agent::Tools::Win32::getWmiObjects(
+ foreach my $object (getWmiObjects(
class => 'Win32_DesktopMonitor',
properties => [ qw/
Caption MonitorManufacturer MonitorType PNPDeviceID
@@ -115,13 +115,11 @@ sub _getScreensFromWindows {
}
foreach my $screen (@screens) {
- $screen->{edid} =
- FusionInventory::Agent::Tools::Win32::getRegistryValue(
- path => "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/$screen->{id}/Device Parameters/EDID",
- logger => $logger
+ $screen->{edid} = getRegistryValue(
+ path => "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/$screen->{id}/Device Parameters/EDID",
+ logger => $logger
) || '';
$screen->{edid} =~ s/^\s+$//;
-
}
return @screens;
================================================================
Commit: 8028a335e4527d392ed1fa2f17f2da3c9ac189f9
https://github.com/fusinv/fusioninventory-agent/commit/8028a335e4527d392ed1fa2f17f2da3c9ac189f9
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-05 (Mon, 05 Mar 2012)
Changed paths:
M Changes
Log Message:
-----------
add AIX LVM support, rephrase IP usage on Linux
diff --git a/Changes b/Changes
index a6da7ba..34b6676 100644
--- a/Changes
+++ b/Changes
@@ -56,8 +56,9 @@ Major changes:
Minor changes:
* Add the HARDWARE/CHASSIS_TYPE information
-* Linux: Use /sbin/ip to get the interface IP addresses (#854)
+* Linux: report all IP addresses used by each interfaces (#854)
* HPUX: don't report unoccupied memory slots
+* AIX: add LVM support
2.1.14 Wed, 22 Feb 2012 14:56:51 -0000
================================================================
Commit: 78b59781573380bc4d4f9af7e0facdd7366ceb8e
https://github.com/fusinv/fusioninventory-agent/commit/78b59781573380bc4d4f9af7e0facdd7366ceb8e
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-05 (Mon, 05 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools.pm
Log Message:
-----------
make signal handler conditional only
Using a conditional block actually makes the handler local to
conditional scope
diff --git a/lib/FusionInventory/Agent/Tools.pm b/lib/FusionInventory/Agent/Tools.pm
index fb2acf2..bc61bbf 100644
--- a/lib/FusionInventory/Agent/Tools.pm
+++ b/lib/FusionInventory/Agent/Tools.pm
@@ -443,10 +443,8 @@ sub runFunction {
my $result;
eval {
# set a timeout if needed
- if ($params{timeout}) {
- local $SIG{ALRM} = sub { die "alarm\n" };
- alarm $params{timeout};
- }
+ local $SIG{ALRM} = sub { die "alarm\n" } if $params{timeout};
+ alarm $params{timeout};
no strict 'refs'; ## no critic
$result = &{$params{module} . '::' . $params{function}}(
================================================================
Commit: 6a903a71fb5885e2ed41161f3bfb144576c68925
https://github.com/fusinv/fusioninventory-agent/commit/6a903a71fb5885e2ed41161f3bfb144576c68925
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-05 (Mon, 05 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Screen.pm
Log Message:
-----------
too much work to fix the warnings
diff --git a/lib/FusionInventory/Agent/Tools/Screen.pm b/lib/FusionInventory/Agent/Tools/Screen.pm
index 6c4c320..f2cd98c 100644
--- a/lib/FusionInventory/Agent/Tools/Screen.pm
+++ b/lib/FusionInventory/Agent/Tools/Screen.pm
@@ -207,6 +207,8 @@ sub checkParsedEdid {
sub parseEdid {
my ($raw_edid) = @_;
+ no warnings 'uninitialized';
+
my %edid;
my @vals = unpack(join('', map { $_->[0] } @edid_info), $raw_edid);
my $i;
================================================================
Commit: 7ff6fb8a23e74251cef36d9e7bd366f5b72c6270
https://github.com/fusinv/fusioninventory-agent/commit/7ff6fb8a23e74251cef36d9e7bd366f5b72c6270
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-05 (Mon, 05 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
drop limitation
as long as it can be parsed, there is no use to restrict input
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 9be6880..e9771cb 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -134,10 +134,9 @@ sub _getScreensFromUnix {
if (!$raw_edid) {
foreach (1..5) { # Sometime get-edid return an empty string...
$raw_edid = getFirstLine(command => 'get-edid');
- last if $raw_edid && (length($raw_edid) == 128 || length($raw_edid) == 256);
+ last if $raw_edid;
}
}
- return unless length($raw_edid) == 128 || length($raw_edid) == 256;
return ( { edid => $raw_edid } );
}
================================================================
Commit: 25b8360c6d15f5666aa192b3f01079ac7a63fc8d
https://github.com/fusinv/fusioninventory-agent/commit/25b8360c6d15f5666aa192b3f01079ac7a63fc8d
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-05 (Mon, 05 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
simpler variable name
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index e9771cb..301031b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -127,18 +127,18 @@ sub _getScreensFromWindows {
sub _getScreensFromUnix {
- my $raw_edid =
+ my $edid =
getFirstLine(command => 'monitor-get-edid-using-vbe') ||
getFirstLine(command => 'monitor-get-edid');
- if (!$raw_edid) {
+ if (!$edid) {
foreach (1..5) { # Sometime get-edid return an empty string...
- $raw_edid = getFirstLine(command => 'get-edid');
- last if $raw_edid;
+ $edid = getFirstLine(command => 'get-edid');
+ last if $edid;
}
}
- return ( { edid => $raw_edid } );
+ return ( { edid => $edid } );
}
sub _getScreens {
================================================================
Commit: 5a7179a71be87a07b15e2caf88d5b15e639328c2
https://github.com/fusinv/fusioninventory-agent/commit/5a7179a71be87a07b15e2caf88d5b15e639328c2
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-05 (Mon, 05 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
drop raw edid after usage
There was an error trying to read the diff from github.com (execution expired)
================================================================
Commit: 76cf105aacd2f5dfa7cb712951ad6a4ccae19267
https://github.com/fusinv/fusioninventory-agent/commit/76cf105aacd2f5dfa7cb712951ad6a4ccae19267
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-05 (Mon, 05 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
use uppercase for final attributes
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 3a71179..04c839c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -110,10 +110,10 @@ sub _getScreensFromWindows {
push @screens, {
id => $object->{PNPDeviceID},
- name => $object->{Caption},
- type => $object->{MonitorType},
- manufacturer => $object->{MonitorManufacturer},
- caption => $object->{Caption}
+ NAME => $object->{Caption},
+ TYPE => $object->{MonitorType},
+ MANUFACTURER => $object->{MonitorManufacturer},
+ CAPTION => $object->{Caption}
};
}
================================================================
Commit: 1adcc3b02c194292568acfcb88d3258ba9b6adaf
https://github.com/fusinv/fusioninventory-agent/commit/1adcc3b02c194292568acfcb88d3258ba9b6adaf
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-05 (Mon, 05 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
drop temporary attributes after usage
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 04c839c..903297d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -60,7 +60,6 @@ sub doInventory {
}
$screen->{BASE64} = encode_base64($screen->{edid});
- # drop temporary variable
delete $screen->{edid};
}
@@ -118,11 +117,13 @@ sub _getScreensFromWindows {
}
foreach my $screen (@screens) {
+ next unless $screen->{id};
$screen->{edid} = getRegistryValue(
path => "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/$screen->{id}/Device Parameters/EDID",
logger => $logger
) || '';
$screen->{edid} =~ s/^\s+$//;
+ delete $screen->{id};
}
return @screens;
================================================================
Commit: 39327a69d99495e0c6f98e6b9080dd78b4d469f7
https://github.com/fusinv/fusioninventory-agent/commit/39327a69d99495e0c6f98e6b9080dd78b4d469f7
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-05 (Mon, 05 Mar 2012)
Changed paths:
M README
Log Message:
-----------
Merge remote-tracking branch 'forge/2.2.x' into 2.2.x
diff --git a/README b/README
index de519d3..893398d 100644
--- a/README
+++ b/README
@@ -61,6 +61,12 @@ System-specific informations
On Solaris/SPARC, you must install sneep and record the Serial Number with it.
Download it from http://www.sun.com/download/products.xml?id=4304155a.
+The Windows installer will run the agent with the SYSTEM account. If you use
+an user GPO to configure the printer, the information will hidden and so not
+collected.
+To avoid this situation, you can turn off the server, and run the agent with
+user privilege, for example during the login.
+
On Windows, if you don't want to use the installer for Windows you can follow
the installation process avalailable from
http://forge.fusioninventory.org/projects/fusioninventory-agent/wiki/RunAgentWin32.
================================================================
Commit: dc6ecfea608b9f44b5c4d9d11230b3d270d36e93
https://github.com/fusinv/fusioninventory-agent/commit/dc6ecfea608b9f44b5c4d9d11230b3d270d36e93
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-06 (Tue, 06 Mar 2012)
Changed paths:
A resources/virtualization/vboxmanage/sample2
M t/inventory/virtualization/virtualbox.t
Log Message:
-----------
add a second sample
diff --git a/resources/virtualization/vboxmanage/sample2 b/resources/virtualization/vboxmanage/sample2
new file mode 100644
index 0000000..c17bc54
--- /dev/null
+++ b/resources/virtualization/vboxmanage/sample2
@@ -0,0 +1,877 @@
+Name: FreeBSD8 i386
+Guest OS: FreeBSD
+UUID: d1857d13-a67f-4ba9-a3e6-101e42f59268
+Config file: /home/ddurieux/.VirtualBox/Machines/FreeBSD8 i386/FreeBSD8 i386.xml
+Hardware UUID: d1857d13-a67f-4ba9-a3e6-101e42f59268
+Memory size: 512MB
+Page Fusion: off
+VRAM size: 7MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: on
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: running (since 2011-03-13T14:01:14.757000000)
+Monitor count: 1
+3D Acceleration: on
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Name (1): Floppy Controller
+Storage Controller Type (1): I82078
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 1
+Storage Controller Port Count (1): 1
+IDE Controller (0, 0): /Donnees/VirtualBox/freebsd8_amd64.vdi (UUID: 4fa8cc39-3258-43bb-ad83-53fd2a369cca)
+IDE Controller (1, 0): Empty
+Floppy Controller (0, 0): Empty
+NIC 1: MAC: 080027D2B03A, Attachment: Bridged Interface 'em0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: disabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Windows2000 (fusion agent)
+Guest OS: Windows 2000
+UUID: f8d4f838-aaa4-4f9b-b756-f95bc8d9cceb
+Config file: /home/ddurieux/.VirtualBox/Machines/Windows2000 (fusion agent)/Windows2000 (fusion agent).xml
+Hardware UUID: f8d4f838-aaa4-4f9b-b756-f95bc8d9cceb
+Memory size: 512MB
+Page Fusion: off
+VRAM size: 16MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: on
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2011-03-04T15:45:00.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Name (1): Floppy Controller
+Storage Controller Type (1): I82078
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 1
+Storage Controller Port Count (1): 1
+IDE Controller (0, 0): /Donnees/VirtualBox/Windows2000.vdi (UUID: caab3ce1-18ff-4de3-a69d-e5436fbcf208)
+IDE Controller (1, 0): Empty
+Floppy Controller (0, 0): Empty
+NIC 1: MAC: 0800274249D6, Attachment: Bridged Interface 'em0', Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: disabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Centos
+Guest OS: Other Linux
+UUID: 2cbb51b4-503c-4b5e-a6a5-878851a04658
+Config file: /home/ddurieux/.VirtualBox/Machines/Centos/Centos.xml
+Hardware UUID: 2cbb51b4-503c-4b5e-a6a5-878851a04658
+Memory size: 776MB
+Page Fusion: off
+VRAM size: 12MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: on
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-10-27T18:35:57.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Name (1): Floppy Controller
+Storage Controller Type (1): I82078
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 1
+Storage Controller Port Count (1): 1
+IDE Controller (1, 0): Empty
+Floppy Controller (0, 0): Empty
+NIC 1: MAC: 080027433DD8, Attachment: Bridged Interface 're0', Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: disabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: windows 7 RU
+Guest OS: Windows 7
+UUID: c404fff7-67bf-4b9c-95cc-19c6b27bcd5f
+Config file: /home/ddurieux/.VirtualBox/Machines/windows 7 RU/windows 7 RU.xml
+Hardware UUID: c404fff7-67bf-4b9c-95cc-19c6b27bcd5f
+Memory size: 512MB
+Page Fusion: off
+VRAM size: 16MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: on
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2011-03-10T23:59:30.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Name (1): SATA Controller
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+IDE Controller (1, 0): /usr/local/lib/virtualbox/additions/VBoxGuestAdditions.iso (UUID: 4a07bd49-5a93-451e-a1ee-79e733e415b8)
+SATA Controller (0, 0): /Donnees/VirtualBox/windows7.vdi (UUID: 7c53566d-688d-45bf-ad8e-9ca30e9780b1)
+NIC 1: MAC: 080027FDBC2F, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0
+NIC 1 Settings: MTU: 0, Socket( send: 64, receive: 64), TCP Window( send:64, receive: 64)
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: disabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Windows XP
+Guest OS: Windows XP
+UUID: 3fd80a8f-ed78-4421-9192-c0af6f5f66d5
+Config file: /home/ddurieux/.VirtualBox/Machines/Windows XP/Windows XP.xml
+Hardware UUID: 3fd80a8f-ed78-4421-9192-c0af6f5f66d5
+Memory size: 512MB
+Page Fusion: off
+VRAM size: 16MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: on
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: running (since 2011-03-13T14:00:58.778000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+IDE Controller (0, 0): /home/ddurieux/.VirtualBox/Machines/Windows XP/Snapshots/{b04c6003-0921-4fac-a3c0-e4082146b17a}.vdi (UUID: b04c6003-0921-4fac-a3c0-e4082146b17a)
+IDE Controller (1, 0): /usr/local/lib/virtualbox/additions/VBoxGuestAdditions.iso (UUID: 4a07bd49-5a93-451e-a1ee-79e733e415b8)
+NIC 1: MAC: 080027B70ED3, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0
+NIC 1 Settings: MTU: 0, Socket( send: 64, receive: 64), TCP Window( send:64, receive: 64)
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: disabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+Snapshots:
+
+ Name: Finished install (UUID: a434889c-08c8-4ff6-8730-e3751224c03e) *
+
+Name: windowsxp01
+Guest OS: Windows XP
+UUID: c7608d9d-c76c-4dab-8411-2784deb4eb1f
+Config file: /home/ddurieux/.VirtualBox/Machines/windowsxp01/windowsxp01.xml
+Hardware UUID: c7608d9d-c76c-4dab-8411-2784deb4eb1f
+Memory size: 256MB
+Page Fusion: off
+VRAM size: 16MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: off
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-07-20T17:53:58.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+IDE Controller (0, 0): /Donnees/VirtualBox/windowsxp01.vdi (UUID: c5c76d6c-c76f-427e-98ef-3ead16eba7dd)
+IDE Controller (1, 0): Empty
+NIC 1: MAC: 0800277C5FA2, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0
+NIC 1 Settings: MTU: 0, Socket( send: 64, receive: 64), TCP Window( send:64, receive: 64)
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: disabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: windowsxp02
+Guest OS: Windows XP
+UUID: cd033191-26c3-49c9-afee-1e3affc933ee
+Config file: /home/ddurieux/.VirtualBox/Machines/windowsxp02/windowsxp02.xml
+Hardware UUID: cd033191-26c3-49c9-afee-1e3affc933ee
+Memory size: 256MB
+Page Fusion: off
+VRAM size: 16MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: off
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-07-22T19:20:25.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+IDE Controller (0, 0): /Donnees/VirtualBox/windowsxp01.vmdk (UUID: 7a77f89e-90fb-4986-abfc-535358c0622c)
+IDE Controller (1, 0): Empty
+NIC 1: MAC: 0800277C5FA2, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0
+NIC 1 Settings: MTU: 0, Socket( send: 64, receive: 64), TCP Window( send:64, receive: 64)
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: disabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: debian10023
+Guest OS: Debian
+UUID: ec43b1fc-0efc-487f-8188-a104473db0d5
+Config file: /home/ddurieux/.VirtualBox/Machines/debian10023/debian10023.xml
+Hardware UUID: ec43b1fc-0efc-487f-8188-a104473db0d5
+Memory size: 200MB
+Page Fusion: off
+VRAM size: 12MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: on
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-10-27T18:35:07.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Name (1): SATA Controller
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+IDE Controller (1, 0): Empty
+SATA Controller (0, 0): /Donnees/VirtualBox/debian10023.vdi (UUID: 37a9d597-745f-4bc9-b597-8ad1465e8f39)
+NIC 1: MAC: 080027E9D6D5, Attachment: Bridged Interface 're0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: enabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: debian10024
+Guest OS: Debian
+UUID: d410a9a0-0b31-4bad-9a51-80ab37701d1d
+Config file: /home/ddurieux/.VirtualBox/Machines/debian10024/debian10024.xml
+Hardware UUID: d410a9a0-0b31-4bad-9a51-80ab37701d1d
+Memory size: 200MB
+Page Fusion: off
+VRAM size: 12MB
+HPET: off
+Number of CPUs: 2
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: on
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-10-11T07:01:24.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Name (1): SATA Controller
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+IDE Controller (1, 0): Empty
+SATA Controller (0, 0): /Donnees/VirtualBox/debian10024.vdi (UUID: 253a1a78-4fe9-4f48-a0b2-fa19cc112863)
+NIC 1: MAC: 080027CE41F7, Attachment: Bridged Interface 're0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: enabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: MacOSX 10.6
+Guest OS: Mac OS X Server
+UUID: 85b780f6-b3fd-44d3-bb94-d8583cd78770
+Config file: /home/ddurieux/.VirtualBox/Machines/MacOSX 10.6/MacOSX 10.6.xml
+Hardware UUID: 85b780f6-b3fd-44d3-bb94-d8583cd78770
+Memory size: 1024MB
+Page Fusion: off
+VRAM size: 7MB
+HPET: on
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: on
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-10-26T14:49:21.000000000)
+Monitor count: 1
+3D Acceleration: on
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): ICH6
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+IDE Controller (1, 0): Empty
+NIC 1: MAC: 080027D314A0, Attachment: Bridged Interface 'alc0', Cable connected: on, Trace: off (file: none), Type: 82543GC, Reported speed: 0 Mbps, Boot priority: 0
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: USB Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: enabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: windows xp RU
+Guest OS: Windows XP
+UUID: fbc00535-0e8d-4955-8026-2bd50bf606e9
+Config file: /home/ddurieux/.VirtualBox/Machines/windows xp RU/windows xp RU.xml
+Hardware UUID: fbc00535-0e8d-4955-8026-2bd50bf606e9
+Memory size: 306MB
+Page Fusion: off
+VRAM size: 16MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: on
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-10-27T18:41:39.000000000)
+Monitor count: 1
+3D Acceleration: on
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+IDE Controller (0, 0): /Donnees/VirtualBox/windows xp RU.vdi (UUID: cd51263a-8ce3-4f3d-95f1-e0664463b50c)
+IDE Controller (1, 0): /Donnees/Temp/torrent/winxphomeoemrus.iso (UUID: 41e46fe2-5a37-41a0-9c27-1f99344455e4)
+NIC 1: MAC: 080027D338FD, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0
+NIC 1 Settings: MTU: 0, Socket( send: 64, receive: 64), TCP Window( send:64, receive: 64)
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: disabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Mandriva
+Guest OS: Mandriva
+UUID: c43f39f2-a970-40a0-9435-7b09b218efdf
+Config file: /home/ddurieux/.VirtualBox/Machines/Mandriva/Mandriva.xml
+Hardware UUID: c43f39f2-a970-40a0-9435-7b09b218efdf
+Memory size: 512MB
+Page Fusion: off
+VRAM size: 12MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: off
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-10-27T18:37:31.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Name (1): SATA Controller
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+IDE Controller (1, 0): Empty
+SATA Controller (0, 0): /Donnees/VirtualBox/Mandriva.vdi (UUID: 101029c3-3e6a-4f16-86e6-47fbf82ba37c)
+NIC 1: MAC: 0800278A0380, Attachment: Bridged Interface 're0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: enabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Macos
+Guest OS: Mac OS X Server
+UUID: d1fe6cfa-80c6-41ae-9f4b-2a15dbafcf2c
+Config file: /home/ddurieux/.VirtualBox/Machines/Macos/Macos.xml
+Hardware UUID: d1fe6cfa-80c6-41ae-9f4b-2a15dbafcf2c
+Memory size: 1365MB
+Page Fusion: off
+VRAM size: 18MB
+HPET: on
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: on
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-10-26T15:37:41.000000000)
+Monitor count: 1
+3D Acceleration: on
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): ICH6
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+IDE Controller (0, 0): /home/ddurieux/.VirtualBox/HardDisks/macosx.vdi (UUID: a9f2b31c-c4e6-4899-ad42-b03245c54f88)
+IDE Controller (1, 0): /Donnees/Temp/macos/MacOSX_Server_1047_InstallDVD.iso (UUID: c4d1f35c-585d-413c-9b59-f93efe1008e3)
+NIC 1: MAC: 0800270039B8, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: 82543GC, Reported speed: 0 Mbps, Boot priority: 0
+NIC 1 Settings: MTU: 0, Socket( send: 64, receive: 64), TCP Window( send:64, receive: 64)
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: USB Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: SB16)
+Clipboard Mode: Bidirectional
+USB: enabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
diff --git a/t/inventory/virtualization/virtualbox.t b/t/inventory/virtualization/virtualbox.t
index 94be3ca..8a77466 100755
--- a/t/inventory/virtualization/virtualbox.t
+++ b/t/inventory/virtualization/virtualbox.t
@@ -90,6 +90,125 @@ my %tests = (
UUID => '4ddac902-a4f6-4ccb-a1a4-73dd6c90c1b2',
VCPU => 1
}
+ ],
+ sample2 => [
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'FreeBSD8 i386',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'running',
+ MEMORY => '512MB',
+ UUID => 'd1857d13-a67f-4ba9-a3e6-101e42f59268',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Windows2000 (fusion agent)',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '512MB',
+ UUID => 'f8d4f838-aaa4-4f9b-b756-f95bc8d9cceb',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Centos',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '776MB',
+ UUID => '2cbb51b4-503c-4b5e-a6a5-878851a04658',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'windows 7 RU',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '512MB',
+ UUID => 'c404fff7-67bf-4b9c-95cc-19c6b27bcd5f',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Windows XP',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'running',
+ MEMORY => '512MB',
+ UUID => '3fd80a8f-ed78-4421-9192-c0af6f5f66d5',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'windowsxp01',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '256MB',
+ UUID => 'c7608d9d-c76c-4dab-8411-2784deb4eb1f',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'windowsxp02',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '256MB',
+ UUID => 'cd033191-26c3-49c9-afee-1e3affc933ee',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'debian10023',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '200MB',
+ UUID => 'ec43b1fc-0efc-487f-8188-a104473db0d5',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'debian10024',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '200MB',
+ UUID => 'd410a9a0-0b31-4bad-9a51-80ab37701d1d',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'MacOSX 10.6',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '1024MB',
+ UUID => '85b780f6-b3fd-44d3-bb94-d8583cd78770',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'windows xp RU',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '306MB',
+ UUID => 'fbc00535-0e8d-4955-8026-2bd50bf606e9',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Mandriva',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '512MB',
+ UUID => 'c43f39f2-a970-40a0-9435-7b09b218efdf',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Macos',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '1365MB',
+ UUID => 'd1fe6cfa-80c6-41ae-9f4b-2a15dbafcf2c',
+ VCPU => 1
+ }
]
);
================================================================
Commit: b482af72ead2c38690b4ee67af8a1cd52e6231c1
https://github.com/fusinv/fusioninventory-agent/commit/b482af72ead2c38690b4ee67af8a1cd52e6231c1
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-06 (Tue, 06 Mar 2012)
Changed paths:
A resources/virtualization/README
Log Message:
-----------
initial import
diff --git a/resources/virtualization/README b/resources/virtualization/README
new file mode 100644
index 0000000..857bdef
--- /dev/null
+++ b/resources/virtualization/README
@@ -0,0 +1,4 @@
+virtualization-related commands output
+
+vboxmanage: VBoxManage command output
+- sample?: VBoxManage -nologo list--long vms
================================================================
Commit: 87791f2779448dfa995c611431e46ba9c8953826
https://github.com/fusinv/fusioninventory-agent/commit/87791f2779448dfa995c611431e46ba9c8953826
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-06 (Tue, 06 Mar 2012)
Changed paths:
M Changes
M lib/FusionInventory/Agent/Task/Inventory.pm
Log Message:
-----------
use .xml extension for local inventory file name (close #211)
diff --git a/Changes b/Changes
index 34b6676..77137bc 100644
--- a/Changes
+++ b/Changes
@@ -56,6 +56,7 @@ Major changes:
Minor changes:
* Add the HARDWARE/CHASSIS_TYPE information
+* local inventory file name now has .xml extension (#211)
* Linux: report all IP addresses used by each interfaces (#854)
* HPUX: don't report unoccupied memory slots
* AIX: add LVM support
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index 9c9aac7..a0b3e1a 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -82,7 +82,7 @@ sub run {
} elsif ($self->{target}->isa('FusionInventory::Agent::Target::Local')) {
my $format = $self->{target}->{format};
- my $extension = $format eq 'xml' ? '.ocs' : '.html';
+ my $extension = $format eq 'xml' ? '.xml' : '.html';
my $file =
$self->{config}->{local} .
"/" .
================================================================
Commit: 188300110d50ac5fbda5e1b72473909119fbfff4
https://github.com/fusinv/fusioninventory-agent/commit/188300110d50ac5fbda5e1b72473909119fbfff4
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-07 (Wed, 07 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Sound.pm
Log Message:
-----------
MacOSX: Error in sound inventory
closes: #1506
Reported-by: Walid Nouh <walid.nouh at gmail.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Sound.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Sound.pm
index faa4285..dd9ae96 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Sound.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Sound.pm
@@ -22,7 +22,7 @@ sub doInventory {
# add sound cards
foreach my $x (keys %$info){
- $inventory->addSound({
+ $inventory->addEntry({
section => 'SOUNDS',
entry => {
NAME => $x,
================================================================
Commit: e1d13de827df9433aec562c88d26ca11db62dbd1
https://github.com/fusinv/fusioninventory-agent/commit/e1d13de827df9433aec562c88d26ca11db62dbd1
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-07 (Wed, 07 Mar 2012)
Changed paths:
M Changes
M lib/FusionInventory/Agent/Task/Inventory.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
M lib/FusionInventory/Agent/Tools.pm
M lib/FusionInventory/Agent/Tools/Screen.pm
A resources/virtualization/README
A resources/virtualization/vboxmanage/sample2
M t/inventory/virtualization/virtualbox.t
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/Changes b/Changes
index a6da7ba..77137bc 100644
--- a/Changes
+++ b/Changes
@@ -56,8 +56,10 @@ Major changes:
Minor changes:
* Add the HARDWARE/CHASSIS_TYPE information
-* Linux: Use /sbin/ip to get the interface IP addresses (#854)
+* local inventory file name now has .xml extension (#211)
+* Linux: report all IP addresses used by each interfaces (#854)
* HPUX: don't report unoccupied memory slots
+* AIX: add LVM support
2.1.14 Wed, 22 Feb 2012 14:56:51 -0000
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index 9c9aac7..a0b3e1a 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -82,7 +82,7 @@ sub run {
} elsif ($self->{target}->isa('FusionInventory::Agent::Target::Local')) {
my $format = $self->{target}->{format};
- my $extension = $format eq 'xml' ? '.ocs' : '.html';
+ my $extension = $format eq 'xml' ? '.xml' : '.html';
my $file =
$self->{config}->{local} .
"/" .
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index f69806b..903297d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -59,6 +59,8 @@ sub doInventory {
$screen->{SERIAL} = $edid->{serial_number2}->[0];
}
$screen->{BASE64} = encode_base64($screen->{edid});
+
+ delete $screen->{edid};
}
$inventory->addEntry(
@@ -71,7 +73,7 @@ sub doInventory {
sub _getScreensFromWindows {
my ($logger) = @_;
- FusionInventory::Agent::Tools::Win32->require();
+ FusionInventory::Agent::Tools::Win32->use();
if ($EVAL_ERROR) {
print
"Failed to load FusionInventory::Agent::Tools::Win32: $EVAL_ERROR";
@@ -81,7 +83,7 @@ sub _getScreensFromWindows {
my @screens;
# Vista and upper, able to get the second screen
- foreach my $object (FusionInventory::Agent::Tools::Win32::getWmiObjects(
+ foreach my $object (getWmiObjects(
moniker => 'winmgmts:{impersonationLevel=impersonate,authenticationLevel=Pkt}!//./root/wmi',
class => 'WMIMonitorID',
properties => [ qw/InstanceName/ ]
@@ -95,7 +97,7 @@ sub _getScreensFromWindows {
}
# The generic Win32_DesktopMonitor class, the second screen will be missing
- foreach my $object (FusionInventory::Agent::Tools::Win32::getWmiObjects(
+ foreach my $object (getWmiObjects(
class => 'Win32_DesktopMonitor',
properties => [ qw/
Caption MonitorManufacturer MonitorType PNPDeviceID
@@ -107,38 +109,21 @@ sub _getScreensFromWindows {
push @screens, {
id => $object->{PNPDeviceID},
- name => $object->{Caption},
- type => $object->{MonitorType},
- manufacturer => $object->{MonitorManufacturer},
- caption => $object->{Caption}
+ NAME => $object->{Caption},
+ TYPE => $object->{MonitorType},
+ MANUFACTURER => $object->{MonitorManufacturer},
+ CAPTION => $object->{Caption}
};
}
- my $Registry;
- Win32::TieRegistry->require();
- Win32::TieRegistry->import(
- Delimiter => '/',
- ArrayValues => 0,
- TiedRef => \$Registry
- );
-
- my $access = FusionInventory::Agent::Tools::Win32::is64bit() ?
- Win32::TieRegistry::KEY_READ() |
- FusionInventory::Agent::Tools::Win32::KEY_WOW64_64() :
- Win32::TieRegistry::KEY_READ();
-
foreach my $screen (@screens) {
-
- my $machKey = $Registry->Open('LMachine', {
- Access => $access
- } ) or $logger->fault(
- "Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR"
- );
-
- $screen->{edid} =
- $machKey->{"SYSTEM/CurrentControlSet/Enum/$screen->{id}/Device Parameters/EDID"} || '';
+ next unless $screen->{id};
+ $screen->{edid} = getRegistryValue(
+ path => "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/$screen->{id}/Device Parameters/EDID",
+ logger => $logger
+ ) || '';
$screen->{edid} =~ s/^\s+$//;
-
+ delete $screen->{id};
}
return @screens;
@@ -146,19 +131,18 @@ sub _getScreensFromWindows {
sub _getScreensFromUnix {
- my $raw_edid =
+ my $edid =
getFirstLine(command => 'monitor-get-edid-using-vbe') ||
getFirstLine(command => 'monitor-get-edid');
- if (!$raw_edid) {
+ if (!$edid) {
foreach (1..5) { # Sometime get-edid return an empty string...
- $raw_edid = getFirstLine(command => 'get-edid');
- last if $raw_edid && (length($raw_edid) == 128 || length($raw_edid) == 256);
+ $edid = getFirstLine(command => 'get-edid');
+ last if $edid;
}
}
- return unless length($raw_edid) == 128 || length($raw_edid) == 256;
- return ( { edid => $raw_edid } );
+ return ( { edid => $edid } );
}
sub _getScreens {
diff --git a/lib/FusionInventory/Agent/Tools.pm b/lib/FusionInventory/Agent/Tools.pm
index 0e8e17d..bc61bbf 100644
--- a/lib/FusionInventory/Agent/Tools.pm
+++ b/lib/FusionInventory/Agent/Tools.pm
@@ -442,9 +442,10 @@ sub runFunction {
my $result;
eval {
- # set
- local $SIG{ALRM} = sub { die "alarm\n" };
- alarm $params{timeout} if $params{timeout};
+ # set a timeout if needed
+ local $SIG{ALRM} = sub { die "alarm\n" } if $params{timeout};
+ alarm $params{timeout};
+
no strict 'refs'; ## no critic
$result = &{$params{module} . '::' . $params{function}}(
ref $params{params} eq 'HASH' ? %{$params{params}} :
diff --git a/lib/FusionInventory/Agent/Tools/Screen.pm b/lib/FusionInventory/Agent/Tools/Screen.pm
index 6c4c320..f2cd98c 100644
--- a/lib/FusionInventory/Agent/Tools/Screen.pm
+++ b/lib/FusionInventory/Agent/Tools/Screen.pm
@@ -207,6 +207,8 @@ sub checkParsedEdid {
sub parseEdid {
my ($raw_edid) = @_;
+ no warnings 'uninitialized';
+
my %edid;
my @vals = unpack(join('', map { $_->[0] } @edid_info), $raw_edid);
my $i;
diff --git a/resources/virtualization/README b/resources/virtualization/README
new file mode 100644
index 0000000..857bdef
--- /dev/null
+++ b/resources/virtualization/README
@@ -0,0 +1,4 @@
+virtualization-related commands output
+
+vboxmanage: VBoxManage command output
+- sample?: VBoxManage -nologo list--long vms
diff --git a/resources/virtualization/vboxmanage/sample2 b/resources/virtualization/vboxmanage/sample2
new file mode 100644
index 0000000..c17bc54
--- /dev/null
+++ b/resources/virtualization/vboxmanage/sample2
@@ -0,0 +1,877 @@
+Name: FreeBSD8 i386
+Guest OS: FreeBSD
+UUID: d1857d13-a67f-4ba9-a3e6-101e42f59268
+Config file: /home/ddurieux/.VirtualBox/Machines/FreeBSD8 i386/FreeBSD8 i386.xml
+Hardware UUID: d1857d13-a67f-4ba9-a3e6-101e42f59268
+Memory size: 512MB
+Page Fusion: off
+VRAM size: 7MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: on
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: running (since 2011-03-13T14:01:14.757000000)
+Monitor count: 1
+3D Acceleration: on
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Name (1): Floppy Controller
+Storage Controller Type (1): I82078
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 1
+Storage Controller Port Count (1): 1
+IDE Controller (0, 0): /Donnees/VirtualBox/freebsd8_amd64.vdi (UUID: 4fa8cc39-3258-43bb-ad83-53fd2a369cca)
+IDE Controller (1, 0): Empty
+Floppy Controller (0, 0): Empty
+NIC 1: MAC: 080027D2B03A, Attachment: Bridged Interface 'em0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: disabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Windows2000 (fusion agent)
+Guest OS: Windows 2000
+UUID: f8d4f838-aaa4-4f9b-b756-f95bc8d9cceb
+Config file: /home/ddurieux/.VirtualBox/Machines/Windows2000 (fusion agent)/Windows2000 (fusion agent).xml
+Hardware UUID: f8d4f838-aaa4-4f9b-b756-f95bc8d9cceb
+Memory size: 512MB
+Page Fusion: off
+VRAM size: 16MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: on
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2011-03-04T15:45:00.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Name (1): Floppy Controller
+Storage Controller Type (1): I82078
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 1
+Storage Controller Port Count (1): 1
+IDE Controller (0, 0): /Donnees/VirtualBox/Windows2000.vdi (UUID: caab3ce1-18ff-4de3-a69d-e5436fbcf208)
+IDE Controller (1, 0): Empty
+Floppy Controller (0, 0): Empty
+NIC 1: MAC: 0800274249D6, Attachment: Bridged Interface 'em0', Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: disabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Centos
+Guest OS: Other Linux
+UUID: 2cbb51b4-503c-4b5e-a6a5-878851a04658
+Config file: /home/ddurieux/.VirtualBox/Machines/Centos/Centos.xml
+Hardware UUID: 2cbb51b4-503c-4b5e-a6a5-878851a04658
+Memory size: 776MB
+Page Fusion: off
+VRAM size: 12MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: on
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-10-27T18:35:57.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Name (1): Floppy Controller
+Storage Controller Type (1): I82078
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 1
+Storage Controller Port Count (1): 1
+IDE Controller (1, 0): Empty
+Floppy Controller (0, 0): Empty
+NIC 1: MAC: 080027433DD8, Attachment: Bridged Interface 're0', Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: disabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: windows 7 RU
+Guest OS: Windows 7
+UUID: c404fff7-67bf-4b9c-95cc-19c6b27bcd5f
+Config file: /home/ddurieux/.VirtualBox/Machines/windows 7 RU/windows 7 RU.xml
+Hardware UUID: c404fff7-67bf-4b9c-95cc-19c6b27bcd5f
+Memory size: 512MB
+Page Fusion: off
+VRAM size: 16MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: on
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2011-03-10T23:59:30.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Name (1): SATA Controller
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+IDE Controller (1, 0): /usr/local/lib/virtualbox/additions/VBoxGuestAdditions.iso (UUID: 4a07bd49-5a93-451e-a1ee-79e733e415b8)
+SATA Controller (0, 0): /Donnees/VirtualBox/windows7.vdi (UUID: 7c53566d-688d-45bf-ad8e-9ca30e9780b1)
+NIC 1: MAC: 080027FDBC2F, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0
+NIC 1 Settings: MTU: 0, Socket( send: 64, receive: 64), TCP Window( send:64, receive: 64)
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: disabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Windows XP
+Guest OS: Windows XP
+UUID: 3fd80a8f-ed78-4421-9192-c0af6f5f66d5
+Config file: /home/ddurieux/.VirtualBox/Machines/Windows XP/Windows XP.xml
+Hardware UUID: 3fd80a8f-ed78-4421-9192-c0af6f5f66d5
+Memory size: 512MB
+Page Fusion: off
+VRAM size: 16MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: on
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: running (since 2011-03-13T14:00:58.778000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+IDE Controller (0, 0): /home/ddurieux/.VirtualBox/Machines/Windows XP/Snapshots/{b04c6003-0921-4fac-a3c0-e4082146b17a}.vdi (UUID: b04c6003-0921-4fac-a3c0-e4082146b17a)
+IDE Controller (1, 0): /usr/local/lib/virtualbox/additions/VBoxGuestAdditions.iso (UUID: 4a07bd49-5a93-451e-a1ee-79e733e415b8)
+NIC 1: MAC: 080027B70ED3, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0
+NIC 1 Settings: MTU: 0, Socket( send: 64, receive: 64), TCP Window( send:64, receive: 64)
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: disabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+Snapshots:
+
+ Name: Finished install (UUID: a434889c-08c8-4ff6-8730-e3751224c03e) *
+
+Name: windowsxp01
+Guest OS: Windows XP
+UUID: c7608d9d-c76c-4dab-8411-2784deb4eb1f
+Config file: /home/ddurieux/.VirtualBox/Machines/windowsxp01/windowsxp01.xml
+Hardware UUID: c7608d9d-c76c-4dab-8411-2784deb4eb1f
+Memory size: 256MB
+Page Fusion: off
+VRAM size: 16MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: off
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-07-20T17:53:58.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+IDE Controller (0, 0): /Donnees/VirtualBox/windowsxp01.vdi (UUID: c5c76d6c-c76f-427e-98ef-3ead16eba7dd)
+IDE Controller (1, 0): Empty
+NIC 1: MAC: 0800277C5FA2, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0
+NIC 1 Settings: MTU: 0, Socket( send: 64, receive: 64), TCP Window( send:64, receive: 64)
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: disabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: windowsxp02
+Guest OS: Windows XP
+UUID: cd033191-26c3-49c9-afee-1e3affc933ee
+Config file: /home/ddurieux/.VirtualBox/Machines/windowsxp02/windowsxp02.xml
+Hardware UUID: cd033191-26c3-49c9-afee-1e3affc933ee
+Memory size: 256MB
+Page Fusion: off
+VRAM size: 16MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: off
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-07-22T19:20:25.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+IDE Controller (0, 0): /Donnees/VirtualBox/windowsxp01.vmdk (UUID: 7a77f89e-90fb-4986-abfc-535358c0622c)
+IDE Controller (1, 0): Empty
+NIC 1: MAC: 0800277C5FA2, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0
+NIC 1 Settings: MTU: 0, Socket( send: 64, receive: 64), TCP Window( send:64, receive: 64)
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: disabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: debian10023
+Guest OS: Debian
+UUID: ec43b1fc-0efc-487f-8188-a104473db0d5
+Config file: /home/ddurieux/.VirtualBox/Machines/debian10023/debian10023.xml
+Hardware UUID: ec43b1fc-0efc-487f-8188-a104473db0d5
+Memory size: 200MB
+Page Fusion: off
+VRAM size: 12MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: on
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-10-27T18:35:07.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Name (1): SATA Controller
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+IDE Controller (1, 0): Empty
+SATA Controller (0, 0): /Donnees/VirtualBox/debian10023.vdi (UUID: 37a9d597-745f-4bc9-b597-8ad1465e8f39)
+NIC 1: MAC: 080027E9D6D5, Attachment: Bridged Interface 're0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: enabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: debian10024
+Guest OS: Debian
+UUID: d410a9a0-0b31-4bad-9a51-80ab37701d1d
+Config file: /home/ddurieux/.VirtualBox/Machines/debian10024/debian10024.xml
+Hardware UUID: d410a9a0-0b31-4bad-9a51-80ab37701d1d
+Memory size: 200MB
+Page Fusion: off
+VRAM size: 12MB
+HPET: off
+Number of CPUs: 2
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: on
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-10-11T07:01:24.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Name (1): SATA Controller
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+IDE Controller (1, 0): Empty
+SATA Controller (0, 0): /Donnees/VirtualBox/debian10024.vdi (UUID: 253a1a78-4fe9-4f48-a0b2-fa19cc112863)
+NIC 1: MAC: 080027CE41F7, Attachment: Bridged Interface 're0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: enabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: MacOSX 10.6
+Guest OS: Mac OS X Server
+UUID: 85b780f6-b3fd-44d3-bb94-d8583cd78770
+Config file: /home/ddurieux/.VirtualBox/Machines/MacOSX 10.6/MacOSX 10.6.xml
+Hardware UUID: 85b780f6-b3fd-44d3-bb94-d8583cd78770
+Memory size: 1024MB
+Page Fusion: off
+VRAM size: 7MB
+HPET: on
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: on
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-10-26T14:49:21.000000000)
+Monitor count: 1
+3D Acceleration: on
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): ICH6
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+IDE Controller (1, 0): Empty
+NIC 1: MAC: 080027D314A0, Attachment: Bridged Interface 'alc0', Cable connected: on, Trace: off (file: none), Type: 82543GC, Reported speed: 0 Mbps, Boot priority: 0
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: USB Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: enabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: windows xp RU
+Guest OS: Windows XP
+UUID: fbc00535-0e8d-4955-8026-2bd50bf606e9
+Config file: /home/ddurieux/.VirtualBox/Machines/windows xp RU/windows xp RU.xml
+Hardware UUID: fbc00535-0e8d-4955-8026-2bd50bf606e9
+Memory size: 306MB
+Page Fusion: off
+VRAM size: 16MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: on
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-10-27T18:41:39.000000000)
+Monitor count: 1
+3D Acceleration: on
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+IDE Controller (0, 0): /Donnees/VirtualBox/windows xp RU.vdi (UUID: cd51263a-8ce3-4f3d-95f1-e0664463b50c)
+IDE Controller (1, 0): /Donnees/Temp/torrent/winxphomeoemrus.iso (UUID: 41e46fe2-5a37-41a0-9c27-1f99344455e4)
+NIC 1: MAC: 080027D338FD, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0
+NIC 1 Settings: MTU: 0, Socket( send: 64, receive: 64), TCP Window( send:64, receive: 64)
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: disabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Mandriva
+Guest OS: Mandriva
+UUID: c43f39f2-a970-40a0-9435-7b09b218efdf
+Config file: /home/ddurieux/.VirtualBox/Machines/Mandriva/Mandriva.xml
+Hardware UUID: c43f39f2-a970-40a0-9435-7b09b218efdf
+Memory size: 512MB
+Page Fusion: off
+VRAM size: 12MB
+HPET: off
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: off
+PAE: off
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-10-27T18:37:31.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Name (1): SATA Controller
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+IDE Controller (1, 0): Empty
+SATA Controller (0, 0): /Donnees/VirtualBox/Mandriva.vdi (UUID: 101029c3-3e6a-4f16-86e6-47fbf82ba37c)
+NIC 1: MAC: 0800278A0380, Attachment: Bridged Interface 're0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: AC97)
+Clipboard Mode: Bidirectional
+USB: enabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Macos
+Guest OS: Mac OS X Server
+UUID: d1fe6cfa-80c6-41ae-9f4b-2a15dbafcf2c
+Config file: /home/ddurieux/.VirtualBox/Machines/Macos/Macos.xml
+Hardware UUID: d1fe6cfa-80c6-41ae-9f4b-2a15dbafcf2c
+Memory size: 1365MB
+Page Fusion: off
+VRAM size: 18MB
+HPET: on
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: on
+Time offset: 0 ms
+RTC: local time
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2010-10-26T15:37:41.000000000)
+Monitor count: 1
+3D Acceleration: on
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): IDE Controller
+Storage Controller Type (0): ICH6
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+IDE Controller (0, 0): /home/ddurieux/.VirtualBox/HardDisks/macosx.vdi (UUID: a9f2b31c-c4e6-4899-ad42-b03245c54f88)
+IDE Controller (1, 0): /Donnees/Temp/macos/MacOSX_Server_1047_InstallDVD.iso (UUID: c4d1f35c-585d-413c-9b59-f93efe1008e3)
+NIC 1: MAC: 0800270039B8, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: 82543GC, Reported speed: 0 Mbps, Boot priority: 0
+NIC 1 Settings: MTU: 0, Socket( send: 64, receive: 64), TCP Window( send:64, receive: 64)
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: USB Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: OSS, Controller: SB16)
+Clipboard Mode: Bidirectional
+USB: enabled
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
diff --git a/t/inventory/virtualization/virtualbox.t b/t/inventory/virtualization/virtualbox.t
index 94be3ca..8a77466 100755
--- a/t/inventory/virtualization/virtualbox.t
+++ b/t/inventory/virtualization/virtualbox.t
@@ -90,6 +90,125 @@ my %tests = (
UUID => '4ddac902-a4f6-4ccb-a1a4-73dd6c90c1b2',
VCPU => 1
}
+ ],
+ sample2 => [
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'FreeBSD8 i386',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'running',
+ MEMORY => '512MB',
+ UUID => 'd1857d13-a67f-4ba9-a3e6-101e42f59268',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Windows2000 (fusion agent)',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '512MB',
+ UUID => 'f8d4f838-aaa4-4f9b-b756-f95bc8d9cceb',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Centos',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '776MB',
+ UUID => '2cbb51b4-503c-4b5e-a6a5-878851a04658',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'windows 7 RU',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '512MB',
+ UUID => 'c404fff7-67bf-4b9c-95cc-19c6b27bcd5f',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Windows XP',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'running',
+ MEMORY => '512MB',
+ UUID => '3fd80a8f-ed78-4421-9192-c0af6f5f66d5',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'windowsxp01',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '256MB',
+ UUID => 'c7608d9d-c76c-4dab-8411-2784deb4eb1f',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'windowsxp02',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '256MB',
+ UUID => 'cd033191-26c3-49c9-afee-1e3affc933ee',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'debian10023',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '200MB',
+ UUID => 'ec43b1fc-0efc-487f-8188-a104473db0d5',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'debian10024',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '200MB',
+ UUID => 'd410a9a0-0b31-4bad-9a51-80ab37701d1d',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'MacOSX 10.6',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '1024MB',
+ UUID => '85b780f6-b3fd-44d3-bb94-d8583cd78770',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'windows xp RU',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '306MB',
+ UUID => 'fbc00535-0e8d-4955-8026-2bd50bf606e9',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Mandriva',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '512MB',
+ UUID => 'c43f39f2-a970-40a0-9435-7b09b218efdf',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Macos',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '1365MB',
+ UUID => 'd1fe6cfa-80c6-41ae-9f4b-2a15dbafcf2c',
+ VCPU => 1
+ }
]
);
================================================================
Commit: 2683a30eb77bda205ad4344b4f15f8539acfd3d2
https://github.com/fusinv/fusioninventory-agent/commit/2683a30eb77bda205ad4344b4f15f8539acfd3d2
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-07 (Wed, 07 Mar 2012)
Changed paths:
A resources/win32/wmi/2003-Win32_PhysicalMemoryArray.wmi
A resources/win32/wmi/2003SP2-Win32_PhysicalMemoryArray.wmi
A resources/win32/wmi/xp-Win32_PhysicalMemoryArray.wmi
M t/inventory/windows/memory.t
Log Message:
-----------
add three new samples
diff --git a/resources/win32/wmi/2003-Win32_PhysicalMemoryArray.wmi b/resources/win32/wmi/2003-Win32_PhysicalMemoryArray.wmi
new file mode 100644
index 0000000..7d3559a
Binary files /dev/null and b/resources/win32/wmi/2003-Win32_PhysicalMemoryArray.wmi differ
diff --git a/resources/win32/wmi/2003SP2-Win32_PhysicalMemoryArray.wmi b/resources/win32/wmi/2003SP2-Win32_PhysicalMemoryArray.wmi
new file mode 100644
index 0000000..acfaaeb
Binary files /dev/null and b/resources/win32/wmi/2003SP2-Win32_PhysicalMemoryArray.wmi differ
diff --git a/resources/win32/wmi/xp-Win32_PhysicalMemoryArray.wmi b/resources/win32/wmi/xp-Win32_PhysicalMemoryArray.wmi
new file mode 100644
index 0000000..6992ffe
Binary files /dev/null and b/resources/win32/wmi/xp-Win32_PhysicalMemoryArray.wmi differ
diff --git a/t/inventory/windows/memory.t b/t/inventory/windows/memory.t
index 3ff1983..c538344 100755
--- a/t/inventory/windows/memory.t
+++ b/t/inventory/windows/memory.t
@@ -42,6 +42,67 @@ my %tests = (
DESCRIPTION => "Mémoire physique",
CAPACITY => '2048'
}
+ ],
+ 'xp' => [
+ {
+ NUMSLOTS => 0,
+ FORMFACTOR => 'DIMM',
+ SERIALNUMBER => undef,
+ TYPE => 'Unknown',
+ SPEED => '800',
+ CAPTION => 'Physical Memory',
+ REMOVABLE => 0,
+ DESCRIPTION => 'Physical Memory',
+ CAPACITY => '2048'
+ },
+ {
+ NUMSLOTS => 1,
+ FORMFACTOR => 'DIMM',
+ SERIALNUMBER => undef,
+ TYPE => 'Unknown',
+ SPEED => '800',
+ CAPTION => 'Physical Memory',
+ REMOVABLE => 0,
+ DESCRIPTION => 'Physical Memory',
+ CAPACITY => '2048'
+ }
+ ],
+ '2003' => [
+ {
+ NUMSLOTS => 0,
+ FORMFACTOR => 'DIMM',
+ SERIALNUMBER => undef,
+ TYPE => 'Unknown',
+ SPEED => '266',
+ CAPTION => 'Physical Memory',
+ REMOVABLE => 0,
+ DESCRIPTION => 'Physical Memory',
+ CAPACITY => '1024'
+ },
+ {
+ NUMSLOTS => 1,
+ FORMFACTOR => 'DIMM',
+ SERIALNUMBER => undef,
+ TYPE => 'Unknown',
+ SPEED => '266',
+ CAPTION => 'Physical Memory',
+ REMOVABLE => 0,
+ DESCRIPTION => 'Physical Memory',
+ CAPACITY => '1024'
+ }
+ ],
+ '2003SP2' => [
+ {
+ NUMSLOTS => 0,
+ FORMFACTOR => 'DIMM',
+ SERIALNUMBER => undef,
+ TYPE => 'DRAM',
+ SPEED => undef,
+ CAPTION => 'Physical Memory',
+ REMOVABLE => 0,
+ DESCRIPTION => 'Physical Memory',
+ CAPACITY => '1024'
+ }
]
);
================================================================
Commit: 64dccad34551992ad6af6c331a0f2735545030ce
https://github.com/fusinv/fusioninventory-agent/commit/64dccad34551992ad6af6c331a0f2735545030ce
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-07 (Wed, 07 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Bios.pm
Log Message:
-----------
add missing import statement (close #1505)
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Bios.pm
index b0b6c07..d3ece23 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Bios.pm
@@ -4,6 +4,7 @@ use strict;
use warnings;
use FusionInventory::Agent::Tools;
+use FusionInventory::Agent::Tools::MacOS;
sub isEnabled {
return
================================================================
Commit: db3254890e165db99d8ae971e1013c4aacb91f2d
https://github.com/fusinv/fusioninventory-agent/commit/db3254890e165db99d8ae971e1013c4aacb91f2d
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-07 (Wed, 07 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Sound.pm
Log Message:
-----------
Merge remote-tracking branch 'forge/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Sound.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Sound.pm
index faa4285..dd9ae96 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Sound.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Sound.pm
@@ -22,7 +22,7 @@ sub doInventory {
# add sound cards
foreach my $x (keys %$info){
- $inventory->addSound({
+ $inventory->addEntry({
section => 'SOUNDS',
entry => {
NAME => $x,
================================================================
Commit: 1d1f3cbc63d3be1f2f06c735adf89fedab80560b
https://github.com/fusinv/fusioninventory-agent/commit/1d1f3cbc63d3be1f2f06c735adf89fedab80560b
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-07 (Wed, 07 Mar 2012)
Changed paths:
M Makefile.PL
Log Message:
-----------
add auto-install support
diff --git a/Makefile.PL b/Makefile.PL
index baf80b9..b27ed31 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -59,6 +59,10 @@ makemaker_args(
},
);
+auto_install(
+ do_once => 1 # skip previously failed modules
+);
+
WriteAll;
# substitute prefix everywhere
================================================================
Commit: 33e4f14c0fd30be0e2d93a22ad99fcbf3915c12a
https://github.com/fusinv/fusioninventory-agent/commit/33e4f14c0fd30be0e2d93a22ad99fcbf3915c12a
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-08 (Thu, 08 Mar 2012)
Changed paths:
M Changes
M fusioninventory-agent
M lib/FusionInventory/Agent/Config.pm
Log Message:
-----------
add --config option, to manage configuration backend
diff --git a/Changes b/Changes
index 77137bc..5f460b1 100644
--- a/Changes
+++ b/Changes
@@ -45,6 +45,9 @@ Major changes:
have been deprecated in favor of a generic --no-task option
- --no-software, --no-printer options have been deprecated in favor of a
generic --no-category option, and 'environment' value support has been added
+* new --config option allows to select configuration backend, allowing to use
+ file configuration if needed under windows, or to ignore any external
+ configuration
* fusioninventory-agent-config executable has been dropped, in favor of better
documentation
* documentation has been reviewed for consistency in various places where it
diff --git a/fusioninventory-agent b/fusioninventory-agent
index 52e6c53..f844aa1 100755
--- a/fusioninventory-agent
+++ b/fusioninventory-agent
@@ -21,6 +21,7 @@ GetOptions(
'ca-cert-dir=s',
'ca-cert-file=s',
'conf-file=s',
+ 'config=s',
'color',
'daemon|d',
'no-fork',
@@ -166,14 +167,15 @@ B<fusioninventory-agent> [options] [--server server|--local directory|--sdout]
--httpd-trust=RANGE trust requests from range without authentication token (false)
Logging options
- --logger Logger backend, either Stderr, File or Syslog (Stderr)
+ --logger=BACKEND logger backend [Stderr|File|Syslog] (Stderr)
--logfile=FILE log file
--logfile-maxsize=X maximum size of the log file in MB (0)
--logfacility=FACILITY syslog facility (LOG_USER)
--color use color in the console (false)
- Agent setup options
- --conf-file=FILE path to an alternative config file
+ Configuration options
+ --config=BACKEND configuration backend [file|registry|none]
+ --conf-file=FILE configuration file
Execution mode options
-d --daemon run the agent as a daemon (false)
@@ -457,7 +459,7 @@ Trust requests from given range without authentication token (false).
=over
-=item B<--logger>=I<LOGGER>
+=item B<--logger>=I<BACKEND>
Logger backend to use. It can be:
@@ -501,15 +503,33 @@ This options is ignored on Windows.
=back
-=head2 Agent setup options
+=head2 Configuration options
=over
=item B<--conf-file>=I<FILE>
-Path to an alternative configuration file.
+Use I<FILE> as configuration file (implies file configuration backend)
-This options is ignored on Windows.
+=item B<--config>=I<BACKEND>
+
+Configuration backend to use. It can be:
+
+=over 4
+
+=item
+
+file: read configuration from a file (default anywhere else as Windows)
+
+=item
+
+registry: read configuration from the registry (default on Windows)
+
+=item
+
+none: don't read any configuration
+
+=back
=back
diff --git a/lib/FusionInventory/Agent/Config.pm b/lib/FusionInventory/Agent/Config.pm
index 74afddc..ab10af9 100644
--- a/lib/FusionInventory/Agent/Config.pm
+++ b/lib/FusionInventory/Agent/Config.pm
@@ -84,14 +84,34 @@ sub new {
bless $self, $class;
$self->_loadDefaults();
- if ($OSNAME eq 'MSWin32') {
- $self->_loadFromWinRegistry();
- } else {
- $self->_loadFromCfgFile({
- file => $params{options}->{'conf-file'},
- directory => $params{confdir},
- });
+ my $backend =
+ $params{options}->{config} ? $params{options}->{config} :
+ $OSNAME eq 'MSWin32' ? 'registry' :
+ 'file';
+
+ SWITCH: {
+ if ($backend eq 'registry') {
+ die "Unavailable configuration backend\n"
+ unless $OSNAME eq 'MSWin32';
+ $self->_loadFromWinRegistry();
+ last SWITCH;
+ }
+
+ if ($backend eq 'file') {
+ $self->_loadFromCfgFile({
+ file => $params{options}->{'conf-file'},
+ directory => $params{confdir},
+ });
+ last SWITCH;
+ }
+
+ if ($backend eq 'none') {
+ last SWITCH;
+ }
+
+ die "Unknown configuration backend '$backend'\n";
}
+
$self->_loadUserParams($params{options});
$self->_checkContent();
================================================================
Commit: 26e59c58d2b6e2ce560044573bdbf3e0b6b385c7
https://github.com/fusinv/fusioninventory-agent/commit/26e59c58d2b6e2ce560044573bdbf3e0b6b385c7
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-08 (Thu, 08 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Config.pm
Log Message:
-----------
shorter non-ambiguous method names
diff --git a/lib/FusionInventory/Agent/Config.pm b/lib/FusionInventory/Agent/Config.pm
index ab10af9..c21424e 100644
--- a/lib/FusionInventory/Agent/Config.pm
+++ b/lib/FusionInventory/Agent/Config.pm
@@ -93,12 +93,12 @@ sub new {
if ($backend eq 'registry') {
die "Unavailable configuration backend\n"
unless $OSNAME eq 'MSWin32';
- $self->_loadFromWinRegistry();
+ $self->_loadFromRegistry();
last SWITCH;
}
if ($backend eq 'file') {
- $self->_loadFromCfgFile({
+ $self->_loadFromFile({
file => $params{options}->{'conf-file'},
directory => $params{confdir},
});
@@ -127,7 +127,7 @@ sub _loadDefaults {
}
}
-sub _loadFromWinRegistry {
+sub _loadFromRegistry {
my ($self) = @_;
my $Registry;
@@ -156,7 +156,7 @@ sub _loadFromWinRegistry {
}
}
-sub _loadFromCfgFile {
+sub _loadFromFile {
my ($self, $params) = @_;
my $file = $params->{file} ?
================================================================
Commit: ebe3be416cd1d574f85978cf1170ef5617ad5dac
https://github.com/fusinv/fusioninventory-agent/commit/ebe3be416cd1d574f85978cf1170ef5617ad5dac
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-08 (Thu, 08 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Config.pm
Log Message:
-----------
don't access registry directly
diff --git a/lib/FusionInventory/Agent/Config.pm b/lib/FusionInventory/Agent/Config.pm
index c21424e..9267f4c 100644
--- a/lib/FusionInventory/Agent/Config.pm
+++ b/lib/FusionInventory/Agent/Config.pm
@@ -130,19 +130,13 @@ sub _loadDefaults {
sub _loadFromRegistry {
my ($self) = @_;
- my $Registry;
- Win32::TieRegistry->require();
- Win32::TieRegistry->import(
- Delimiter => '/',
- ArrayValues => 0,
- TiedRef => \$Registry
- );
-
- my $machKey = $Registry->Open('LMachine', {
- Access => Win32::TieRegistry::KEY_READ()
- }) or die "Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR";
+ FusionInventory::Agent::Tools::Win32->use();
+ die "Failed to load FusionInventory::Agent::Tools::Win32: $EVAL_ERROR"
+ if $EVAL_ERROR;
- my $settings = $machKey->{"SOFTWARE/FusionInventory-Agent"};
+ my $settings = getRegistryKey(
+ path => "HKEY_LOCAL_MACHINE/SOFTWARE/FusionInventory-Agent",
+ );
foreach my $rawKey (keys %$settings) {
next unless $rawKey =~ /^\/(\S+)/;
================================================================
Commit: ec14f2c0a9251c52aee5b52ee762da95a3360e56
https://github.com/fusinv/fusioninventory-agent/commit/ec14f2c0a9251c52aee5b52ee762da95a3360e56
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-08 (Thu, 08 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Config.pm
Log Message:
-----------
a config-file option implies a file configuration backend
diff --git a/lib/FusionInventory/Agent/Config.pm b/lib/FusionInventory/Agent/Config.pm
index 9267f4c..763e8f4 100644
--- a/lib/FusionInventory/Agent/Config.pm
+++ b/lib/FusionInventory/Agent/Config.pm
@@ -85,9 +85,10 @@ sub new {
$self->_loadDefaults();
my $backend =
- $params{options}->{config} ? $params{options}->{config} :
- $OSNAME eq 'MSWin32' ? 'registry' :
- 'file';
+ $params{options}->{'conf-file'} ? 'file' :
+ $params{options}->{config} ? $params{options}->{config} :
+ $OSNAME eq 'MSWin32' ? 'registry' :
+ 'file';
SWITCH: {
if ($backend eq 'registry') {
================================================================
Commit: 113eb966fa655cf0bc1d38716f061d9e54ab38b9
https://github.com/fusinv/fusioninventory-agent/commit/113eb966fa655cf0bc1d38716f061d9e54ab38b9
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-09 (Fri, 09 Mar 2012)
Changed paths:
M Changes
M lib/FusionInventory/Agent/Task/Inventory.pm
Log Message:
-----------
Revert "use .xml extension for local inventory file name (close #211)"
There will be another format extension changes in the 3.0 (.json). We prefer
to keep the extension unchanged for the moment.
This reverts commit 87791f2779448dfa995c611431e46ba9c8953826.
diff --git a/Changes b/Changes
index 5f460b1..a152f51 100644
--- a/Changes
+++ b/Changes
@@ -59,7 +59,6 @@ Major changes:
Minor changes:
* Add the HARDWARE/CHASSIS_TYPE information
-* local inventory file name now has .xml extension (#211)
* Linux: report all IP addresses used by each interfaces (#854)
* HPUX: don't report unoccupied memory slots
* AIX: add LVM support
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index a0b3e1a..9c9aac7 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -82,7 +82,7 @@ sub run {
} elsif ($self->{target}->isa('FusionInventory::Agent::Target::Local')) {
my $format = $self->{target}->{format};
- my $extension = $format eq 'xml' ? '.xml' : '.html';
+ my $extension = $format eq 'xml' ? '.ocs' : '.html';
my $file =
$self->{config}->{local} .
"/" .
================================================================
Commit: 089d3d415f8fba9db6ad9259c00bf30855dc5415
https://github.com/fusinv/fusioninventory-agent/commit/089d3d415f8fba9db6ad9259c00bf30855dc5415
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-09 (Fri, 09 Mar 2012)
Changed paths:
M t/inventory/windows/cpu.t
Log Message:
-----------
add three new cases, without dmidecode sample
diff --git a/t/inventory/windows/cpu.t b/t/inventory/windows/cpu.t
index ef03d46..87ee45e 100755
--- a/t/inventory/windows/cpu.t
+++ b/t/inventory/windows/cpu.t
@@ -30,6 +30,62 @@ my %tests = (
THREAD => undef,
CORE => '4'
}
+ ],
+ '2003' => [
+ {
+ ID => 'BFEBFBFF00000F29',
+ NAME => 'Intel(R) Xeon(TM) CPU 3.06GHz',
+ SERIAL => undef,
+ MANUFACTURER => 'Intel',
+ DESCRIPTION => 'x86 Family 15 Model 2 Stepping 9',
+ SPEED => '3060',
+ THREAD => undef,
+ CORE => undef
+ },
+ {
+ ID => '0000000000000000',
+ NAME => 'Intel(R) Xeon(TM) CPU 3.06GHz',
+ SERIAL => undef,
+ MANUFACTURER => 'Intel',
+ DESCRIPTION => 'x86 Family 15 Model 2 Stepping 9',
+ SPEED => '3060',
+ THREAD => undef,
+ CORE => undef
+ }
+ ],
+ '2003SP2' => [
+ {
+ ID => '0FEBBBFF00010676',
+ NAME => 'Intel(R) Xeon(R) CPU E5440 @ 2.83GHz',
+ SERIAL => undef,
+ MANUFACTURER => 'Intel',
+ DESCRIPTION => 'x86 Family 6 Model 23 Stepping 6',
+ SPEED => '2830',
+ THREAD => undef,
+ CORE => undef
+ },
+ {
+ ID => '0FEBBBFF00000676',
+ NAME => 'Intel(R) Xeon(R) CPU E5440 @ 2.83GHz',
+ SERIAL => undef,
+ MANUFACTURER => 'Intel',
+ DESCRIPTION => 'x86 Family 6 Model 23 Stepping 6',
+ SPEED => '2830',
+ THREAD => undef,
+ CORE => undef
+ }
+ ],
+ 'xp' => [
+ {
+ ID => 'BFEBFBFF00010676',
+ NAME => 'Intel(R) Core(TM)2 Duo CPU T9400 @ 2.53GHz',
+ SERIAL => undef,
+ MANUFACTURER => 'Intel',
+ DESCRIPTION => 'x86 Family 6 Model 23 Stepping 6',
+ SPEED => '2530',
+ THREAD => undef,
+ CORE => '2'
+ }
]
);
@@ -48,10 +104,12 @@ foreach my $test (keys %tests) {
$module->mock(
'getCpusFromDmidecode',
sub {
+ my $file = "resources/generic/dmidecode/windows-$test";
return
+ -f $file ?
FusionInventory::Agent::Tools::Generic::getCpusFromDmidecode(
- file => "resources/generic/dmidecode/windows-$test"
- );
+ file => $file
+ ) : ();
}
);
================================================================
Commit: d9771f1c9453b5a3f4037a7af095ab7fc48ae368
https://github.com/fusinv/fusioninventory-agent/commit/d9771f1c9453b5a3f4037a7af095ab7fc48ae368
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-09 (Fri, 09 Mar 2012)
Changed paths:
R resources/generic/dmidecode/windows-xppro
M t/inventory/generic/dmidecode/memory.t
M t/tools/generic.t
Log Message:
-----------
renaming, for consistency with registry and wmi samples
There was an error trying to read the diff from github.com (execution expired)
================================================================
Commit: e34881da2a67e940f92e8ca136110caa6bf33486
https://github.com/fusinv/fusioninventory-agent/commit/e34881da2a67e940f92e8ca136110caa6bf33486
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-09 (Fri, 09 Mar 2012)
Changed paths:
M t/inventory/windows/cpu.t
Log Message:
-----------
fix expected results, we have dmidecode sample for xp
diff --git a/t/inventory/windows/cpu.t b/t/inventory/windows/cpu.t
index 87ee45e..5a24c8e 100755
--- a/t/inventory/windows/cpu.t
+++ b/t/inventory/windows/cpu.t
@@ -19,7 +19,7 @@ BEGIN {
use FusionInventory::Agent::Task::Inventory::Input::Win32::CPU;
my %tests = (
- 7 => [
+ '7' => [
{
ID => 'A7 06 02 00 FF FB EB BF',
NAME => 'Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz',
@@ -77,13 +77,13 @@ my %tests = (
],
'xp' => [
{
- ID => 'BFEBFBFF00010676',
+ ID => '76 06 01 00 FF FB EB BF',
NAME => 'Intel(R) Core(TM)2 Duo CPU T9400 @ 2.53GHz',
SERIAL => undef,
MANUFACTURER => 'Intel',
DESCRIPTION => 'x86 Family 6 Model 23 Stepping 6',
SPEED => '2530',
- THREAD => undef,
+ THREAD => '2',
CORE => '2'
}
]
================================================================
Commit: d8a7952c3cb64914d359602e68f51a82360a8802
https://github.com/fusinv/fusioninventory-agent/commit/d8a7952c3cb64914d359602e68f51a82360a8802
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-09 (Fri, 09 Mar 2012)
Changed paths:
M t/inventory/windows/memory.t
Log Message:
-----------
consistent syntax for hash keys
diff --git a/t/inventory/windows/memory.t b/t/inventory/windows/memory.t
index c538344..88683fa 100755
--- a/t/inventory/windows/memory.t
+++ b/t/inventory/windows/memory.t
@@ -19,7 +19,7 @@ BEGIN {
use FusionInventory::Agent::Task::Inventory::Input::Win32::Memory;
my %tests = (
- 7 => [
+ '7' => [
{
NUMSLOTS => 0,
FORMFACTOR => 'DIMM',
================================================================
Commit: 056cee3fe6e4c9e08f5b8727952266a49f376bd0
https://github.com/fusinv/fusioninventory-agent/commit/056cee3fe6e4c9e08f5b8727952266a49f376bd0
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-09 (Fri, 09 Mar 2012)
Changed paths:
M Changes
M lib/FusionInventory/Agent/Task/Inventory.pm
Log Message:
-----------
Merge remote-tracking branch 'forge/2.2.x' into 2.2.x
diff --git a/Changes b/Changes
index 5f460b1..a152f51 100644
--- a/Changes
+++ b/Changes
@@ -59,7 +59,6 @@ Major changes:
Minor changes:
* Add the HARDWARE/CHASSIS_TYPE information
-* local inventory file name now has .xml extension (#211)
* Linux: report all IP addresses used by each interfaces (#854)
* HPUX: don't report unoccupied memory slots
* AIX: add LVM support
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index a0b3e1a..9c9aac7 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -82,7 +82,7 @@ sub run {
} elsif ($self->{target}->isa('FusionInventory::Agent::Target::Local')) {
my $format = $self->{target}->{format};
- my $extension = $format eq 'xml' ? '.xml' : '.html';
+ my $extension = $format eq 'xml' ? '.ocs' : '.html';
my $file =
$self->{config}->{local} .
"/" .
================================================================
Commit: 23b0f421498d57f911cef911c6d5767163c7ec91
https://github.com/fusinv/fusioninventory-agent/commit/23b0f421498d57f911cef911c6d5767163c7ec91
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-09 (Fri, 09 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Client.pm
Log Message:
-----------
HTTP client: connection timeout ignored
If timeout parameter was not defined during the object creation,
the HTTP LWP::USerAgent timeout was set to undef.
closes: #1481
Reported-by: Kevin Roy <kiniou at gmail.com
diff --git a/lib/FusionInventory/Agent/HTTP/Client.pm b/lib/FusionInventory/Agent/HTTP/Client.pm
index 8c1940f..95cea96 100644
--- a/lib/FusionInventory/Agent/HTTP/Client.pm
+++ b/lib/FusionInventory/Agent/HTTP/Client.pm
@@ -48,7 +48,7 @@ sub new {
}
$self->{ua}->agent($FusionInventory::Agent::AGENT_STRING);
- $self->{ua}->timeout($params{timeout});
+ $self->{ua}->timeout($self->{timeout});
return $self;
}
================================================================
Commit: e8291ea4b67415eed560340cac4d178c6aaeb30d
https://github.com/fusinv/fusioninventory-agent/commit/e8291ea4b67415eed560340cac4d178c6aaeb30d
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-09 (Fri, 09 Mar 2012)
Changed paths:
R resources/generic/dmidecode/windows-xppro
M t/inventory/generic/dmidecode/memory.t
M t/inventory/windows/cpu.t
M t/inventory/windows/memory.t
M t/tools/generic.t
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/resources/generic/dmidecode/windows-xppro b/resources/generic/dmidecode/windows-xppro
deleted file mode 100644
index 6b999c7..0000000
--- a/resources/generic/dmidecode/windows-xppro
+++ /dev/null
@@ -1,586 +0,0 @@
-# dmidecode 2.11
-SMBIOS 2.4 present.
-57 structures occupying 2822 bytes.
-Table at 0x000F6570.
-
-Handle 0xDA00, DMI type 218, 251 bytes
-OEM-specific Type
- Header and Data:
- DA FB 00 DA B2 00 0D 5F 1F 37 40 7D 00 00 00 00
- 00 40 00 02 00 01 00 41 00 02 00 00 00 65 00 03
- 00 00 00 66 00 03 00 01 00 F1 00 04 00 00 00 F2
- 00 04 00 01 00 F3 00 04 00 02 00 0F 00 05 00 00
- 00 11 00 05 00 01 00 05 00 05 00 02 00 12 00 05
- 00 03 00 06 00 05 00 04 00 07 00 06 00 00 00 0B
- 00 06 00 01 00 0C 00 06 00 02 00 0D 00 06 00 03
- 00 89 01 07 00 00 00 8A 01 07 00 01 00 42 00 08
- 00 01 00 43 00 08 00 00 00 55 00 09 00 00 00 6D
- 00 09 00 01 00 16 02 09 00 02 00 98 01 09 00 03
- 00 0A 01 0A 00 01 00 0B 01 0A 00 00 00 2D 00 0B
- 00 02 00 6E 00 0B 00 01 00 2E 00 0B 00 00 00 11
- 01 0C 00 00 00 10 01 0C 00 01 00 F0 00 0D 00 01
- 00 ED 00 0D 00 00 00 41 01 0E 00 01 00 40 01 0E
- 00 00 00 47 01 0F 00 01 00 46 01 0F 00 00 00 4A
- 01 10 00 00 00 FF FF 00 00 00 00
-
-Handle 0xDA01, DMI type 218, 251 bytes
-OEM-specific Type
- Header and Data:
- DA FB 01 DA B2 00 0D 5F 1F 37 40 4B 01 10 00 01
- 00 04 02 11 00 00 00 05 02 11 00 01 00 02 02 12
- 00 00 00 03 02 12 00 01 00 52 01 13 00 01 00 53
- 01 13 00 00 00 80 01 14 00 01 00 7F 01 14 00 00
- 00 7C 01 15 00 01 00 7B 01 15 00 00 00 E8 02 16
- 00 00 00 E9 02 16 00 01 00 7E 01 17 00 01 00 7D
- 01 17 00 00 00 92 01 18 00 00 00 91 01 18 00 01
- 00 94 01 19 00 00 00 93 01 19 00 01 00 86 01 1A
- 00 01 00 85 01 1A 00 00 00 82 01 1B 00 01 00 81
- 01 1B 00 00 00 84 01 1C 00 01 00 83 01 1C 00 00
- 00 9B 01 1D 00 00 00 9C 01 1D 00 01 00 9D 01 1D
- 00 02 00 9E 01 1D 00 03 00 8D 01 1E 00 00 00 8E
- 01 1E 00 01 00 85 02 1F 00 00 00 86 02 1F 00 01
- 00 EA 00 20 00 00 00 EB 00 20 00 01 00 EC 00 20
- 00 02 00 A1 00 21 00 00 00 A3 00 21 00 01 00 28
- 00 22 00 00 00 FF FF 00 00 00 00
-
-Handle 0xDA02, DMI type 218, 251 bytes
-OEM-specific Type
- Header and Data:
- DA FB 02 DA B2 00 0D 5F 1F 37 40 29 00 22 00 01
- 00 2A 00 22 00 02 00 2B 00 23 00 00 00 2C 00 24
- 00 00 00 0E 01 25 00 01 00 0F 01 25 00 00 00 9B
- 00 26 00 01 00 9C 00 26 00 00 00 4D 01 27 00 01
- 00 4C 01 27 00 00 00 87 01 28 00 00 00 88 01 28
- 00 01 00 35 01 29 00 03 00 37 01 29 00 00 00 38
- 01 29 00 01 00 39 01 29 00 02 00 D9 01 2A 00 01
- 00 D8 01 2A 00 00 00 DF 01 2B 00 01 00 DE 01 2B
- 00 00 00 45 02 2C 00 00 00 44 02 2C 00 01 00 49
- 02 2D 00 00 00 48 02 2D 00 01 00 45 01 45 01 01
- 00 44 01 44 01 00 00 76 01 76 01 01 00 75 01 75
- 01 01 00 9F 00 9F 00 00 00 A0 00 A0 00 01 00 E1
- 01 E1 01 00 00 E3 01 E3 01 01 00 E2 01 E2 01 02
- 00 29 02 29 02 01 00 28 02 28 02 02 00 2A 02 2A
- 02 03 00 30 02 30 02 01 00 2F 02 2F 02 00 00 35
- 02 35 02 01 00 FF FF 00 00 00 00
-
-Handle 0xDA03, DMI type 218, 77 bytes
-OEM-specific Type
- Header and Data:
- DA 4D 03 DA B2 00 0D 5F 1F 37 40 36 02 36 02 00
- 00 37 02 37 02 02 00 4A 02 4A 02 01 00 0C 80 0C
- 80 01 00 6C 02 6C 02 01 00 6D 02 6D 02 00 00 01
- F0 01 F0 00 00 02 F0 02 F0 00 00 03 F0 03 F0 00
- 00 04 F0 04 F0 00 00 FF FF 00 00 00 00
-
-Handle 0x0000, DMI type 0, 24 bytes
-BIOS Information
- Vendor: Dell Inc.
- Version: A24
- Release Date: 08/19/2010
- Address: 0xF0000
- Runtime Size: 64 kB
- ROM Size: 1728 kB
- Characteristics:
- ISA is supported
- PCI is supported
- PC Card (PCMCIA) is supported
- PNP is supported
- BIOS is upgradeable
- BIOS shadowing is allowed
- Boot from CD is supported
- Selectable boot is supported
- 3.5"/720 kB floppy services are supported (int 13h)
- Print screen service is supported (int 5h)
- 8042 keyboard services are supported (int 9h)
- Serial services are supported (int 14h)
- Printer services are supported (int 17h)
- CGA/mono video services are supported (int 10h)
- ACPI is supported
- USB legacy is supported
- AGP is supported
- Smart battery is supported
- BIOS boot specification is supported
- Function key-initiated network boot is supported
- Targeted content distribution is supported
- BIOS Revision: 2.4
- Firmware Revision: 2.4
-
-Handle 0x0100, DMI type 1, 27 bytes
-System Information
- Manufacturer: Dell Inc.
- Product Name: Precision M4400
- Version: Not Specified
- Serial Number: HLG964J
- UUID: 44454C4C-4C00-1047-8039-C8C04F36344A
- Wake-up Type: Power Switch
- SKU Number: Not Specified
- Family:
-
-Handle 0x0200, DMI type 2, 9 bytes
-Base Board Information
- Manufacturer: Dell Inc.
- Product Name: 0P019G
- Version:
- Serial Number: .HLG964J.CN129618C52450.
- Asset Tag:
-
-Handle 0x0300, DMI type 3, 13 bytes
-Chassis Information
- Manufacturer: Dell Inc.
- Type: Portable
- Lock: Not Present
- Version: Not Specified
- Serial Number: HLG964J
- Asset Tag: Not Specified
- Boot-up State: Safe
- Power Supply State: Safe
- Thermal State: Safe
- Security Status: None
-
-Handle 0x0400, DMI type 4, 40 bytes
-Processor Information
- Socket Designation: Microprocessor
- Type: Central Processor
- Family: Core 2 Duo
- Manufacturer: Intel
- ID: 76 06 01 00 FF FB EB BF
- Signature: Type 0, Family 6, Model 23, Stepping 6
- Flags:
- FPU (Floating-point unit on-chip)
- VME (Virtual mode extension)
- DE (Debugging extension)
- PSE (Page size extension)
- TSC (Time stamp counter)
- MSR (Model specific registers)
- PAE (Physical address extension)
- MCE (Machine check exception)
- CX8 (CMPXCHG8 instruction supported)
- APIC (On-chip APIC hardware supported)
- SEP (Fast system call)
- MTRR (Memory type range registers)
- PGE (Page global enable)
- MCA (Machine check architecture)
- CMOV (Conditional move instruction supported)
- PAT (Page attribute table)
- PSE-36 (36-bit page size extension)
- CLFSH (CLFLUSH instruction supported)
- DS (Debug store)
- ACPI (ACPI supported)
- MMX (MMX technology supported)
- FXSR (FXSAVE and FXSTOR instructions supported)
- SSE (Streaming SIMD extensions)
- SSE2 (Streaming SIMD extensions 2)
- SS (Self-snoop)
- HTT (Multi-threading)
- TM (Thermal monitor supported)
- PBE (Pending break enabled)
- Version: Not Specified
- Voltage: 3.3 V
- External Clock: 266 MHz
- Max Speed: 2534 MHz
- Current Speed: 2534 MHz
- Status: Populated, Enabled
- Upgrade: None
- L1 Cache Handle: 0x0700
- L2 Cache Handle: 0x0701
- L3 Cache Handle: Not Provided
- Serial Number: Not Specified
- Asset Tag: Not Specified
- Part Number: Not Specified
- Core Count: 2
- Core Enabled: 2
- Thread Count: 2
- Characteristics:
- 64-bit capable
-
-Handle 0x0700, DMI type 7, 19 bytes
-Cache Information
- Socket Designation: Not Specified
- Configuration: Enabled, Not Socketed, Level 1
- Operational Mode: Write Back
- Location: Internal
- Installed Size: 128 kB
- Maximum Size: 128 kB
- Supported SRAM Types:
- Unknown
- Installed SRAM Type: Unknown
- Speed: Unknown
- Error Correction Type: None
- System Type: Data
- Associativity: 4-way Set-associative
-
-Handle 0x0701, DMI type 7, 19 bytes
-Cache Information
- Socket Designation: Not Specified
- Configuration: Enabled, Not Socketed, Level 2
- Operational Mode: Varies With Memory Address
- Location: Internal
- Installed Size: 6144 kB
- Maximum Size: 6144 kB
- Supported SRAM Types:
- Pipeline Burst
- Installed SRAM Type: Pipeline Burst
- Speed: 15 ns
- Error Correction Type: None
- System Type: Unified
- Associativity: Other
-
-Handle 0x0800, DMI type 8, 9 bytes
-Port Connector Information
- Internal Reference Designator: PARALLEL
- Internal Connector Type: None
- External Reference Designator: Not Specified
- External Connector Type: DB-25 female
- Port Type: Parallel Port PS/2
-
-Handle 0x0801, DMI type 8, 9 bytes
-Port Connector Information
- Internal Reference Designator: SERIAL1
- Internal Connector Type: None
- External Reference Designator: Not Specified
- External Connector Type: DB-9 male
- Port Type: Serial Port 16550A Compatible
-
-Handle 0x0804, DMI type 8, 9 bytes
-Port Connector Information
- Internal Reference Designator: USB
- Internal Connector Type: None
- External Reference Designator: Not Specified
- External Connector Type: Access Bus (USB)
- Port Type: USB
-
-Handle 0x0806, DMI type 8, 9 bytes
-Port Connector Information
- Internal Reference Designator: MONITOR
- Internal Connector Type: None
- External Reference Designator: Not Specified
- External Connector Type: DB-15 female
- Port Type: Video Port
-
-Handle 0x080B, DMI type 8, 9 bytes
-Port Connector Information
- Internal Reference Designator: FireWire
- Internal Connector Type: None
- External Reference Designator: Not Specified
- External Connector Type: IEEE 1394
- Port Type: Firewire (IEEE P1394)
-
-Handle 0x080C, DMI type 8, 9 bytes
-Port Connector Information
- Internal Reference Designator: Modem
- Internal Connector Type: None
- External Reference Designator: Not Specified
- External Connector Type: RJ-11
- Port Type: Modem Port
-
-Handle 0x080D, DMI type 8, 9 bytes
-Port Connector Information
- Internal Reference Designator: Ethernet
- Internal Connector Type: None
- External Reference Designator: Not Specified
- External Connector Type: RJ-45
- Port Type: Network Port
-
-Handle 0x0900, DMI type 9, 13 bytes
-System Slot Information
- Designation: PCMCIA 0
- Type: 32-bit PC Card (PCMCIA)
- Current Usage: Available
- Length: Other
- ID: Adapter 0, Socket 0
- Characteristics:
- 5.0 V is provided
- 3.3 V is provided
- PC Card-16 is supported
- Cardbus is supported
- Zoom Video is supported
- Modem ring resume is supported
-
-Handle 0x0A00, DMI type 10, 6 bytes
-On Board Device Information
- Type: Video
- Status: Enabled
- Description: NVIDIA Quadro FX 1700M
-
-Handle 0x0A01, DMI type 10, 6 bytes
-On Board Device Information
- Type: Sound
- Status: Enabled
- Description: IDT 92HD71
-
-Handle 0x0B00, DMI type 11, 5 bytes
-OEM Strings
- String 1: Dell System
- String 2: 5[0003]
- String 3: 13[PP04X]
-
-Handle 0x0D00, DMI type 13, 22 bytes
-BIOS Language Information
- Language Description Format: Long
- Installable Languages: 1
- en|US|iso8859-1
- Currently Installed Language: en|US|iso8859-1
-
-Handle 0x1000, DMI type 16, 15 bytes
-Physical Memory Array
- Location: System Board Or Motherboard
- Use: System Memory
- Error Correction Type: None
- Maximum Capacity: 8 GB
- Error Information Handle: Not Provided
- Number Of Devices: 2
-
-Handle 0x1100, DMI type 17, 27 bytes
-Memory Device
- Array Handle: 0x1000
- Error Information Handle: Not Provided
- Total Width: 64 bits
- Data Width: 64 bits
- Size: 2048 MB
- Form Factor: DIMM
- Set: None
- Locator: DIMM_A
- Bank Locator: Not Specified
- Type: DDR2
- Type Detail: Synchronous
- Speed: 800 MHz
- Manufacturer: 7F7FFE0000000000
- Serial Number: 14FA6621
- Asset Tag: 200840
- Part Number: EBE21UE8ACUA-8G-E
-
-Handle 0x1101, DMI type 17, 27 bytes
-Memory Device
- Array Handle: 0x1000
- Error Information Handle: Not Provided
- Total Width: 64 bits
- Data Width: 64 bits
- Size: 2048 MB
- Form Factor: DIMM
- Set: None
- Locator: DIMM_B
- Bank Locator: Not Specified
- Type: DDR2
- Type Detail: Synchronous
- Speed: 800 MHz
- Manufacturer: 7F7FFE0000000000
- Serial Number: AEF96621
- Asset Tag: 200840
- Part Number: EBE21UE8ACUA-8G-E
-
-Handle 0x1301, DMI type 19, 15 bytes
-Memory Array Mapped Address
- Starting Address: 0x00000000000
- Ending Address: 0x000FFFFFFFF
- Range Size: 4 GB
- Physical Array Handle: 0x1000
- Partition Width: 1
-
-Handle 0x1401, DMI type 20, 19 bytes
-Memory Device Mapped Address
- Starting Address: 0x00000000000
- Ending Address: 0x000FFFFFFFF
- Range Size: 4 GB
- Physical Device Handle: 0x1100
- Memory Array Mapped Address Handle: 0x1301
- Partition Row Position: 1
- Interleave Position: 1
- Interleaved Data Depth: 8
-
-Handle 0x1411, DMI type 126, 19 bytes
-Inactive
-
-Handle 0x1402, DMI type 20, 19 bytes
-Memory Device Mapped Address
- Starting Address: 0x00000000000
- Ending Address: 0x000FFFFFFFF
- Range Size: 4 GB
- Physical Device Handle: 0x1101
- Memory Array Mapped Address Handle: 0x1301
- Partition Row Position: 1
- Interleave Position: 2
- Interleaved Data Depth: 8
-
-Handle 0x1412, DMI type 126, 19 bytes
-Inactive
-
-Handle 0x1500, DMI type 21, 7 bytes
-Built-in Pointing Device
- Type: Touch Pad
- Interface: Bus Mouse
- Buttons: 2
-
-Handle 0x1600, DMI type 22, 26 bytes
-Portable Battery
- Location: Sys. Battery Bay
- Manufacturer: SMP
- Name: DELL HJ59008
- Design Capacity: 84000 mWh
- Design Voltage: 11100 mV
- SBDS Version: 1.0
- Maximum Error: 3%
- SBDS Serial Number: 02C7
- SBDS Manufacture Date: 2010-08-31
- SBDS Chemistry: LION
- OEM-specific Information: 0x00000001
-
-Handle 0x1601, DMI type 126, 26 bytes
-Inactive
-
-Handle 0x1B00, DMI type 27, 12 bytes
-Cooling Device
- Type: Fan
- Status: OK
- OEM-specific Information: 0x0000DD00
-
-Handle 0x1C00, DMI type 28, 20 bytes
-Temperature Probe
- Description: CPU Internal Temperature
- Location: Processor
- Status: OK
- Maximum Value: 127.0 deg C
- Minimum Value: 0.0 deg C
- Resolution: 1.000 deg C
- Tolerance: 0.5 deg C
- Accuracy: Unknown
- OEM-specific Information: 0x0000DC00
-
-Handle 0x2000, DMI type 32, 11 bytes
-System Boot Information
- Status: No errors detected
-
-Handle 0xB000, DMI type 176, 5 bytes
-OEM-specific Type
- Header and Data:
- B0 05 00 B0 3A
-
-Handle 0xB100, DMI type 177, 12 bytes
-OEM-specific Type
- Header and Data:
- B1 0C 00 B1 82 00 00 00 00 00 00 00
-
-Handle 0xB200, DMI type 178, 96 bytes
-OEM-specific Type
- Header and Data:
- B2 60 00 B2 07 01 0C 00 08 01 0A 00 09 01 0B 00
- 0A 01 12 00 3B 00 20 00 3C 00 1F 00 3D 00 0E 00
- 41 00 12 00 42 00 18 00 00 02 FF FF 4B 00 15 00
- 48 00 14 00 50 00 13 00 10 00 FF 00 11 00 FF 00
- 12 00 FF 00 13 00 FF 00 14 00 FF 00 1E 00 FF 00
- 1F 00 FF 00 20 00 FF 00 21 00 FF 00 22 00 FF 00
-
-Handle 0xD000, DMI type 208, 10 bytes
-OEM-specific Type
- Header and Data:
- D0 0A 00 D0 01 04 FE 00 50 02
-
-Handle 0xD100, DMI type 209, 12 bytes
-OEM-specific Type
- Header and Data:
- D1 0C 00 D1 00 00 00 03 04 07 80 05
-
-Handle 0xD200, DMI type 210, 12 bytes
-OEM-specific Type
- Header and Data:
- D2 0C 00 D2 00 00 06 03 06 80 04 05
-
-Handle 0xD800, DMI type 216, 9 bytes
-OEM-specific Type
- Header and Data:
- D8 09 00 D8 01 03 01 F0 03
- Strings:
- NVidia Corp.
-
- 62.94.8F.00.04
-
-
-Handle 0xD900, DMI type 217, 8 bytes
-OEM-specific Type
- Header and Data:
- D9 08 00 D9 01 02 01 03
- Strings:
- US-101
- Proprietary
-
-Handle 0xDB00, DMI type 219, 9 bytes
-OEM-specific Type
- Header and Data:
- DB 09 00 DB 03 01 02 03 FF
- Strings:
- System Device Bay
- Battery, CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
- DVD+/-RW
-
-Handle 0xDB01, DMI type 219, 9 bytes
-OEM-specific Type
- Header and Data:
- DB 09 01 DB 03 01 02 03 FF
- Strings:
- System eSATA Bay
- CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
- EMPTY
-
-Handle 0xDB02, DMI type 219, 9 bytes
-OEM-specific Type
- Header and Data:
- DB 09 02 DB 03 01 02 03 FF
- Strings:
- System eSATA Dock Bay
- CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
- EMPTY
-
-Handle 0x8100, DMI type 129, 8 bytes
-OEM-specific Type
- Header and Data:
- 81 08 00 81 01 01 02 01
- Strings:
- Intel_ASF
- Intel_ASF_001
-
-Handle 0x8200, DMI type 130, 20 bytes
-OEM-specific Type
- Header and Data:
- 82 14 00 82 24 41 4D 54 01 00 00 00 01 A5 0B 02
- 00 00 00 00
-
-Handle 0x8300, DMI type 131, 64 bytes
-OEM-specific Type
- Header and Data:
- 83 40 00 83 35 00 00 00 00 00 40 2A 0F 00 00 00
- F8 00 17 29 00 00 00 00 00 00 00 00 00 00 00 00
- 00 00 00 00 03 00 01 02 C8 00 F5 10 00 00 00 0C
- 00 00 00 00 28 00 00 00 76 50 72 6F 00 00 00 00
-
-Handle 0xDC00, DMI type 220, 22 bytes
-OEM-specific Type
- Header and Data:
- DC 16 00 DC 01 F0 00 00 02 F0 00 00 00 00 03 F0
- 04 F0 00 00 00 00
-
-Handle 0xDD00, DMI type 221, 19 bytes
-OEM-specific Type
- Header and Data:
- DD 13 00 DD 00 00 00 00 00 00 00 00 00 00 00 00
- 00 00 00
-
-Handle 0xD400, DMI type 212, 47 bytes
-OEM-specific Type
- Header and Data:
- D4 2F 00 D4 74 00 75 00 00 10 2D 2E 5C 00 78 BF
- 40 5D 00 78 BF 00 2D 01 1D EF 10 2E 01 1D EF 00
- 08 00 1D DF 00 03 00 1D DF 00 FF FF 00 00 00
-
-Handle 0xD401, DMI type 212, 17 bytes
-OEM-specific Type
- Header and Data:
- D4 11 01 D4 74 00 75 00 03 40 49 4A FF FF 00 00
- 00
-
-Handle 0xDE00, DMI type 222, 16 bytes
-OEM-specific Type
- Header and Data:
- DE 10 00 DE 01 02 FF FF 00 00 00 00 00 00 00 01
-
-Handle 0x7F00, DMI type 127, 4 bytes
-End Of Table
-
diff --git a/t/inventory/generic/dmidecode/memory.t b/t/inventory/generic/dmidecode/memory.t
index b2c713b..16c7c31 100755
--- a/t/inventory/generic/dmidecode/memory.t
+++ b/t/inventory/generic/dmidecode/memory.t
@@ -908,7 +908,7 @@ my %tests = (
MEMORYCORRECTION => 'None'
}
],
- 'windows-xppro' => [
+ 'windows-xp' => [
{
NUMSLOTS => 1,
SERIALNUMBER => '14FA6621',
diff --git a/t/inventory/windows/cpu.t b/t/inventory/windows/cpu.t
index ef03d46..5a24c8e 100755
--- a/t/inventory/windows/cpu.t
+++ b/t/inventory/windows/cpu.t
@@ -19,7 +19,7 @@ BEGIN {
use FusionInventory::Agent::Task::Inventory::Input::Win32::CPU;
my %tests = (
- 7 => [
+ '7' => [
{
ID => 'A7 06 02 00 FF FB EB BF',
NAME => 'Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz',
@@ -30,6 +30,62 @@ my %tests = (
THREAD => undef,
CORE => '4'
}
+ ],
+ '2003' => [
+ {
+ ID => 'BFEBFBFF00000F29',
+ NAME => 'Intel(R) Xeon(TM) CPU 3.06GHz',
+ SERIAL => undef,
+ MANUFACTURER => 'Intel',
+ DESCRIPTION => 'x86 Family 15 Model 2 Stepping 9',
+ SPEED => '3060',
+ THREAD => undef,
+ CORE => undef
+ },
+ {
+ ID => '0000000000000000',
+ NAME => 'Intel(R) Xeon(TM) CPU 3.06GHz',
+ SERIAL => undef,
+ MANUFACTURER => 'Intel',
+ DESCRIPTION => 'x86 Family 15 Model 2 Stepping 9',
+ SPEED => '3060',
+ THREAD => undef,
+ CORE => undef
+ }
+ ],
+ '2003SP2' => [
+ {
+ ID => '0FEBBBFF00010676',
+ NAME => 'Intel(R) Xeon(R) CPU E5440 @ 2.83GHz',
+ SERIAL => undef,
+ MANUFACTURER => 'Intel',
+ DESCRIPTION => 'x86 Family 6 Model 23 Stepping 6',
+ SPEED => '2830',
+ THREAD => undef,
+ CORE => undef
+ },
+ {
+ ID => '0FEBBBFF00000676',
+ NAME => 'Intel(R) Xeon(R) CPU E5440 @ 2.83GHz',
+ SERIAL => undef,
+ MANUFACTURER => 'Intel',
+ DESCRIPTION => 'x86 Family 6 Model 23 Stepping 6',
+ SPEED => '2830',
+ THREAD => undef,
+ CORE => undef
+ }
+ ],
+ 'xp' => [
+ {
+ ID => '76 06 01 00 FF FB EB BF',
+ NAME => 'Intel(R) Core(TM)2 Duo CPU T9400 @ 2.53GHz',
+ SERIAL => undef,
+ MANUFACTURER => 'Intel',
+ DESCRIPTION => 'x86 Family 6 Model 23 Stepping 6',
+ SPEED => '2530',
+ THREAD => '2',
+ CORE => '2'
+ }
]
);
@@ -48,10 +104,12 @@ foreach my $test (keys %tests) {
$module->mock(
'getCpusFromDmidecode',
sub {
+ my $file = "resources/generic/dmidecode/windows-$test";
return
+ -f $file ?
FusionInventory::Agent::Tools::Generic::getCpusFromDmidecode(
- file => "resources/generic/dmidecode/windows-$test"
- );
+ file => $file
+ ) : ();
}
);
diff --git a/t/inventory/windows/memory.t b/t/inventory/windows/memory.t
index c538344..88683fa 100755
--- a/t/inventory/windows/memory.t
+++ b/t/inventory/windows/memory.t
@@ -19,7 +19,7 @@ BEGIN {
use FusionInventory::Agent::Task::Inventory::Input::Win32::Memory;
my %tests = (
- 7 => [
+ '7' => [
{
NUMSLOTS => 0,
FORMFACTOR => 'DIMM',
diff --git a/t/tools/generic.t b/t/tools/generic.t
index 7ae2863..12090c8 100755
--- a/t/tools/generic.t
+++ b/t/tools/generic.t
@@ -4514,7 +4514,7 @@ my %dmidecode_tests = (
}
]
},
- 'windows-xppro' => {
+ 'windows-xp' => {
'32' => [
{
'Status' => 'No errors detected'
@@ -5935,7 +5935,7 @@ my %cpu_tests = (
CORE => undef
}
],
- 'windows-xppro' => [
+ 'windows-xp' => [
{
ID => '76 06 01 00 FF FB EB BF',
NAME => 'Core 2 Duo',
================================================================
Commit: 25361c9c01e1989df07b0b4780ce8194f44795d1
https://github.com/fusinv/fusioninventory-agent/commit/25361c9c01e1989df07b0b4780ce8194f44795d1
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-03-10 (Sat, 10 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
Log Message:
-----------
isolate interfaces extraction
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index c9e9acd..7fdf63e 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -22,16 +22,53 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
+ my (@gateways, @dns, @ips);
+
+ foreach my $interface (_getInterfaces()) {
+ next if
+ !$interface->{IPADDRESS} &&
+ !$interface->{IPADDRESS6} &&
+ !$interface->{MACADDR};
+
+ push @gateways, $interface->{IPGATEWAY}
+ if $interface->{IPGATEWAY};
+
+ push @dns, $interface->{dns}
+ if $interface->{dns};
+
+ push @ips, @{$interface->{IPADDRESS}}
+ if $interface->{IPADDRESS};
+
+ delete $interface->{dns};
+
+ # flatten multivalued keys
+ foreach my $key (qw/IPADDRESS IPMASK IPSUBNET IPADDRESS6/) {
+ next unless $interface->{$key};
+ $interface->{$key} = join('/', @{$interface->{$key}});
+ }
+
+ $inventory->addEntry(
+ section => 'NETWORKS',
+ entry => $interface
+ );
+ }
+
+ $inventory->setHardware({
+ DEFAULTGATEWAY => join('/', uniq @gateways),
+ DNS => join('/', uniq @dns),
+ IPADDR => join('/', uniq @ips),
+ });
+
+}
+
+sub _getInterfaces {
my $WMIService = Win32::OLE->GetObject(
'winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2'
) or die "WMI connection failed: " . Win32::OLE->LastError();
- my %ips;
my @ip6s;
my @interfaces;
- my %defaultgateways;
- my %dns;
my $nics = $WMIService->ExecQuery(
'SELECT * FROM Win32_NetworkAdapterConfiguration'
@@ -45,16 +82,12 @@ sub doInventory {
MTU => $nic->MTU
};
- foreach (@{$nic->DefaultIPGateway || []}) {
- $defaultgateways{$_} = 1;
- }
-
- if ($nic->DefaultIPGateway) {
+ if ($nic->DefaultIPGateway()) {
$interface->{IPGATEWAY} = $nic->DefaultIPGateway()->[0];
}
- foreach (@{$nic->DNSServerSearchOrder || []}) {
- $dns{$_} = 1;
+ if ($nic->DNSServerSearchOrder()) {
+ $interface->{dns} = $nic->DNSServerSearchOrder()->[0];
}
if ($nic->IPAddress) {
@@ -62,13 +95,11 @@ sub doInventory {
my $address = $nic->IPAddress->[$addrId];
my $mask = $nic->IPSubnet->[$addrId];
if ($address =~ /$ip_address_pattern/) {
- $ips{$address}=1;
push @{$interface->{IPADDRESS}}, $address;
push @{$interface->{IPMASK}}, $mask;
push @{$interface->{IPSUBNET}},
getSubnetAddress($address, $mask);
} elsif ($address =~ /\S+/) {
- push @ip6s, $address;
push @{$interface->{IPADDRESS6}}, $address;
push @{$interface->{IPMASK6}}, $mask;
push @{$interface->{IPSUBNET6}},
@@ -110,31 +141,7 @@ sub doInventory {
}
- foreach my $interface (@interfaces) {
-
- next if
- !$interface->{IPADDRESS} &&
- !$interface->{IPADDRESS6} &&
- !$interface->{MACADDR};
-
- # flatten multivalued keys
- foreach my $key (qw/IPADDRESS IPMASK IPSUBNET IPADDRESS6/) {
- next unless $interface->{$key};
- $interface->{$key} = join('/', @{$interface->{$key}});
- }
-
- $inventory->addEntry(
- section => 'NETWORKS',
- entry => $interface
- );
- }
-
- $inventory->setHardware({
- DEFAULTGATEWAY => join ('/',keys %defaultgateways),
- DNS => join('/', keys %dns),
- IPADDR => join('/', keys %ips),
- });
-
+ return @interfaces;
}
1;
================================================================
Commit: a850719e0e058209dadf926b0c230515973ddedf
https://github.com/fusinv/fusioninventory-agent/commit/a850719e0e058209dadf926b0c230515973ddedf
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-03-10 (Sat, 10 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
Log Message:
-----------
use consistant WMI access interface
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index 7fdf63e..b7eb577 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -3,16 +3,10 @@ package FusionInventory::Agent::Task::Inventory::Input::Win32::Networks;
use strict;
use warnings;
-use Win32::OLE qw(in CP_UTF8);
-use Win32::OLE::Const;
-use Win32::OLE::Enum;
-
use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Network;
use FusionInventory::Agent::Tools::Win32;
-Win32::OLE-> Option(CP=>CP_UTF8);
-
# http://techtasks.com/code/viewbookcode/1417
sub isEnabled {
return 1;
@@ -63,37 +57,35 @@ sub doInventory {
sub _getInterfaces {
- my $WMIService = Win32::OLE->GetObject(
- 'winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2'
- ) or die "WMI connection failed: " . Win32::OLE->LastError();
-
my @ip6s;
my @interfaces;
- my $nics = $WMIService->ExecQuery(
- 'SELECT * FROM Win32_NetworkAdapterConfiguration'
- );
- foreach my $nic (in $nics) {
+ foreach my $object (getWmiObjects(
+ class => 'Win32_NetworkAdapterConfiguration',
+ properties => [ qw/Index Description IPEnabled DHCPServer MACAddress
+ MTU DefaultIPGateway DNSServerSearchOrder IPAddress
+ IPSubnet/ ]
+ )) {
+
my $interface = {
- DESCRIPTION => $nic->Description,
- STATUS => $nic->IPEnabled ? "Up" : "Down",
- IPDHCP => $nic->DHCPServer,
- MACADDR => $nic->MACAddress,
- MTU => $nic->MTU
+ DESCRIPTION => $object->{Description},
+ STATUS => $object->{IPEnabled} ? "Up" : "Down",
+ IPDHCP => $object->{DHCPServer},
+ MACADDR => $object->{MACAddress},
+ MTU => $object->{MTU}
};
- if ($nic->DefaultIPGateway()) {
- $interface->{IPGATEWAY} = $nic->DefaultIPGateway()->[0];
+ if ($object->{DefaultIPGateway}) {
+ $interface->{IPGATEWAY} = $object->{DefaultIPGateway}->[0];
}
- if ($nic->DNSServerSearchOrder()) {
- $interface->{dns} = $nic->DNSServerSearchOrder()->[0];
+ if ($object->{DNSServerSearchOrder}) {
+ $interface->{dns} = $object->{DNSServerSearchOrder}->[0];
}
- if ($nic->IPAddress) {
- foreach my $addrId (0..(@{$nic->IPAddress}-1)) {
- my $address = $nic->IPAddress->[$addrId];
- my $mask = $nic->IPSubnet->[$addrId];
+ if ($object->{IPAddress}) {
+ foreach my $address (@{$object->{IPAddress}}) {
+ my $mask = shift @{$object->{IPSubnet}};
if ($address =~ /$ip_address_pattern/) {
push @{$interface->{IPADDRESS}}, $address;
push @{$interface->{IPMASK}}, $mask;
@@ -108,37 +100,39 @@ sub _getInterfaces {
}
}
- $interfaces[$nic->Index] = $interface;
+ $interfaces[$object->{Index}] = $interface;
}
- $nics = $WMIService->ExecQuery('SELECT * FROM Win32_NetworkAdapter');
- foreach my $nic (in $nics) {
- my $interface = $interfaces[$nic->Index];
-
+ foreach my $object (getWmiObjects(
+ class => 'Win32_NetworkAdapter',
+ properties => [ qw/Index PNPDeviceId Speed MACAddress PhysicalAdapter
+ AdapterType/ ]
+ )) {
# http://comments.gmane.org/gmane.comp.monitoring.fusion-inventory.devel/34
- next unless $nic->PNPDeviceID;
+ next unless $object->{PNPDeviceId};
+
+ my $interface = $interfaces[$object->{Index}];
- $interface->{SPEED} = $nic->Speed;
- $interface->{MACADDR} = $nic->MACAddress;
- $interface->{PNPDEVICEID} = $nic->PNPDeviceID;
+ $interface->{SPEED} = $object->{Speed};
+ $interface->{MACADDR} = $object->{MACAddress};
+ $interface->{PNPDEVICEID} = $object->{PNPDeviceId};
# PhysicalAdapter only work on OS > XP
- if (defined $nic->PhysicalAdapter) {
- $interface->{VIRTUALDEV} = $nic->PhysicalAdapter ? 0 : 1;
+ if (defined $object->{PhysicalAdapter}) {
+ $interface->{VIRTUALDEV} = $object->{PhysicalAdapter} ? 0 : 1;
# http://forge.fusioninventory.org/issues/1166
} elsif ($interface->{description}
&& $interface->{description} =~ /RAS/
&& $interface->{description} =~ /Adapter/i) {
$interface->{VIRTUALDEV} = 1;
} else {
- $interface->{VIRTUALDEV} = $nic->PNPDeviceID =~ /^ROOT/ ? 1 : 0;
+ $interface->{VIRTUALDEV} = $object->{PNPDeviceId} =~ /^ROOT/ ? 1 : 0;
}
- if (defined $nic->AdapterType) {
- $interface->{TYPE} = $nic->AdapterType;
+ if (defined $object->{AdapterType}) {
+ $interface->{TYPE} = $object->{AdapterType};
$interface->{TYPE} =~ s/Ethernet.*/Ethernet/;
}
-
}
return @interfaces;
================================================================
Commit: 98f0ece8f48510caccd0424c4adcb7124c7c6fb8
https://github.com/fusinv/fusioninventory-agent/commit/98f0ece8f48510caccd0424c4adcb7124c7c6fb8
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-03-10 (Sat, 10 Mar 2012)
Changed paths:
A resources/win32/wmi/7-Win32_NetworkAdapter.wmi
A resources/win32/wmi/7-Win32_NetworkAdapterConfiguration.wmi
Log Message:
-----------
new wmi samples
diff --git a/resources/win32/wmi/7-Win32_NetworkAdapter.wmi b/resources/win32/wmi/7-Win32_NetworkAdapter.wmi
new file mode 100644
index 0000000..6d75607
Binary files /dev/null and b/resources/win32/wmi/7-Win32_NetworkAdapter.wmi differ
diff --git a/resources/win32/wmi/7-Win32_NetworkAdapterConfiguration.wmi b/resources/win32/wmi/7-Win32_NetworkAdapterConfiguration.wmi
new file mode 100644
index 0000000..0c42f79
Binary files /dev/null and b/resources/win32/wmi/7-Win32_NetworkAdapterConfiguration.wmi differ
================================================================
Commit: 498e98eeacc0f442bd790d23f998baaed08d4ad7
https://github.com/fusinv/fusioninventory-agent/commit/498e98eeacc0f442bd790d23f998baaed08d4ad7
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-03-10 (Sat, 10 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
Log Message:
-----------
unused variable
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index b7eb577..afe26e8 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -57,7 +57,6 @@ sub doInventory {
sub _getInterfaces {
- my @ip6s;
my @interfaces;
foreach my $object (getWmiObjects(
================================================================
Commit: 022845f0d8b5a9f410d1364504bf4cd77439054a
https://github.com/fusinv/fusioninventory-agent/commit/022845f0d8b5a9f410d1364504bf4cd77439054a
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-03-10 (Sat, 10 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
Log Message:
-----------
useless comment, wrong URL
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index afe26e8..7e1f9f6 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -7,7 +7,6 @@ use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Network;
use FusionInventory::Agent::Tools::Win32;
-# http://techtasks.com/code/viewbookcode/1417
sub isEnabled {
return 1;
}
================================================================
Commit: fb889f28c421c76a1d9afdcb3ba8235f6607ab89
https://github.com/fusinv/fusioninventory-agent/commit/fb889f28c421c76a1d9afdcb3ba8235f6607ab89
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-03-10 (Sat, 10 Mar 2012)
Changed paths:
M Changes
M lib/FusionInventory/Agent/Task/Inventory.pm
R resources/generic/dmidecode/windows-xppro
M t/inventory/generic/dmidecode/memory.t
M t/inventory/windows/cpu.t
M t/inventory/windows/memory.t
M t/tools/generic.t
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/Changes b/Changes
index 5f460b1..a152f51 100644
--- a/Changes
+++ b/Changes
@@ -59,7 +59,6 @@ Major changes:
Minor changes:
* Add the HARDWARE/CHASSIS_TYPE information
-* local inventory file name now has .xml extension (#211)
* Linux: report all IP addresses used by each interfaces (#854)
* HPUX: don't report unoccupied memory slots
* AIX: add LVM support
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index a0b3e1a..9c9aac7 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -82,7 +82,7 @@ sub run {
} elsif ($self->{target}->isa('FusionInventory::Agent::Target::Local')) {
my $format = $self->{target}->{format};
- my $extension = $format eq 'xml' ? '.xml' : '.html';
+ my $extension = $format eq 'xml' ? '.ocs' : '.html';
my $file =
$self->{config}->{local} .
"/" .
diff --git a/resources/generic/dmidecode/windows-xppro b/resources/generic/dmidecode/windows-xppro
deleted file mode 100644
index 6b999c7..0000000
--- a/resources/generic/dmidecode/windows-xppro
+++ /dev/null
@@ -1,586 +0,0 @@
-# dmidecode 2.11
-SMBIOS 2.4 present.
-57 structures occupying 2822 bytes.
-Table at 0x000F6570.
-
-Handle 0xDA00, DMI type 218, 251 bytes
-OEM-specific Type
- Header and Data:
- DA FB 00 DA B2 00 0D 5F 1F 37 40 7D 00 00 00 00
- 00 40 00 02 00 01 00 41 00 02 00 00 00 65 00 03
- 00 00 00 66 00 03 00 01 00 F1 00 04 00 00 00 F2
- 00 04 00 01 00 F3 00 04 00 02 00 0F 00 05 00 00
- 00 11 00 05 00 01 00 05 00 05 00 02 00 12 00 05
- 00 03 00 06 00 05 00 04 00 07 00 06 00 00 00 0B
- 00 06 00 01 00 0C 00 06 00 02 00 0D 00 06 00 03
- 00 89 01 07 00 00 00 8A 01 07 00 01 00 42 00 08
- 00 01 00 43 00 08 00 00 00 55 00 09 00 00 00 6D
- 00 09 00 01 00 16 02 09 00 02 00 98 01 09 00 03
- 00 0A 01 0A 00 01 00 0B 01 0A 00 00 00 2D 00 0B
- 00 02 00 6E 00 0B 00 01 00 2E 00 0B 00 00 00 11
- 01 0C 00 00 00 10 01 0C 00 01 00 F0 00 0D 00 01
- 00 ED 00 0D 00 00 00 41 01 0E 00 01 00 40 01 0E
- 00 00 00 47 01 0F 00 01 00 46 01 0F 00 00 00 4A
- 01 10 00 00 00 FF FF 00 00 00 00
-
-Handle 0xDA01, DMI type 218, 251 bytes
-OEM-specific Type
- Header and Data:
- DA FB 01 DA B2 00 0D 5F 1F 37 40 4B 01 10 00 01
- 00 04 02 11 00 00 00 05 02 11 00 01 00 02 02 12
- 00 00 00 03 02 12 00 01 00 52 01 13 00 01 00 53
- 01 13 00 00 00 80 01 14 00 01 00 7F 01 14 00 00
- 00 7C 01 15 00 01 00 7B 01 15 00 00 00 E8 02 16
- 00 00 00 E9 02 16 00 01 00 7E 01 17 00 01 00 7D
- 01 17 00 00 00 92 01 18 00 00 00 91 01 18 00 01
- 00 94 01 19 00 00 00 93 01 19 00 01 00 86 01 1A
- 00 01 00 85 01 1A 00 00 00 82 01 1B 00 01 00 81
- 01 1B 00 00 00 84 01 1C 00 01 00 83 01 1C 00 00
- 00 9B 01 1D 00 00 00 9C 01 1D 00 01 00 9D 01 1D
- 00 02 00 9E 01 1D 00 03 00 8D 01 1E 00 00 00 8E
- 01 1E 00 01 00 85 02 1F 00 00 00 86 02 1F 00 01
- 00 EA 00 20 00 00 00 EB 00 20 00 01 00 EC 00 20
- 00 02 00 A1 00 21 00 00 00 A3 00 21 00 01 00 28
- 00 22 00 00 00 FF FF 00 00 00 00
-
-Handle 0xDA02, DMI type 218, 251 bytes
-OEM-specific Type
- Header and Data:
- DA FB 02 DA B2 00 0D 5F 1F 37 40 29 00 22 00 01
- 00 2A 00 22 00 02 00 2B 00 23 00 00 00 2C 00 24
- 00 00 00 0E 01 25 00 01 00 0F 01 25 00 00 00 9B
- 00 26 00 01 00 9C 00 26 00 00 00 4D 01 27 00 01
- 00 4C 01 27 00 00 00 87 01 28 00 00 00 88 01 28
- 00 01 00 35 01 29 00 03 00 37 01 29 00 00 00 38
- 01 29 00 01 00 39 01 29 00 02 00 D9 01 2A 00 01
- 00 D8 01 2A 00 00 00 DF 01 2B 00 01 00 DE 01 2B
- 00 00 00 45 02 2C 00 00 00 44 02 2C 00 01 00 49
- 02 2D 00 00 00 48 02 2D 00 01 00 45 01 45 01 01
- 00 44 01 44 01 00 00 76 01 76 01 01 00 75 01 75
- 01 01 00 9F 00 9F 00 00 00 A0 00 A0 00 01 00 E1
- 01 E1 01 00 00 E3 01 E3 01 01 00 E2 01 E2 01 02
- 00 29 02 29 02 01 00 28 02 28 02 02 00 2A 02 2A
- 02 03 00 30 02 30 02 01 00 2F 02 2F 02 00 00 35
- 02 35 02 01 00 FF FF 00 00 00 00
-
-Handle 0xDA03, DMI type 218, 77 bytes
-OEM-specific Type
- Header and Data:
- DA 4D 03 DA B2 00 0D 5F 1F 37 40 36 02 36 02 00
- 00 37 02 37 02 02 00 4A 02 4A 02 01 00 0C 80 0C
- 80 01 00 6C 02 6C 02 01 00 6D 02 6D 02 00 00 01
- F0 01 F0 00 00 02 F0 02 F0 00 00 03 F0 03 F0 00
- 00 04 F0 04 F0 00 00 FF FF 00 00 00 00
-
-Handle 0x0000, DMI type 0, 24 bytes
-BIOS Information
- Vendor: Dell Inc.
- Version: A24
- Release Date: 08/19/2010
- Address: 0xF0000
- Runtime Size: 64 kB
- ROM Size: 1728 kB
- Characteristics:
- ISA is supported
- PCI is supported
- PC Card (PCMCIA) is supported
- PNP is supported
- BIOS is upgradeable
- BIOS shadowing is allowed
- Boot from CD is supported
- Selectable boot is supported
- 3.5"/720 kB floppy services are supported (int 13h)
- Print screen service is supported (int 5h)
- 8042 keyboard services are supported (int 9h)
- Serial services are supported (int 14h)
- Printer services are supported (int 17h)
- CGA/mono video services are supported (int 10h)
- ACPI is supported
- USB legacy is supported
- AGP is supported
- Smart battery is supported
- BIOS boot specification is supported
- Function key-initiated network boot is supported
- Targeted content distribution is supported
- BIOS Revision: 2.4
- Firmware Revision: 2.4
-
-Handle 0x0100, DMI type 1, 27 bytes
-System Information
- Manufacturer: Dell Inc.
- Product Name: Precision M4400
- Version: Not Specified
- Serial Number: HLG964J
- UUID: 44454C4C-4C00-1047-8039-C8C04F36344A
- Wake-up Type: Power Switch
- SKU Number: Not Specified
- Family:
-
-Handle 0x0200, DMI type 2, 9 bytes
-Base Board Information
- Manufacturer: Dell Inc.
- Product Name: 0P019G
- Version:
- Serial Number: .HLG964J.CN129618C52450.
- Asset Tag:
-
-Handle 0x0300, DMI type 3, 13 bytes
-Chassis Information
- Manufacturer: Dell Inc.
- Type: Portable
- Lock: Not Present
- Version: Not Specified
- Serial Number: HLG964J
- Asset Tag: Not Specified
- Boot-up State: Safe
- Power Supply State: Safe
- Thermal State: Safe
- Security Status: None
-
-Handle 0x0400, DMI type 4, 40 bytes
-Processor Information
- Socket Designation: Microprocessor
- Type: Central Processor
- Family: Core 2 Duo
- Manufacturer: Intel
- ID: 76 06 01 00 FF FB EB BF
- Signature: Type 0, Family 6, Model 23, Stepping 6
- Flags:
- FPU (Floating-point unit on-chip)
- VME (Virtual mode extension)
- DE (Debugging extension)
- PSE (Page size extension)
- TSC (Time stamp counter)
- MSR (Model specific registers)
- PAE (Physical address extension)
- MCE (Machine check exception)
- CX8 (CMPXCHG8 instruction supported)
- APIC (On-chip APIC hardware supported)
- SEP (Fast system call)
- MTRR (Memory type range registers)
- PGE (Page global enable)
- MCA (Machine check architecture)
- CMOV (Conditional move instruction supported)
- PAT (Page attribute table)
- PSE-36 (36-bit page size extension)
- CLFSH (CLFLUSH instruction supported)
- DS (Debug store)
- ACPI (ACPI supported)
- MMX (MMX technology supported)
- FXSR (FXSAVE and FXSTOR instructions supported)
- SSE (Streaming SIMD extensions)
- SSE2 (Streaming SIMD extensions 2)
- SS (Self-snoop)
- HTT (Multi-threading)
- TM (Thermal monitor supported)
- PBE (Pending break enabled)
- Version: Not Specified
- Voltage: 3.3 V
- External Clock: 266 MHz
- Max Speed: 2534 MHz
- Current Speed: 2534 MHz
- Status: Populated, Enabled
- Upgrade: None
- L1 Cache Handle: 0x0700
- L2 Cache Handle: 0x0701
- L3 Cache Handle: Not Provided
- Serial Number: Not Specified
- Asset Tag: Not Specified
- Part Number: Not Specified
- Core Count: 2
- Core Enabled: 2
- Thread Count: 2
- Characteristics:
- 64-bit capable
-
-Handle 0x0700, DMI type 7, 19 bytes
-Cache Information
- Socket Designation: Not Specified
- Configuration: Enabled, Not Socketed, Level 1
- Operational Mode: Write Back
- Location: Internal
- Installed Size: 128 kB
- Maximum Size: 128 kB
- Supported SRAM Types:
- Unknown
- Installed SRAM Type: Unknown
- Speed: Unknown
- Error Correction Type: None
- System Type: Data
- Associativity: 4-way Set-associative
-
-Handle 0x0701, DMI type 7, 19 bytes
-Cache Information
- Socket Designation: Not Specified
- Configuration: Enabled, Not Socketed, Level 2
- Operational Mode: Varies With Memory Address
- Location: Internal
- Installed Size: 6144 kB
- Maximum Size: 6144 kB
- Supported SRAM Types:
- Pipeline Burst
- Installed SRAM Type: Pipeline Burst
- Speed: 15 ns
- Error Correction Type: None
- System Type: Unified
- Associativity: Other
-
-Handle 0x0800, DMI type 8, 9 bytes
-Port Connector Information
- Internal Reference Designator: PARALLEL
- Internal Connector Type: None
- External Reference Designator: Not Specified
- External Connector Type: DB-25 female
- Port Type: Parallel Port PS/2
-
-Handle 0x0801, DMI type 8, 9 bytes
-Port Connector Information
- Internal Reference Designator: SERIAL1
- Internal Connector Type: None
- External Reference Designator: Not Specified
- External Connector Type: DB-9 male
- Port Type: Serial Port 16550A Compatible
-
-Handle 0x0804, DMI type 8, 9 bytes
-Port Connector Information
- Internal Reference Designator: USB
- Internal Connector Type: None
- External Reference Designator: Not Specified
- External Connector Type: Access Bus (USB)
- Port Type: USB
-
-Handle 0x0806, DMI type 8, 9 bytes
-Port Connector Information
- Internal Reference Designator: MONITOR
- Internal Connector Type: None
- External Reference Designator: Not Specified
- External Connector Type: DB-15 female
- Port Type: Video Port
-
-Handle 0x080B, DMI type 8, 9 bytes
-Port Connector Information
- Internal Reference Designator: FireWire
- Internal Connector Type: None
- External Reference Designator: Not Specified
- External Connector Type: IEEE 1394
- Port Type: Firewire (IEEE P1394)
-
-Handle 0x080C, DMI type 8, 9 bytes
-Port Connector Information
- Internal Reference Designator: Modem
- Internal Connector Type: None
- External Reference Designator: Not Specified
- External Connector Type: RJ-11
- Port Type: Modem Port
-
-Handle 0x080D, DMI type 8, 9 bytes
-Port Connector Information
- Internal Reference Designator: Ethernet
- Internal Connector Type: None
- External Reference Designator: Not Specified
- External Connector Type: RJ-45
- Port Type: Network Port
-
-Handle 0x0900, DMI type 9, 13 bytes
-System Slot Information
- Designation: PCMCIA 0
- Type: 32-bit PC Card (PCMCIA)
- Current Usage: Available
- Length: Other
- ID: Adapter 0, Socket 0
- Characteristics:
- 5.0 V is provided
- 3.3 V is provided
- PC Card-16 is supported
- Cardbus is supported
- Zoom Video is supported
- Modem ring resume is supported
-
-Handle 0x0A00, DMI type 10, 6 bytes
-On Board Device Information
- Type: Video
- Status: Enabled
- Description: NVIDIA Quadro FX 1700M
-
-Handle 0x0A01, DMI type 10, 6 bytes
-On Board Device Information
- Type: Sound
- Status: Enabled
- Description: IDT 92HD71
-
-Handle 0x0B00, DMI type 11, 5 bytes
-OEM Strings
- String 1: Dell System
- String 2: 5[0003]
- String 3: 13[PP04X]
-
-Handle 0x0D00, DMI type 13, 22 bytes
-BIOS Language Information
- Language Description Format: Long
- Installable Languages: 1
- en|US|iso8859-1
- Currently Installed Language: en|US|iso8859-1
-
-Handle 0x1000, DMI type 16, 15 bytes
-Physical Memory Array
- Location: System Board Or Motherboard
- Use: System Memory
- Error Correction Type: None
- Maximum Capacity: 8 GB
- Error Information Handle: Not Provided
- Number Of Devices: 2
-
-Handle 0x1100, DMI type 17, 27 bytes
-Memory Device
- Array Handle: 0x1000
- Error Information Handle: Not Provided
- Total Width: 64 bits
- Data Width: 64 bits
- Size: 2048 MB
- Form Factor: DIMM
- Set: None
- Locator: DIMM_A
- Bank Locator: Not Specified
- Type: DDR2
- Type Detail: Synchronous
- Speed: 800 MHz
- Manufacturer: 7F7FFE0000000000
- Serial Number: 14FA6621
- Asset Tag: 200840
- Part Number: EBE21UE8ACUA-8G-E
-
-Handle 0x1101, DMI type 17, 27 bytes
-Memory Device
- Array Handle: 0x1000
- Error Information Handle: Not Provided
- Total Width: 64 bits
- Data Width: 64 bits
- Size: 2048 MB
- Form Factor: DIMM
- Set: None
- Locator: DIMM_B
- Bank Locator: Not Specified
- Type: DDR2
- Type Detail: Synchronous
- Speed: 800 MHz
- Manufacturer: 7F7FFE0000000000
- Serial Number: AEF96621
- Asset Tag: 200840
- Part Number: EBE21UE8ACUA-8G-E
-
-Handle 0x1301, DMI type 19, 15 bytes
-Memory Array Mapped Address
- Starting Address: 0x00000000000
- Ending Address: 0x000FFFFFFFF
- Range Size: 4 GB
- Physical Array Handle: 0x1000
- Partition Width: 1
-
-Handle 0x1401, DMI type 20, 19 bytes
-Memory Device Mapped Address
- Starting Address: 0x00000000000
- Ending Address: 0x000FFFFFFFF
- Range Size: 4 GB
- Physical Device Handle: 0x1100
- Memory Array Mapped Address Handle: 0x1301
- Partition Row Position: 1
- Interleave Position: 1
- Interleaved Data Depth: 8
-
-Handle 0x1411, DMI type 126, 19 bytes
-Inactive
-
-Handle 0x1402, DMI type 20, 19 bytes
-Memory Device Mapped Address
- Starting Address: 0x00000000000
- Ending Address: 0x000FFFFFFFF
- Range Size: 4 GB
- Physical Device Handle: 0x1101
- Memory Array Mapped Address Handle: 0x1301
- Partition Row Position: 1
- Interleave Position: 2
- Interleaved Data Depth: 8
-
-Handle 0x1412, DMI type 126, 19 bytes
-Inactive
-
-Handle 0x1500, DMI type 21, 7 bytes
-Built-in Pointing Device
- Type: Touch Pad
- Interface: Bus Mouse
- Buttons: 2
-
-Handle 0x1600, DMI type 22, 26 bytes
-Portable Battery
- Location: Sys. Battery Bay
- Manufacturer: SMP
- Name: DELL HJ59008
- Design Capacity: 84000 mWh
- Design Voltage: 11100 mV
- SBDS Version: 1.0
- Maximum Error: 3%
- SBDS Serial Number: 02C7
- SBDS Manufacture Date: 2010-08-31
- SBDS Chemistry: LION
- OEM-specific Information: 0x00000001
-
-Handle 0x1601, DMI type 126, 26 bytes
-Inactive
-
-Handle 0x1B00, DMI type 27, 12 bytes
-Cooling Device
- Type: Fan
- Status: OK
- OEM-specific Information: 0x0000DD00
-
-Handle 0x1C00, DMI type 28, 20 bytes
-Temperature Probe
- Description: CPU Internal Temperature
- Location: Processor
- Status: OK
- Maximum Value: 127.0 deg C
- Minimum Value: 0.0 deg C
- Resolution: 1.000 deg C
- Tolerance: 0.5 deg C
- Accuracy: Unknown
- OEM-specific Information: 0x0000DC00
-
-Handle 0x2000, DMI type 32, 11 bytes
-System Boot Information
- Status: No errors detected
-
-Handle 0xB000, DMI type 176, 5 bytes
-OEM-specific Type
- Header and Data:
- B0 05 00 B0 3A
-
-Handle 0xB100, DMI type 177, 12 bytes
-OEM-specific Type
- Header and Data:
- B1 0C 00 B1 82 00 00 00 00 00 00 00
-
-Handle 0xB200, DMI type 178, 96 bytes
-OEM-specific Type
- Header and Data:
- B2 60 00 B2 07 01 0C 00 08 01 0A 00 09 01 0B 00
- 0A 01 12 00 3B 00 20 00 3C 00 1F 00 3D 00 0E 00
- 41 00 12 00 42 00 18 00 00 02 FF FF 4B 00 15 00
- 48 00 14 00 50 00 13 00 10 00 FF 00 11 00 FF 00
- 12 00 FF 00 13 00 FF 00 14 00 FF 00 1E 00 FF 00
- 1F 00 FF 00 20 00 FF 00 21 00 FF 00 22 00 FF 00
-
-Handle 0xD000, DMI type 208, 10 bytes
-OEM-specific Type
- Header and Data:
- D0 0A 00 D0 01 04 FE 00 50 02
-
-Handle 0xD100, DMI type 209, 12 bytes
-OEM-specific Type
- Header and Data:
- D1 0C 00 D1 00 00 00 03 04 07 80 05
-
-Handle 0xD200, DMI type 210, 12 bytes
-OEM-specific Type
- Header and Data:
- D2 0C 00 D2 00 00 06 03 06 80 04 05
-
-Handle 0xD800, DMI type 216, 9 bytes
-OEM-specific Type
- Header and Data:
- D8 09 00 D8 01 03 01 F0 03
- Strings:
- NVidia Corp.
-
- 62.94.8F.00.04
-
-
-Handle 0xD900, DMI type 217, 8 bytes
-OEM-specific Type
- Header and Data:
- D9 08 00 D9 01 02 01 03
- Strings:
- US-101
- Proprietary
-
-Handle 0xDB00, DMI type 219, 9 bytes
-OEM-specific Type
- Header and Data:
- DB 09 00 DB 03 01 02 03 FF
- Strings:
- System Device Bay
- Battery, CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
- DVD+/-RW
-
-Handle 0xDB01, DMI type 219, 9 bytes
-OEM-specific Type
- Header and Data:
- DB 09 01 DB 03 01 02 03 FF
- Strings:
- System eSATA Bay
- CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
- EMPTY
-
-Handle 0xDB02, DMI type 219, 9 bytes
-OEM-specific Type
- Header and Data:
- DB 09 02 DB 03 01 02 03 FF
- Strings:
- System eSATA Dock Bay
- CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
- EMPTY
-
-Handle 0x8100, DMI type 129, 8 bytes
-OEM-specific Type
- Header and Data:
- 81 08 00 81 01 01 02 01
- Strings:
- Intel_ASF
- Intel_ASF_001
-
-Handle 0x8200, DMI type 130, 20 bytes
-OEM-specific Type
- Header and Data:
- 82 14 00 82 24 41 4D 54 01 00 00 00 01 A5 0B 02
- 00 00 00 00
-
-Handle 0x8300, DMI type 131, 64 bytes
-OEM-specific Type
- Header and Data:
- 83 40 00 83 35 00 00 00 00 00 40 2A 0F 00 00 00
- F8 00 17 29 00 00 00 00 00 00 00 00 00 00 00 00
- 00 00 00 00 03 00 01 02 C8 00 F5 10 00 00 00 0C
- 00 00 00 00 28 00 00 00 76 50 72 6F 00 00 00 00
-
-Handle 0xDC00, DMI type 220, 22 bytes
-OEM-specific Type
- Header and Data:
- DC 16 00 DC 01 F0 00 00 02 F0 00 00 00 00 03 F0
- 04 F0 00 00 00 00
-
-Handle 0xDD00, DMI type 221, 19 bytes
-OEM-specific Type
- Header and Data:
- DD 13 00 DD 00 00 00 00 00 00 00 00 00 00 00 00
- 00 00 00
-
-Handle 0xD400, DMI type 212, 47 bytes
-OEM-specific Type
- Header and Data:
- D4 2F 00 D4 74 00 75 00 00 10 2D 2E 5C 00 78 BF
- 40 5D 00 78 BF 00 2D 01 1D EF 10 2E 01 1D EF 00
- 08 00 1D DF 00 03 00 1D DF 00 FF FF 00 00 00
-
-Handle 0xD401, DMI type 212, 17 bytes
-OEM-specific Type
- Header and Data:
- D4 11 01 D4 74 00 75 00 03 40 49 4A FF FF 00 00
- 00
-
-Handle 0xDE00, DMI type 222, 16 bytes
-OEM-specific Type
- Header and Data:
- DE 10 00 DE 01 02 FF FF 00 00 00 00 00 00 00 01
-
-Handle 0x7F00, DMI type 127, 4 bytes
-End Of Table
-
diff --git a/t/inventory/generic/dmidecode/memory.t b/t/inventory/generic/dmidecode/memory.t
index b2c713b..16c7c31 100755
--- a/t/inventory/generic/dmidecode/memory.t
+++ b/t/inventory/generic/dmidecode/memory.t
@@ -908,7 +908,7 @@ my %tests = (
MEMORYCORRECTION => 'None'
}
],
- 'windows-xppro' => [
+ 'windows-xp' => [
{
NUMSLOTS => 1,
SERIALNUMBER => '14FA6621',
diff --git a/t/inventory/windows/cpu.t b/t/inventory/windows/cpu.t
index ef03d46..5a24c8e 100755
--- a/t/inventory/windows/cpu.t
+++ b/t/inventory/windows/cpu.t
@@ -19,7 +19,7 @@ BEGIN {
use FusionInventory::Agent::Task::Inventory::Input::Win32::CPU;
my %tests = (
- 7 => [
+ '7' => [
{
ID => 'A7 06 02 00 FF FB EB BF',
NAME => 'Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz',
@@ -30,6 +30,62 @@ my %tests = (
THREAD => undef,
CORE => '4'
}
+ ],
+ '2003' => [
+ {
+ ID => 'BFEBFBFF00000F29',
+ NAME => 'Intel(R) Xeon(TM) CPU 3.06GHz',
+ SERIAL => undef,
+ MANUFACTURER => 'Intel',
+ DESCRIPTION => 'x86 Family 15 Model 2 Stepping 9',
+ SPEED => '3060',
+ THREAD => undef,
+ CORE => undef
+ },
+ {
+ ID => '0000000000000000',
+ NAME => 'Intel(R) Xeon(TM) CPU 3.06GHz',
+ SERIAL => undef,
+ MANUFACTURER => 'Intel',
+ DESCRIPTION => 'x86 Family 15 Model 2 Stepping 9',
+ SPEED => '3060',
+ THREAD => undef,
+ CORE => undef
+ }
+ ],
+ '2003SP2' => [
+ {
+ ID => '0FEBBBFF00010676',
+ NAME => 'Intel(R) Xeon(R) CPU E5440 @ 2.83GHz',
+ SERIAL => undef,
+ MANUFACTURER => 'Intel',
+ DESCRIPTION => 'x86 Family 6 Model 23 Stepping 6',
+ SPEED => '2830',
+ THREAD => undef,
+ CORE => undef
+ },
+ {
+ ID => '0FEBBBFF00000676',
+ NAME => 'Intel(R) Xeon(R) CPU E5440 @ 2.83GHz',
+ SERIAL => undef,
+ MANUFACTURER => 'Intel',
+ DESCRIPTION => 'x86 Family 6 Model 23 Stepping 6',
+ SPEED => '2830',
+ THREAD => undef,
+ CORE => undef
+ }
+ ],
+ 'xp' => [
+ {
+ ID => '76 06 01 00 FF FB EB BF',
+ NAME => 'Intel(R) Core(TM)2 Duo CPU T9400 @ 2.53GHz',
+ SERIAL => undef,
+ MANUFACTURER => 'Intel',
+ DESCRIPTION => 'x86 Family 6 Model 23 Stepping 6',
+ SPEED => '2530',
+ THREAD => '2',
+ CORE => '2'
+ }
]
);
@@ -48,10 +104,12 @@ foreach my $test (keys %tests) {
$module->mock(
'getCpusFromDmidecode',
sub {
+ my $file = "resources/generic/dmidecode/windows-$test";
return
+ -f $file ?
FusionInventory::Agent::Tools::Generic::getCpusFromDmidecode(
- file => "resources/generic/dmidecode/windows-$test"
- );
+ file => $file
+ ) : ();
}
);
diff --git a/t/inventory/windows/memory.t b/t/inventory/windows/memory.t
index c538344..88683fa 100755
--- a/t/inventory/windows/memory.t
+++ b/t/inventory/windows/memory.t
@@ -19,7 +19,7 @@ BEGIN {
use FusionInventory::Agent::Task::Inventory::Input::Win32::Memory;
my %tests = (
- 7 => [
+ '7' => [
{
NUMSLOTS => 0,
FORMFACTOR => 'DIMM',
diff --git a/t/tools/generic.t b/t/tools/generic.t
index 7ae2863..12090c8 100755
--- a/t/tools/generic.t
+++ b/t/tools/generic.t
@@ -4514,7 +4514,7 @@ my %dmidecode_tests = (
}
]
},
- 'windows-xppro' => {
+ 'windows-xp' => {
'32' => [
{
'Status' => 'No errors detected'
@@ -5935,7 +5935,7 @@ my %cpu_tests = (
CORE => undef
}
],
- 'windows-xppro' => [
+ 'windows-xp' => [
{
ID => '76 06 01 00 FF FB EB BF',
NAME => 'Core 2 Duo',
================================================================
Commit: 7236d723d48aee1d93f613113aaf7071848e5fd3
https://github.com/fusinv/fusioninventory-agent/commit/7236d723d48aee1d93f613113aaf7071848e5fd3
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-10 (Sat, 10 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Client.pm
Log Message:
-----------
Merge remote-tracking branch 'forge/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/HTTP/Client.pm b/lib/FusionInventory/Agent/HTTP/Client.pm
index 8c1940f..95cea96 100644
--- a/lib/FusionInventory/Agent/HTTP/Client.pm
+++ b/lib/FusionInventory/Agent/HTTP/Client.pm
@@ -48,7 +48,7 @@ sub new {
}
$self->{ua}->agent($FusionInventory::Agent::AGENT_STRING);
- $self->{ua}->timeout($params{timeout});
+ $self->{ua}->timeout($self->{timeout});
return $self;
}
================================================================
Commit: b63e3b9044987a9289b5cab9746a22524a3b42bf
https://github.com/fusinv/fusioninventory-agent/commit/b63e3b9044987a9289b5cab9746a22524a3b42bf
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-10 (Sat, 10 Mar 2012)
Changed paths:
M t/FusionInventory/Test/Utils.pm
Log Message:
-----------
support for list values
diff --git a/t/FusionInventory/Test/Utils.pm b/t/FusionInventory/Test/Utils.pm
index 9de910c..e2e5e17 100644
--- a/t/FusionInventory/Test/Utils.pm
+++ b/t/FusionInventory/Test/Utils.pm
@@ -61,8 +61,16 @@ sub loadWMIDump {
my $key = $1;
my $value = $2;
next unless $properties{$key};
- $value =~ s/&/&/g;
- $object->{$key} = $value;
+ if ($value =~ /{(".*")}/) {
+ # values list
+ my @values =
+ map { /"([^"]+)"/ }
+ split(/,/, $1);
+ $object->{$key} = \@values;
+ } else {
+ $value =~ s/&/&/g;
+ $object->{$key} = $value;
+ }
next;
}
================================================================
Commit: ab34b963fa0d64e0137b2aa0a1912e181f3d5d0f
https://github.com/fusinv/fusioninventory-agent/commit/ab34b963fa0d64e0137b2aa0a1912e181f3d5d0f
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-10 (Sat, 10 Mar 2012)
Changed paths:
A t/inventory/windows/networks.t
Log Message:
-----------
initial import
diff --git a/t/inventory/windows/networks.t b/t/inventory/windows/networks.t
new file mode 100755
index 0000000..0517ace
--- /dev/null
+++ b/t/inventory/windows/networks.t
@@ -0,0 +1,160 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use utf8;
+use lib 't';
+
+use English qw(-no_match_vars);
+use Test::More;
+use Test::MockModule;
+
+use FusionInventory::Test::Utils;
+
+BEGIN {
+ # use mock modules for non-available ones
+ push @INC, 't/fake/windows' if $OSNAME ne 'MSWin32';
+}
+
+use FusionInventory::Agent::Task::Inventory::Input::Win32::Networks;
+
+my %tests = (
+ 7 => [
+ {
+ MTU => undef,
+ MACADDR => undef,
+ STATUS => 'Up',
+ DESCRIPTION => 'WAN Miniport (SSTP)',
+ IPDHCP => undef
+ },
+ {
+ MTU => undef,
+ MACADDR => undef,
+ STATUS => 'Up',
+ DESCRIPTION => 'WAN Miniport (IKEv2)',
+ IPDHCP => undef
+ },
+ {
+ MTU => undef,
+ MACADDR => undef,
+ STATUS => 'Up',
+ DESCRIPTION => 'WAN Miniport (L2TP)',
+ IPDHCP => undef
+ },
+ {
+ MTU => undef,
+ MACADDR => undef,
+ STATUS => 'Up',
+ DESCRIPTION => 'WAN Miniport (PPTP)',
+ IPDHCP => undef
+ },
+ {
+ MTU => undef,
+ MACADDR => undef,
+ STATUS => 'Up',
+ DESCRIPTION => 'WAN Miniport (PPPOE)',
+ IPDHCP => undef
+ },
+ {
+ MTU => undef,
+ MACADDR => undef,
+ STATUS => 'Up',
+ DESCRIPTION => 'WAN Miniport (IPv6)',
+ IPDHCP => undef
+ },
+ {
+ MTU => undef,
+ MACADDR => undef,
+ STATUS => 'Up',
+ DESCRIPTION => 'WAN Miniport (Network Monitor)',
+ IPDHCP => undef
+ },
+ {
+ 'dns' => '192.168.0.254',
+ 'IPMASK6' => [
+ '64'
+ ],
+ 'IPMASK' => [
+ '255.255.255.0'
+ ],
+ 'IPGATEWAY' => '192.168.0.254',
+ MACADDR => 'F4:6D:04:97:2D:3E',
+ STATUS => 'Up',
+ 'IPADDRESS6' => [
+ 'fe80::311a:2127:dded:6618'
+ ],
+ IPDHCP => '192.168.0.254',
+ 'IPSUBNET' => [
+ '192.168.0.0'
+ ],
+ MTU => undef,
+ 'IPSUBNET6' => [],
+ DESCRIPTION => 'Realtek PCIe GBE Family Controller',
+ 'IPADDRESS' => [
+ '192.168.0.1'
+ ]
+ },
+ {
+ MTU => undef,
+ MACADDR => undef,
+ STATUS => 'Up',
+ DESCRIPTION => 'WAN Miniport (IP)',
+ IPDHCP => undef
+ },
+ {
+ MTU => undef,
+ MACADDR => undef,
+ STATUS => 'Up',
+ DESCRIPTION => 'Carte Microsoft ISATAP',
+ IPDHCP => undef
+ },
+ {
+ MTU => undef,
+ MACADDR => undef,
+ STATUS => 'Up',
+ DESCRIPTION => 'RAS Async Adapter',
+ IPDHCP => undef
+ },
+ {
+ MTU => undef,
+ MACADDR => undef,
+ STATUS => 'Up',
+ DESCRIPTION => 'Microsoft Teredo Tunneling Adapter',
+ IPDHCP => undef
+ },
+ {
+ MTU => undef,
+ MACADDR => '00:26:83:12:FB:0B',
+ STATUS => 'Up',
+ DESCRIPTION => "P\x{e9}riph\x{e9}rique Bluetooth (r\x{e9}seau personnel)",
+ IPDHCP => undef
+ },
+ {
+ MTU => undef,
+ MACADDR => undef,
+ STATUS => 'Up',
+ DESCRIPTION => 'Carte Microsoft ISATAP',
+ IPDHCP => undef
+ }
+ ],
+);
+
+plan tests => scalar keys %tests;
+
+my $module = Test::MockModule->new(
+ 'FusionInventory::Agent::Task::Inventory::Input::Win32::Networks'
+);
+
+foreach my $test (keys %tests) {
+ $module->mock(
+ 'getWmiObjects',
+ mockGetWmiObjects($test)
+ );
+
+ my @interfaces = FusionInventory::Agent::Task::Inventory::Input::Win32::Networks::_getInterfaces();
+ is_deeply(
+ \@interfaces,
+ $tests{$test},
+ "$test sample"
+ );
+}
================================================================
Commit: 1042eca6ce9af2e6f8be41f4ed1dabb945155573
https://github.com/fusinv/fusioninventory-agent/commit/1042eca6ce9af2e6f8be41f4ed1dabb945155573
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-10 (Sat, 10 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
M t/inventory/windows/networks.t
Log Message:
-----------
perform filtering directly in extraction function
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index 7e1f9f6..e8640ab 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -18,11 +18,6 @@ sub doInventory {
my (@gateways, @dns, @ips);
foreach my $interface (_getInterfaces()) {
- next if
- !$interface->{IPADDRESS} &&
- !$interface->{IPADDRESS6} &&
- !$interface->{MACADDR};
-
push @gateways, $interface->{IPGATEWAY}
if $interface->{IPGATEWAY};
@@ -133,7 +128,11 @@ sub _getInterfaces {
}
}
- return @interfaces;
+ # exclude pure virtual interfaces
+ return
+ grep { $_->{IPADDRESS} || $_->{IPADDRESS6} || $_->{MACADDR} }
+ @interfaces;
+
}
1;
diff --git a/t/inventory/windows/networks.t b/t/inventory/windows/networks.t
index 0517ace..a5aabf5 100755
--- a/t/inventory/windows/networks.t
+++ b/t/inventory/windows/networks.t
@@ -21,55 +21,6 @@ use FusionInventory::Agent::Task::Inventory::Input::Win32::Networks;
my %tests = (
7 => [
{
- MTU => undef,
- MACADDR => undef,
- STATUS => 'Up',
- DESCRIPTION => 'WAN Miniport (SSTP)',
- IPDHCP => undef
- },
- {
- MTU => undef,
- MACADDR => undef,
- STATUS => 'Up',
- DESCRIPTION => 'WAN Miniport (IKEv2)',
- IPDHCP => undef
- },
- {
- MTU => undef,
- MACADDR => undef,
- STATUS => 'Up',
- DESCRIPTION => 'WAN Miniport (L2TP)',
- IPDHCP => undef
- },
- {
- MTU => undef,
- MACADDR => undef,
- STATUS => 'Up',
- DESCRIPTION => 'WAN Miniport (PPTP)',
- IPDHCP => undef
- },
- {
- MTU => undef,
- MACADDR => undef,
- STATUS => 'Up',
- DESCRIPTION => 'WAN Miniport (PPPOE)',
- IPDHCP => undef
- },
- {
- MTU => undef,
- MACADDR => undef,
- STATUS => 'Up',
- DESCRIPTION => 'WAN Miniport (IPv6)',
- IPDHCP => undef
- },
- {
- MTU => undef,
- MACADDR => undef,
- STATUS => 'Up',
- DESCRIPTION => 'WAN Miniport (Network Monitor)',
- IPDHCP => undef
- },
- {
'dns' => '192.168.0.254',
'IPMASK6' => [
'64'
@@ -96,46 +47,11 @@ my %tests = (
},
{
MTU => undef,
- MACADDR => undef,
- STATUS => 'Up',
- DESCRIPTION => 'WAN Miniport (IP)',
- IPDHCP => undef
- },
- {
- MTU => undef,
- MACADDR => undef,
- STATUS => 'Up',
- DESCRIPTION => 'Carte Microsoft ISATAP',
- IPDHCP => undef
- },
- {
- MTU => undef,
- MACADDR => undef,
- STATUS => 'Up',
- DESCRIPTION => 'RAS Async Adapter',
- IPDHCP => undef
- },
- {
- MTU => undef,
- MACADDR => undef,
- STATUS => 'Up',
- DESCRIPTION => 'Microsoft Teredo Tunneling Adapter',
- IPDHCP => undef
- },
- {
- MTU => undef,
MACADDR => '00:26:83:12:FB:0B',
STATUS => 'Up',
- DESCRIPTION => "P\x{e9}riph\x{e9}rique Bluetooth (r\x{e9}seau personnel)",
+ DESCRIPTION => "Périphérique Bluetooth (réseau personnel)",
IPDHCP => undef
},
- {
- MTU => undef,
- MACADDR => undef,
- STATUS => 'Up',
- DESCRIPTION => 'Carte Microsoft ISATAP',
- IPDHCP => undef
- }
],
);
================================================================
Commit: 1d06b0f29e0d71001bbc9be8729ec2e4b43320ff
https://github.com/fusinv/fusioninventory-agent/commit/1d06b0f29e0d71001bbc9be8729ec2e4b43320ff
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-11 (Sun, 11 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
Log Message:
-----------
use upper case for description key
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index e8640ab..be02dee 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -114,9 +114,9 @@ sub _getInterfaces {
if (defined $object->{PhysicalAdapter}) {
$interface->{VIRTUALDEV} = $object->{PhysicalAdapter} ? 0 : 1;
# http://forge.fusioninventory.org/issues/1166
- } elsif ($interface->{description}
- && $interface->{description} =~ /RAS/
- && $interface->{description} =~ /Adapter/i) {
+ } elsif ($interface->{DESCRIPTION}
+ && $interface->{DESCRIPTION} =~ /RAS/
+ && $interface->{DESCRIPTION} =~ /Adapter/i) {
$interface->{VIRTUALDEV} = 1;
} else {
$interface->{VIRTUALDEV} = $object->{PNPDeviceId} =~ /^ROOT/ ? 1 : 0;
================================================================
Commit: e3b65f5c7fef6750bc4edda2029cd81769a43072
https://github.com/fusinv/fusioninventory-agent/commit/e3b65f5c7fef6750bc4edda2029cd81769a43072
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-11 (Sun, 11 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
Log Message:
-----------
grep call: Avoid warning regarding modified value
The message was:
[debug] unexpected error in FusionInventory::Agent::Task::Inventory::Input::Win3
2::Networks: Modification of a read-only value attempted at lib/FusionInventory/
Agent/Task/Inventory/Input/Win32/Networks.pm line 133.
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index be02dee..d360f78 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -130,7 +130,16 @@ sub _getInterfaces {
# exclude pure virtual interfaces
return
- grep { $_->{IPADDRESS} || $_->{IPADDRESS6} || $_->{MACADDR} }
+ grep {
+ ref($_) eq 'HASH' &&
+ (
+ (defined($_->{IPADDRESS}) && $_->{IPADDRESS})
+ ||
+ (defined($_->{IPADDRESS6}) && $_->{IPADDRESS6})
+ ||
+ (defined($_->{MACADDR}) && $_->{MACADDR})
+ )
+ }
@interfaces;
}
================================================================
Commit: fc5dce828c7f5fa52278da1326f217b1439a52bf
https://github.com/fusinv/fusioninventory-agent/commit/fc5dce828c7f5fa52278da1326f217b1439a52bf
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-11 (Sun, 11 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm
Log Message:
-----------
drop $seen since we can't get duplicated entry here
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm
index be4aef8..cff31ad 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm
@@ -6,8 +6,6 @@ use warnings;
use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Unix;
-my $seen;
-
sub isEnabled {
return 1;
}
@@ -66,9 +64,6 @@ sub doInventory {
$video->{RESOLUTION} =~ s/@.*//;
}
- # avoid duplicates
- next if $seen->{$video->{NAME}}++;
-
$inventory->addEntry(
section => 'VIDEOS',
entry => $video
================================================================
Commit: 727ae97d0c16a0e33c88ad63d2ec7020c3b580ff
https://github.com/fusinv/fusioninventory-agent/commit/727ae97d0c16a0e33c88ad63d2ec7020c3b580ff
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-11 (Sun, 11 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Networks.pm
Log Message:
-----------
$num used once
_check_eri seems to be used nowhere
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Networks.pm
index 90aaa59..772ee74 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Networks.pm
@@ -135,7 +135,7 @@ sub _check_nic {
# Function to test eri Fast-Ethernet (eri_).
sub _check_eri {
- my ($nic, $num) = @_;
+ my ($nic) = @_;
my $speed = getFirstMatch(
command => "/usr/sbin/ndd -get /dev/$nic link_speed",
================================================================
Commit: 8df47afb449dea96f50b80bf0cddcb2fc2392a66
https://github.com/fusinv/fusioninventory-agent/commit/8df47afb449dea96f50b80bf0cddcb2fc2392a66
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-11 (Sun, 11 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools.pm
Log Message:
-----------
avoid: Use of uninitialized value in alarm
Was appening when timeout was undef
diff --git a/lib/FusionInventory/Agent/Tools.pm b/lib/FusionInventory/Agent/Tools.pm
index bc61bbf..1a2bee1 100644
--- a/lib/FusionInventory/Agent/Tools.pm
+++ b/lib/FusionInventory/Agent/Tools.pm
@@ -443,8 +443,10 @@ sub runFunction {
my $result;
eval {
# set a timeout if needed
- local $SIG{ALRM} = sub { die "alarm\n" } if $params{timeout};
- alarm $params{timeout};
+ if ($params{timeout}) {
+ local $SIG{ALRM} = sub { die "alarm\n" };
+ alarm $params{timeout};
+ }
no strict 'refs'; ## no critic
$result = &{$params{module} . '::' . $params{function}}(
================================================================
Commit: 8b9adcda6fb16dd9e41f5b9cadaff79452cffedc
https://github.com/fusinv/fusioninventory-agent/commit/8b9adcda6fb16dd9e41f5b9cadaff79452cffedc
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Config.pm
Log Message:
-----------
Revert "don't access registry directly"
This reverts commit ebe3be416cd1d574f85978cf1170ef5617ad5dac.
Tools::Win32 pulls OLE.pm. We can't do that in the main process
or we will do a double free() at the end of the Inventory process.
commit: 6a3e41e648e47843ccf52aa49a1de5c6a6527d35
diff --git a/lib/FusionInventory/Agent/Config.pm b/lib/FusionInventory/Agent/Config.pm
index 763e8f4..df463b8 100644
--- a/lib/FusionInventory/Agent/Config.pm
+++ b/lib/FusionInventory/Agent/Config.pm
@@ -131,14 +131,20 @@ sub _loadDefaults {
sub _loadFromRegistry {
my ($self) = @_;
- FusionInventory::Agent::Tools::Win32->use();
- die "Failed to load FusionInventory::Agent::Tools::Win32: $EVAL_ERROR"
- if $EVAL_ERROR;
-
- my $settings = getRegistryKey(
- path => "HKEY_LOCAL_MACHINE/SOFTWARE/FusionInventory-Agent",
+ my $Registry;
+ Win32::TieRegistry->require();
+ Win32::TieRegistry->import(
+ Delimiter => '/',
+ ArrayValues => 0,
+ TiedRef => \$Registry
);
+ my $machKey = $Registry->Open('LMachine', {
+ Access => Win32::TieRegistry::KEY_READ()
+ }) or die "Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR";
+
+ my $settings = $machKey->{"SOFTWARE/FusionInventory-Agent"};
+
foreach my $rawKey (keys %$settings) {
next unless $rawKey =~ /^\/(\S+)/;
my $key = $1;
================================================================
Commit: bd8f5e37dd23f3ec993078722e6167b0c9726f31
https://github.com/fusinv/fusioninventory-agent/commit/bd8f5e37dd23f3ec993078722e6167b0c9726f31
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M tools/createExtLinks.sh
Log Message:
-----------
fixes for Windows
diff --git a/tools/createExtLinks.sh b/tools/createExtLinks.sh
index 41d5242..f7625a3 100755
--- a/tools/createExtLinks.sh
+++ b/tools/createExtLinks.sh
@@ -6,16 +6,16 @@ for task in Deploy SNMPQuery NetDiscovery ESX; do
taskLcName=`perl -e" print lc \"$task\""`
taskFile=$PWD/../agent-task-$taskLcName/lib/FusionInventory/Agent/Task/$task.pm
taskDir=$PWD/../agent-task-$taskLcName/lib/FusionInventory/Agent/Task/$task
- if [ -f $taskFile ] && [ ! -e lib/FusionInventory/Agent/Task/$task.pm ]; then
+ if [ -f "$taskFile" ] && [ ! -e lib/FusionInventory/Agent/Task/$task.pm ]; then
echo "create link for $task"
- ln -s $PWD/../agent-task-$taskLcName/lib/FusionInventory/Agent/Task/$task.pm lib/FusionInventory/Agent/Task/
- if [ -d $taskDir ] && [ ! -e lib/FusionInventory/Agent/Task/$task ]; then
- ln -s $PWD/../agent-task-$taskLcName/lib/FusionInventory/Agent/Task/$task lib/FusionInventory/Agent/Task/
+ ln -s "$PWD/../agent-task-$taskLcName/lib/FusionInventory/Agent/Task/$task.pm" lib/FusionInventory/Agent/Task/
+ if [ -d "$taskDir" ] && [ ! -e lib/FusionInventory/Agent/Task/$task ]; then
+ ln -s "$PWD/../agent-task-$taskLcName/lib/FusionInventory/Agent/Task/$task" lib/FusionInventory/Agent/Task/$task
fi
fi
done
if [ ! -e lib/FusionInventory/VMware ]; then
- ln -s $PWD/../agent-task-esx/lib/FusionInventory/VMware lib/FusionInventory/
+ ln -s "$PWD/../agent-task-esx/lib/FusionInventory/VMware" lib/FusionInventory/VMware
fi
if [ ! -e lib/FusionInventory/Agent/SNMP.pm ]; then
ln -s $PWD/../agent-task-netdiscovery/lib/FusionInventory/Agent/SNMP.pm lib/FusionInventory/Agent/SNMP.pm
================================================================
Commit: da47b464bdc6466414d57d4ff459a55871b5b0ef
https://github.com/fusinv/fusioninventory-agent/commit/da47b464bdc6466414d57d4ff459a55871b5b0ef
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Processes.pm
Log Message:
-----------
win32: do not run ps.exe from msysgit
Use the Win32 API instead to get the process list.
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Processes.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Processes.pm
index bc4288a..778a179 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Processes.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Processes.pm
@@ -9,6 +9,7 @@ use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Unix;
sub isEnabled {
+ return if $OSNAME eq 'MSWin32';
return canRun('ps');
}
================================================================
Commit: c391f5b0f6275aa6ad4b2fcfbd3e8ea40413f477
https://github.com/fusinv/fusioninventory-agent/commit/c391f5b0f6275aa6ad4b2fcfbd3e8ea40413f477
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Config.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
A resources/win32/wmi/7-Win32_NetworkAdapter.wmi
A resources/win32/wmi/7-Win32_NetworkAdapterConfiguration.wmi
M t/FusionInventory/Test/Utils.pm
A t/inventory/windows/networks.t
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Config.pm b/lib/FusionInventory/Agent/Config.pm
index 763e8f4..df463b8 100644
--- a/lib/FusionInventory/Agent/Config.pm
+++ b/lib/FusionInventory/Agent/Config.pm
@@ -131,14 +131,20 @@ sub _loadDefaults {
sub _loadFromRegistry {
my ($self) = @_;
- FusionInventory::Agent::Tools::Win32->use();
- die "Failed to load FusionInventory::Agent::Tools::Win32: $EVAL_ERROR"
- if $EVAL_ERROR;
-
- my $settings = getRegistryKey(
- path => "HKEY_LOCAL_MACHINE/SOFTWARE/FusionInventory-Agent",
+ my $Registry;
+ Win32::TieRegistry->require();
+ Win32::TieRegistry->import(
+ Delimiter => '/',
+ ArrayValues => 0,
+ TiedRef => \$Registry
);
+ my $machKey = $Registry->Open('LMachine', {
+ Access => Win32::TieRegistry::KEY_READ()
+ }) or die "Can't open HKEY_LOCAL_MACHINE key: $EXTENDED_OS_ERROR";
+
+ my $settings = $machKey->{"SOFTWARE/FusionInventory-Agent"};
+
foreach my $rawKey (keys %$settings) {
next unless $rawKey =~ /^\/(\S+)/;
my $key = $1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index c9e9acd..d360f78 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -3,17 +3,10 @@ package FusionInventory::Agent::Task::Inventory::Input::Win32::Networks;
use strict;
use warnings;
-use Win32::OLE qw(in CP_UTF8);
-use Win32::OLE::Const;
-use Win32::OLE::Enum;
-
use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Network;
use FusionInventory::Agent::Tools::Win32;
-Win32::OLE-> Option(CP=>CP_UTF8);
-
-# http://techtasks.com/code/viewbookcode/1417
sub isEnabled {
return 1;
}
@@ -22,53 +15,76 @@ sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
+ my (@gateways, @dns, @ips);
+
+ foreach my $interface (_getInterfaces()) {
+ push @gateways, $interface->{IPGATEWAY}
+ if $interface->{IPGATEWAY};
+
+ push @dns, $interface->{dns}
+ if $interface->{dns};
+
+ push @ips, @{$interface->{IPADDRESS}}
+ if $interface->{IPADDRESS};
+
+ delete $interface->{dns};
+
+ # flatten multivalued keys
+ foreach my $key (qw/IPADDRESS IPMASK IPSUBNET IPADDRESS6/) {
+ next unless $interface->{$key};
+ $interface->{$key} = join('/', @{$interface->{$key}});
+ }
+
+ $inventory->addEntry(
+ section => 'NETWORKS',
+ entry => $interface
+ );
+ }
+
+ $inventory->setHardware({
+ DEFAULTGATEWAY => join('/', uniq @gateways),
+ DNS => join('/', uniq @dns),
+ IPADDR => join('/', uniq @ips),
+ });
+
+}
- my $WMIService = Win32::OLE->GetObject(
- 'winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2'
- ) or die "WMI connection failed: " . Win32::OLE->LastError();
+sub _getInterfaces {
- my %ips;
- my @ip6s;
my @interfaces;
- my %defaultgateways;
- my %dns;
- my $nics = $WMIService->ExecQuery(
- 'SELECT * FROM Win32_NetworkAdapterConfiguration'
- );
- foreach my $nic (in $nics) {
+ foreach my $object (getWmiObjects(
+ class => 'Win32_NetworkAdapterConfiguration',
+ properties => [ qw/Index Description IPEnabled DHCPServer MACAddress
+ MTU DefaultIPGateway DNSServerSearchOrder IPAddress
+ IPSubnet/ ]
+ )) {
+
my $interface = {
- DESCRIPTION => $nic->Description,
- STATUS => $nic->IPEnabled ? "Up" : "Down",
- IPDHCP => $nic->DHCPServer,
- MACADDR => $nic->MACAddress,
- MTU => $nic->MTU
+ DESCRIPTION => $object->{Description},
+ STATUS => $object->{IPEnabled} ? "Up" : "Down",
+ IPDHCP => $object->{DHCPServer},
+ MACADDR => $object->{MACAddress},
+ MTU => $object->{MTU}
};
- foreach (@{$nic->DefaultIPGateway || []}) {
- $defaultgateways{$_} = 1;
- }
-
- if ($nic->DefaultIPGateway) {
- $interface->{IPGATEWAY} = $nic->DefaultIPGateway()->[0];
+ if ($object->{DefaultIPGateway}) {
+ $interface->{IPGATEWAY} = $object->{DefaultIPGateway}->[0];
}
- foreach (@{$nic->DNSServerSearchOrder || []}) {
- $dns{$_} = 1;
+ if ($object->{DNSServerSearchOrder}) {
+ $interface->{dns} = $object->{DNSServerSearchOrder}->[0];
}
- if ($nic->IPAddress) {
- foreach my $addrId (0..(@{$nic->IPAddress}-1)) {
- my $address = $nic->IPAddress->[$addrId];
- my $mask = $nic->IPSubnet->[$addrId];
+ if ($object->{IPAddress}) {
+ foreach my $address (@{$object->{IPAddress}}) {
+ my $mask = shift @{$object->{IPSubnet}};
if ($address =~ /$ip_address_pattern/) {
- $ips{$address}=1;
push @{$interface->{IPADDRESS}}, $address;
push @{$interface->{IPMASK}}, $mask;
push @{$interface->{IPSUBNET}},
getSubnetAddress($address, $mask);
} elsif ($address =~ /\S+/) {
- push @ip6s, $address;
push @{$interface->{IPADDRESS6}}, $address;
push @{$interface->{IPMASK6}}, $mask;
push @{$interface->{IPSUBNET6}},
@@ -77,63 +93,54 @@ sub doInventory {
}
}
- $interfaces[$nic->Index] = $interface;
+ $interfaces[$object->{Index}] = $interface;
}
- $nics = $WMIService->ExecQuery('SELECT * FROM Win32_NetworkAdapter');
- foreach my $nic (in $nics) {
- my $interface = $interfaces[$nic->Index];
-
+ foreach my $object (getWmiObjects(
+ class => 'Win32_NetworkAdapter',
+ properties => [ qw/Index PNPDeviceId Speed MACAddress PhysicalAdapter
+ AdapterType/ ]
+ )) {
# http://comments.gmane.org/gmane.comp.monitoring.fusion-inventory.devel/34
- next unless $nic->PNPDeviceID;
+ next unless $object->{PNPDeviceId};
+
+ my $interface = $interfaces[$object->{Index}];
- $interface->{SPEED} = $nic->Speed;
- $interface->{MACADDR} = $nic->MACAddress;
- $interface->{PNPDEVICEID} = $nic->PNPDeviceID;
+ $interface->{SPEED} = $object->{Speed};
+ $interface->{MACADDR} = $object->{MACAddress};
+ $interface->{PNPDEVICEID} = $object->{PNPDeviceId};
# PhysicalAdapter only work on OS > XP
- if (defined $nic->PhysicalAdapter) {
- $interface->{VIRTUALDEV} = $nic->PhysicalAdapter ? 0 : 1;
+ if (defined $object->{PhysicalAdapter}) {
+ $interface->{VIRTUALDEV} = $object->{PhysicalAdapter} ? 0 : 1;
# http://forge.fusioninventory.org/issues/1166
- } elsif ($interface->{description}
- && $interface->{description} =~ /RAS/
- && $interface->{description} =~ /Adapter/i) {
+ } elsif ($interface->{DESCRIPTION}
+ && $interface->{DESCRIPTION} =~ /RAS/
+ && $interface->{DESCRIPTION} =~ /Adapter/i) {
$interface->{VIRTUALDEV} = 1;
} else {
- $interface->{VIRTUALDEV} = $nic->PNPDeviceID =~ /^ROOT/ ? 1 : 0;
+ $interface->{VIRTUALDEV} = $object->{PNPDeviceId} =~ /^ROOT/ ? 1 : 0;
}
- if (defined $nic->AdapterType) {
- $interface->{TYPE} = $nic->AdapterType;
+ if (defined $object->{AdapterType}) {
+ $interface->{TYPE} = $object->{AdapterType};
$interface->{TYPE} =~ s/Ethernet.*/Ethernet/;
}
-
}
- foreach my $interface (@interfaces) {
-
- next if
- !$interface->{IPADDRESS} &&
- !$interface->{IPADDRESS6} &&
- !$interface->{MACADDR};
-
- # flatten multivalued keys
- foreach my $key (qw/IPADDRESS IPMASK IPSUBNET IPADDRESS6/) {
- next unless $interface->{$key};
- $interface->{$key} = join('/', @{$interface->{$key}});
- }
-
- $inventory->addEntry(
- section => 'NETWORKS',
- entry => $interface
- );
- }
-
- $inventory->setHardware({
- DEFAULTGATEWAY => join ('/',keys %defaultgateways),
- DNS => join('/', keys %dns),
- IPADDR => join('/', keys %ips),
- });
+ # exclude pure virtual interfaces
+ return
+ grep {
+ ref($_) eq 'HASH' &&
+ (
+ (defined($_->{IPADDRESS}) && $_->{IPADDRESS})
+ ||
+ (defined($_->{IPADDRESS6}) && $_->{IPADDRESS6})
+ ||
+ (defined($_->{MACADDR}) && $_->{MACADDR})
+ )
+ }
+ @interfaces;
}
diff --git a/resources/win32/wmi/7-Win32_NetworkAdapter.wmi b/resources/win32/wmi/7-Win32_NetworkAdapter.wmi
new file mode 100644
index 0000000..6d75607
Binary files /dev/null and b/resources/win32/wmi/7-Win32_NetworkAdapter.wmi differ
diff --git a/resources/win32/wmi/7-Win32_NetworkAdapterConfiguration.wmi b/resources/win32/wmi/7-Win32_NetworkAdapterConfiguration.wmi
new file mode 100644
index 0000000..0c42f79
Binary files /dev/null and b/resources/win32/wmi/7-Win32_NetworkAdapterConfiguration.wmi differ
diff --git a/t/FusionInventory/Test/Utils.pm b/t/FusionInventory/Test/Utils.pm
index 9de910c..e2e5e17 100644
--- a/t/FusionInventory/Test/Utils.pm
+++ b/t/FusionInventory/Test/Utils.pm
@@ -61,8 +61,16 @@ sub loadWMIDump {
my $key = $1;
my $value = $2;
next unless $properties{$key};
- $value =~ s/&/&/g;
- $object->{$key} = $value;
+ if ($value =~ /{(".*")}/) {
+ # values list
+ my @values =
+ map { /"([^"]+)"/ }
+ split(/,/, $1);
+ $object->{$key} = \@values;
+ } else {
+ $value =~ s/&/&/g;
+ $object->{$key} = $value;
+ }
next;
}
diff --git a/t/inventory/windows/networks.t b/t/inventory/windows/networks.t
new file mode 100755
index 0000000..a5aabf5
--- /dev/null
+++ b/t/inventory/windows/networks.t
@@ -0,0 +1,76 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use utf8;
+use lib 't';
+
+use English qw(-no_match_vars);
+use Test::More;
+use Test::MockModule;
+
+use FusionInventory::Test::Utils;
+
+BEGIN {
+ # use mock modules for non-available ones
+ push @INC, 't/fake/windows' if $OSNAME ne 'MSWin32';
+}
+
+use FusionInventory::Agent::Task::Inventory::Input::Win32::Networks;
+
+my %tests = (
+ 7 => [
+ {
+ 'dns' => '192.168.0.254',
+ 'IPMASK6' => [
+ '64'
+ ],
+ 'IPMASK' => [
+ '255.255.255.0'
+ ],
+ 'IPGATEWAY' => '192.168.0.254',
+ MACADDR => 'F4:6D:04:97:2D:3E',
+ STATUS => 'Up',
+ 'IPADDRESS6' => [
+ 'fe80::311a:2127:dded:6618'
+ ],
+ IPDHCP => '192.168.0.254',
+ 'IPSUBNET' => [
+ '192.168.0.0'
+ ],
+ MTU => undef,
+ 'IPSUBNET6' => [],
+ DESCRIPTION => 'Realtek PCIe GBE Family Controller',
+ 'IPADDRESS' => [
+ '192.168.0.1'
+ ]
+ },
+ {
+ MTU => undef,
+ MACADDR => '00:26:83:12:FB:0B',
+ STATUS => 'Up',
+ DESCRIPTION => "Périphérique Bluetooth (réseau personnel)",
+ IPDHCP => undef
+ },
+ ],
+);
+
+plan tests => scalar keys %tests;
+
+my $module = Test::MockModule->new(
+ 'FusionInventory::Agent::Task::Inventory::Input::Win32::Networks'
+);
+
+foreach my $test (keys %tests) {
+ $module->mock(
+ 'getWmiObjects',
+ mockGetWmiObjects($test)
+ );
+
+ my @interfaces = FusionInventory::Agent::Task::Inventory::Input::Win32::Networks::_getInterfaces();
+ is_deeply(
+ \@interfaces,
+ $tests{$test},
+ "$test sample"
+ );
+}
================================================================
Commit: 0f7768e3c6c17f9b288935e57c65d9e863f373ef
https://github.com/fusinv/fusioninventory-agent/commit/0f7768e3c6c17f9b288935e57c65d9e863f373ef
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
Log Message:
-----------
ignore net interfaces without PNPDEVICEID
Reported-by: Tomás Abad <tabad at sescam.jccm.es>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index d360f78..c26e84b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -131,7 +131,10 @@ sub _getInterfaces {
# exclude pure virtual interfaces
return
grep {
- ref($_) eq 'HASH' &&
+ ref($_) eq 'HASH'
+ &&
+ (defined($_->{PNPDEVICEID}) && $_->{PNPDEVICEID})
+ &&
(
(defined($_->{IPADDRESS}) && $_->{IPADDRESS})
||
================================================================
Commit: cfe4520208d9565d889e5a95786dc1be986fc3e8
https://github.com/fusinv/fusioninventory-agent/commit/cfe4520208d9565d889e5a95786dc1be986fc3e8
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
Log Message:
-----------
fix property name capitalization
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index c26e84b..28837e8 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -98,17 +98,17 @@ sub _getInterfaces {
foreach my $object (getWmiObjects(
class => 'Win32_NetworkAdapter',
- properties => [ qw/Index PNPDeviceId Speed MACAddress PhysicalAdapter
+ properties => [ qw/Index PNPDeviceID Speed MACAddress PhysicalAdapter
AdapterType/ ]
)) {
# http://comments.gmane.org/gmane.comp.monitoring.fusion-inventory.devel/34
- next unless $object->{PNPDeviceId};
+ next unless $object->{PNPDeviceID};
my $interface = $interfaces[$object->{Index}];
$interface->{SPEED} = $object->{Speed};
$interface->{MACADDR} = $object->{MACAddress};
- $interface->{PNPDEVICEID} = $object->{PNPDeviceId};
+ $interface->{PNPDEVICEID} = $object->{PNPDeviceID};
# PhysicalAdapter only work on OS > XP
if (defined $object->{PhysicalAdapter}) {
@@ -119,7 +119,7 @@ sub _getInterfaces {
&& $interface->{DESCRIPTION} =~ /Adapter/i) {
$interface->{VIRTUALDEV} = 1;
} else {
- $interface->{VIRTUALDEV} = $object->{PNPDeviceId} =~ /^ROOT/ ? 1 : 0;
+ $interface->{VIRTUALDEV} = $object->{PNPDeviceID} =~ /^ROOT/ ? 1 : 0;
}
if (defined $object->{AdapterType}) {
================================================================
Commit: fbfecbe2b296ff1bfe2e56f9cc709b630dfc8458
https://github.com/fusinv/fusioninventory-agent/commit/fbfecbe2b296ff1bfe2e56f9cc709b630dfc8458
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M t/inventory/windows/networks.t
Log Message:
-----------
fix expected results
diff --git a/t/inventory/windows/networks.t b/t/inventory/windows/networks.t
index a5aabf5..8415248 100755
--- a/t/inventory/windows/networks.t
+++ b/t/inventory/windows/networks.t
@@ -21,36 +21,34 @@ use FusionInventory::Agent::Task::Inventory::Input::Win32::Networks;
my %tests = (
7 => [
{
- 'dns' => '192.168.0.254',
- 'IPMASK6' => [
- '64'
- ],
- 'IPMASK' => [
- '255.255.255.0'
- ],
- 'IPGATEWAY' => '192.168.0.254',
+ 'dns' => '192.168.0.254',
+ IPMASK6 => [ '64' ],
+ IPMASK => [ '255.255.255.0' ],
+ IPGATEWAY => '192.168.0.254',
MACADDR => 'F4:6D:04:97:2D:3E',
STATUS => 'Up',
- 'IPADDRESS6' => [
- 'fe80::311a:2127:dded:6618'
- ],
+ IPADDRESS6 => [ 'fe80::311a:2127:dded:6618' ],
IPDHCP => '192.168.0.254',
- 'IPSUBNET' => [
- '192.168.0.0'
- ],
+ IPSUBNET => [ '192.168.0.0' ],
MTU => undef,
- 'IPSUBNET6' => [],
+ IPSUBNET6 => [],
DESCRIPTION => 'Realtek PCIe GBE Family Controller',
- 'IPADDRESS' => [
- '192.168.0.1'
- ]
+ IPADDRESS => [ '192.168.0.1' ],
+ VIRTUALDEV => 0,
+ SPEED => 100000000,
+ PNPDEVICEID => 'PCI\VEN_10EC&DEV_8168&SUBSYS_84321043&REV_06\4&87D54EE&0&00E5',
+ TYPE => 'Ethernet'
},
{
MTU => undef,
MACADDR => '00:26:83:12:FB:0B',
STATUS => 'Up',
DESCRIPTION => "Périphérique Bluetooth (réseau personnel)",
- IPDHCP => undef
+ IPDHCP => undef,
+ VIRTUALDEV => 0,
+ PNPDEVICEID => 'BTH\MS_BTHPAN\7&42D85A8&0&2',
+ TYPE => 'Ethernet',
+ SPEED => 0
},
],
);
================================================================
Commit: f03f53d7c9c997b47ecf62a66aade0cd5b7033cc
https://github.com/fusinv/fusioninventory-agent/commit/f03f53d7c9c997b47ecf62a66aade0cd5b7033cc
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
Log Message:
-----------
Revert "ignore net interfaces without PNPDEVICEID"
Hasty change, likely to be useless, as root cause was probably
fixed by commit cfe4520
This reverts commit 0f7768e3c6c17f9b288935e57c65d9e863f373ef.
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index 28837e8..9b70aa0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -131,10 +131,7 @@ sub _getInterfaces {
# exclude pure virtual interfaces
return
grep {
- ref($_) eq 'HASH'
- &&
- (defined($_->{PNPDEVICEID}) && $_->{PNPDEVICEID})
- &&
+ ref($_) eq 'HASH' &&
(
(defined($_->{IPADDRESS}) && $_->{IPADDRESS})
||
================================================================
Commit: 43a35df9a99448abf8ea5ce733fffaa160184c96
https://github.com/fusinv/fusioninventory-agent/commit/43a35df9a99448abf8ea5ce733fffaa160184c96
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
Log Message:
-----------
Revert "grep call: Avoid warning regarding modified value"
hast change, likely to be useless, as root cause was probably
fixed by commit cfe4520
This reverts commit e3b65f5c7fef6750bc4edda2029cd81769a43072.
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index 9b70aa0..70eb701 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -130,16 +130,7 @@ sub _getInterfaces {
# exclude pure virtual interfaces
return
- grep {
- ref($_) eq 'HASH' &&
- (
- (defined($_->{IPADDRESS}) && $_->{IPADDRESS})
- ||
- (defined($_->{IPADDRESS6}) && $_->{IPADDRESS6})
- ||
- (defined($_->{MACADDR}) && $_->{MACADDR})
- )
- }
+ grep { $_->{IPADDRESS} || $_->{IPADDRESS6} || $_->{MACADDR} }
@interfaces;
}
================================================================
Commit: 1f983f092f4c7825283146f8e82147e6f9659fd4
https://github.com/fusinv/fusioninventory-agent/commit/1f983f092f4c7825283146f8e82147e6f9659fd4
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Processes.pm
Log Message:
-----------
use a single return statement, for consistency
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Processes.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Processes.pm
index 778a179..e22c36c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Processes.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Processes.pm
@@ -9,8 +9,9 @@ use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Unix;
sub isEnabled {
- return if $OSNAME eq 'MSWin32';
- return canRun('ps');
+ return
+ $OSNAME ne 'MSWin32' &&
+ canRun('ps');
}
sub doInventory {
================================================================
Commit: 7aae4a541c3877861f25f8a978bf50643de15b86
https://github.com/fusinv/fusioninventory-agent/commit/7aae4a541c3877861f25f8a978bf50643de15b86
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M README
Log Message:
-----------
move ssl support paragraph at the end
diff --git a/README b/README
index 893398d..2883378 100644
--- a/README
+++ b/README
@@ -26,36 +26,6 @@ Additional optional programs:
- dmidecode, for hardware inventory
- lspci, for hardware inventory
-SSL support
------------
-LWP (also known as libwww-perl) is able to use either Crypt::SSLeay or
-IO::Socket::SSL transparently as underlying socket implementation for HTTPS
-support. However, only the second one is able to perform server certificate
-validation. As a consequence, the agent will refuse to use HTTPS, and exit
-immediatly if IO::Socket::SSL is not available, unless certificate checking has
-been explicitely disabled (--no-ssl-check command line parameter, or
-no-ssl-check configuration parameter).
-
-The SSL protocol version supported by the agent is dependant of openssl
-version. In particular, usage of specific certificate signature algorithms such
-as SHA requires at least openssl 0.9.8o, as it is supposed to be allowed
-starting from TLS 1.1 only. Failure to comply will result in error message such
-as:
-warning: TLS library problem: 14710:error:0D0C50A1:asn1 encoding
-routines:ASN1_item_verify:unknown message digest algorithm:a_verify.c:146:
-
-This can be controlled in the certificate itself:
-[guillaume at beria ~]$ openssl x509 -noout -text -in cert.pem | grep Signature
-Signature Algorithm: sha256WithRSAEncryption
-Signature Algorithm: sha256WithRSAEncryption
-
-The available workaround:
-- ensure server certificate complies with clients capacities, using controlled
- certificate generation parameters
-- ensure clients capacities matches server certificate properties, upgrading
- openssl and its perl bindings (Net::SSLeay)
-- disable server certificate checking on client
-
System-specific informations
----------------------------
On Solaris/SPARC, you must install sneep and record the Serial Number with it.
@@ -94,3 +64,34 @@ recipient for the result and a controller for this work (an OCS server, a GLPI
server, a local directory, etc...). Only the local inventory task is compatible
with all kind of targets, tough, all others require a GLPI server target, and
will get discarded for other kind of target.
+
+SSL support
+-----------
+LWP (also known as libwww-perl) is able to use either Crypt::SSLeay or
+IO::Socket::SSL transparently as underlying socket implementation for HTTPS
+support. However, only the second one is able to perform server certificate
+validation. As a consequence, the agent will refuse to use HTTPS, and exit
+immediatly if IO::Socket::SSL is not available, unless certificate checking has
+been explicitely disabled (--no-ssl-check command line parameter, or
+no-ssl-check configuration parameter).
+
+The SSL protocol version supported by the agent is dependant of openssl
+version. In particular, usage of specific certificate signature algorithms such
+as SHA requires at least openssl 0.9.8o, as it is supposed to be allowed
+starting from TLS 1.1 only. Failure to comply will result in error message such
+as:
+warning: TLS library problem: 14710:error:0D0C50A1:asn1 encoding
+routines:ASN1_item_verify:unknown message digest algorithm:a_verify.c:146:
+
+This can be controlled in the certificate itself:
+[guillaume at beria ~]$ openssl x509 -noout -text -in cert.pem | grep Signature
+Signature Algorithm: sha256WithRSAEncryption
+Signature Algorithm: sha256WithRSAEncryption
+
+The available workaround:
+- ensure server certificate complies with clients capacities, using controlled
+ certificate generation parameters
+- ensure clients capacities matches server certificate properties, upgrading
+ openssl and its perl bindings (Net::SSLeay)
+- disable server certificate checking on client
+
================================================================
Commit: 79442335d8229e9603096fd81cc13654ca341a9d
https://github.com/fusinv/fusioninventory-agent/commit/79442335d8229e9603096fd81cc13654ca341a9d
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M README
Log Message:
-----------
drop instructions related to development version installation
diff --git a/README b/README
index 2883378..98c3381 100644
--- a/README
+++ b/README
@@ -37,10 +37,6 @@ collected.
To avoid this situation, you can turn off the server, and run the agent with
user privilege, for example during the login.
-On Windows, if you don't want to use the installer for Windows you can follow
-the installation process avalailable from
-http://forge.fusioninventory.org/projects/fusioninventory-agent/wiki/RunAgentWin32.
-
Usage
-----
They are two different ways to run the agent:
================================================================
Commit: 9cb4274726551afbfbcc6256ca98904b80fab076
https://github.com/fusinv/fusioninventory-agent/commit/9cb4274726551afbfbcc6256ca98904b80fab076
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M README
Log Message:
-----------
better usage documentation
more emphaze about the cost vs benefit interest of running the
agent as a server.
diff --git a/README b/README
index 98c3381..27161a1 100644
--- a/README
+++ b/README
@@ -26,17 +26,6 @@ Additional optional programs:
- dmidecode, for hardware inventory
- lspci, for hardware inventory
-System-specific informations
-----------------------------
-On Solaris/SPARC, you must install sneep and record the Serial Number with it.
-Download it from http://www.sun.com/download/products.xml?id=4304155a.
-
-The Windows installer will run the agent with the SYSTEM account. If you use
-an user GPO to configure the printer, the information will hidden and so not
-collected.
-To avoid this situation, you can turn off the server, and run the agent with
-user privilege, for example during the login.
-
Usage
-----
They are two different ways to run the agent:
@@ -45,13 +34,23 @@ They are two different ways to run the agent:
service under Windows)
In the first case, the agent execution scheduling is controlled from local
-system, through cron under Unix, or scheduled tasks under Windows. In second
-case, the agent execution scheduling is controlled from GLPI server, as the
-agent runs regulary according to a parameter initially set in its
+system, and the memory footprint between agent executions is zero.
+
+In second case, the agent execution scheduling is controlled from GLPI server,
+as the agent runs regulary according to a parameter initially set in its
configuration (delaytime), overrided by the server at the first connection
(PROLOG_FREQ). Additionaly, the server may also initiate additional
out-of-schedule executions by sending HTTP requests if the web interface is
-used.
+used. However, it also mean you have a full perl interpreter loaded in memory
+constantly, and a network port open on your system with a process running with
+full system privileges attached to it.
+
+If you don't need to control agent execution from the server, and if you're
+able to periodically launch the agent without resorting to its internal
+scheduler, through cron on Unix systems, or scheduled tasks on Windows, you'd
+better use first execution mode. The various installation procedure may offer
+limited choice about initial configuration, but you should always be able to
+change it thereafter.
When executing, the agent tries to runs every available task for every
configured target. A task is a specific kind of work to perform (local
@@ -61,6 +60,23 @@ server, a local directory, etc...). Only the local inventory task is compatible
with all kind of targets, tough, all others require a GLPI server target, and
will get discarded for other kind of target.
+System-specific informations
+----------------------------
+On Solaris/SPARC, you must install sneep and record the Serial Number with it.
+Download it from http://www.sun.com/download/products.xml?id=4304155a.
+
+On Windows, we use an additional dmidecode binary shipped in the windows
+distribution to retrieve many informations not available otherwise, including
+fine-grained multi-cores CPUs identification. Unfortunatly, this binary is not
+reliable enough to be used on Windows 2003, leading to less precise
+inventories.
+
+On any system, the privilege level used to run the agent will change inventory
+results. Generally speaking, this means less results when run with lesser
+privileges. On Windows, tough, running agent with SYSTEM privileges, which is
+implicit if running as a service, does sometimes gives less results, especially
+for shared printers only visible from a user account.
+
SSL support
-----------
LWP (also known as libwww-perl) is able to use either Crypt::SSLeay or
================================================================
Commit: 132c67ad0344a35c057d3704b8f68da8e6bccee9
https://github.com/fusinv/fusioninventory-agent/commit/132c67ad0344a35c057d3704b8f68da8e6bccee9
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Storage.pm
Log Message:
-----------
more robust handling of serialized files (#1513)
- don't crash if an exception is thrown when reading it
- remove corrupted files
diff --git a/lib/FusionInventory/Agent/Storage.pm b/lib/FusionInventory/Agent/Storage.pm
index f5f4623..b38df9f 100644
--- a/lib/FusionInventory/Agent/Storage.pm
+++ b/lib/FusionInventory/Agent/Storage.pm
@@ -75,7 +75,17 @@ sub restore {
my $file = $self->_getFilePath(%params);
return unless -f $file;
- return retrieve($file);
+
+ my $result;
+ eval {
+ $result = retrieve($file);
+ };
+ if ($EVAL_ERROR) {
+ $self->{logger}->error("Can't read corrupted $file, removing it");
+ unlink $file;
+ }
+
+ return $result;
}
sub remove {
================================================================
Commit: 0144c49404e267d4949a5221288b3e0395ecd9a8
https://github.com/fusinv/fusioninventory-agent/commit/0144c49404e267d4949a5221288b3e0395ecd9a8
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-13 (Tue, 13 Mar 2012)
Changed paths:
M README
M lib/FusionInventory/Agent/Storage.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Processes.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
M t/inventory/windows/networks.t
M tools/createExtLinks.sh
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/README b/README
index 893398d..27161a1 100644
--- a/README
+++ b/README
@@ -26,6 +26,57 @@ Additional optional programs:
- dmidecode, for hardware inventory
- lspci, for hardware inventory
+Usage
+-----
+They are two different ways to run the agent:
+- as a temporary process, exiting after completing its run
+- as a permanent process, staying in memory permanently (daemon under Unix,
+ service under Windows)
+
+In the first case, the agent execution scheduling is controlled from local
+system, and the memory footprint between agent executions is zero.
+
+In second case, the agent execution scheduling is controlled from GLPI server,
+as the agent runs regulary according to a parameter initially set in its
+configuration (delaytime), overrided by the server at the first connection
+(PROLOG_FREQ). Additionaly, the server may also initiate additional
+out-of-schedule executions by sending HTTP requests if the web interface is
+used. However, it also mean you have a full perl interpreter loaded in memory
+constantly, and a network port open on your system with a process running with
+full system privileges attached to it.
+
+If you don't need to control agent execution from the server, and if you're
+able to periodically launch the agent without resorting to its internal
+scheduler, through cron on Unix systems, or scheduled tasks on Windows, you'd
+better use first execution mode. The various installation procedure may offer
+limited choice about initial configuration, but you should always be able to
+change it thereafter.
+
+When executing, the agent tries to runs every available task for every
+configured target. A task is a specific kind of work to perform (local
+inventory, network discovery, wake on lan, etc...), while a target is both a
+recipient for the result and a controller for this work (an OCS server, a GLPI
+server, a local directory, etc...). Only the local inventory task is compatible
+with all kind of targets, tough, all others require a GLPI server target, and
+will get discarded for other kind of target.
+
+System-specific informations
+----------------------------
+On Solaris/SPARC, you must install sneep and record the Serial Number with it.
+Download it from http://www.sun.com/download/products.xml?id=4304155a.
+
+On Windows, we use an additional dmidecode binary shipped in the windows
+distribution to retrieve many informations not available otherwise, including
+fine-grained multi-cores CPUs identification. Unfortunatly, this binary is not
+reliable enough to be used on Windows 2003, leading to less precise
+inventories.
+
+On any system, the privilege level used to run the agent will change inventory
+results. Generally speaking, this means less results when run with lesser
+privileges. On Windows, tough, running agent with SYSTEM privileges, which is
+implicit if running as a service, does sometimes gives less results, especially
+for shared printers only visible from a user account.
+
SSL support
-----------
LWP (also known as libwww-perl) is able to use either Crypt::SSLeay or
@@ -56,41 +107,3 @@ The available workaround:
openssl and its perl bindings (Net::SSLeay)
- disable server certificate checking on client
-System-specific informations
-----------------------------
-On Solaris/SPARC, you must install sneep and record the Serial Number with it.
-Download it from http://www.sun.com/download/products.xml?id=4304155a.
-
-The Windows installer will run the agent with the SYSTEM account. If you use
-an user GPO to configure the printer, the information will hidden and so not
-collected.
-To avoid this situation, you can turn off the server, and run the agent with
-user privilege, for example during the login.
-
-On Windows, if you don't want to use the installer for Windows you can follow
-the installation process avalailable from
-http://forge.fusioninventory.org/projects/fusioninventory-agent/wiki/RunAgentWin32.
-
-Usage
------
-They are two different ways to run the agent:
-- as a temporary process, exiting after completing its run
-- as a permanent process, staying in memory permanently (daemon under Unix,
- service under Windows)
-
-In the first case, the agent execution scheduling is controlled from local
-system, through cron under Unix, or scheduled tasks under Windows. In second
-case, the agent execution scheduling is controlled from GLPI server, as the
-agent runs regulary according to a parameter initially set in its
-configuration (delaytime), overrided by the server at the first connection
-(PROLOG_FREQ). Additionaly, the server may also initiate additional
-out-of-schedule executions by sending HTTP requests if the web interface is
-used.
-
-When executing, the agent tries to runs every available task for every
-configured target. A task is a specific kind of work to perform (local
-inventory, network discovery, wake on lan, etc...), while a target is both a
-recipient for the result and a controller for this work (an OCS server, a GLPI
-server, a local directory, etc...). Only the local inventory task is compatible
-with all kind of targets, tough, all others require a GLPI server target, and
-will get discarded for other kind of target.
diff --git a/lib/FusionInventory/Agent/Storage.pm b/lib/FusionInventory/Agent/Storage.pm
index f5f4623..b38df9f 100644
--- a/lib/FusionInventory/Agent/Storage.pm
+++ b/lib/FusionInventory/Agent/Storage.pm
@@ -75,7 +75,17 @@ sub restore {
my $file = $self->_getFilePath(%params);
return unless -f $file;
- return retrieve($file);
+
+ my $result;
+ eval {
+ $result = retrieve($file);
+ };
+ if ($EVAL_ERROR) {
+ $self->{logger}->error("Can't read corrupted $file, removing it");
+ unlink $file;
+ }
+
+ return $result;
}
sub remove {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Processes.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Processes.pm
index bc4288a..e22c36c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Processes.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Processes.pm
@@ -9,7 +9,9 @@ use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Unix;
sub isEnabled {
- return canRun('ps');
+ return
+ $OSNAME ne 'MSWin32' &&
+ canRun('ps');
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index d360f78..70eb701 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -98,17 +98,17 @@ sub _getInterfaces {
foreach my $object (getWmiObjects(
class => 'Win32_NetworkAdapter',
- properties => [ qw/Index PNPDeviceId Speed MACAddress PhysicalAdapter
+ properties => [ qw/Index PNPDeviceID Speed MACAddress PhysicalAdapter
AdapterType/ ]
)) {
# http://comments.gmane.org/gmane.comp.monitoring.fusion-inventory.devel/34
- next unless $object->{PNPDeviceId};
+ next unless $object->{PNPDeviceID};
my $interface = $interfaces[$object->{Index}];
$interface->{SPEED} = $object->{Speed};
$interface->{MACADDR} = $object->{MACAddress};
- $interface->{PNPDEVICEID} = $object->{PNPDeviceId};
+ $interface->{PNPDEVICEID} = $object->{PNPDeviceID};
# PhysicalAdapter only work on OS > XP
if (defined $object->{PhysicalAdapter}) {
@@ -119,7 +119,7 @@ sub _getInterfaces {
&& $interface->{DESCRIPTION} =~ /Adapter/i) {
$interface->{VIRTUALDEV} = 1;
} else {
- $interface->{VIRTUALDEV} = $object->{PNPDeviceId} =~ /^ROOT/ ? 1 : 0;
+ $interface->{VIRTUALDEV} = $object->{PNPDeviceID} =~ /^ROOT/ ? 1 : 0;
}
if (defined $object->{AdapterType}) {
@@ -130,16 +130,7 @@ sub _getInterfaces {
# exclude pure virtual interfaces
return
- grep {
- ref($_) eq 'HASH' &&
- (
- (defined($_->{IPADDRESS}) && $_->{IPADDRESS})
- ||
- (defined($_->{IPADDRESS6}) && $_->{IPADDRESS6})
- ||
- (defined($_->{MACADDR}) && $_->{MACADDR})
- )
- }
+ grep { $_->{IPADDRESS} || $_->{IPADDRESS6} || $_->{MACADDR} }
@interfaces;
}
diff --git a/t/inventory/windows/networks.t b/t/inventory/windows/networks.t
index a5aabf5..8415248 100755
--- a/t/inventory/windows/networks.t
+++ b/t/inventory/windows/networks.t
@@ -21,36 +21,34 @@ use FusionInventory::Agent::Task::Inventory::Input::Win32::Networks;
my %tests = (
7 => [
{
- 'dns' => '192.168.0.254',
- 'IPMASK6' => [
- '64'
- ],
- 'IPMASK' => [
- '255.255.255.0'
- ],
- 'IPGATEWAY' => '192.168.0.254',
+ 'dns' => '192.168.0.254',
+ IPMASK6 => [ '64' ],
+ IPMASK => [ '255.255.255.0' ],
+ IPGATEWAY => '192.168.0.254',
MACADDR => 'F4:6D:04:97:2D:3E',
STATUS => 'Up',
- 'IPADDRESS6' => [
- 'fe80::311a:2127:dded:6618'
- ],
+ IPADDRESS6 => [ 'fe80::311a:2127:dded:6618' ],
IPDHCP => '192.168.0.254',
- 'IPSUBNET' => [
- '192.168.0.0'
- ],
+ IPSUBNET => [ '192.168.0.0' ],
MTU => undef,
- 'IPSUBNET6' => [],
+ IPSUBNET6 => [],
DESCRIPTION => 'Realtek PCIe GBE Family Controller',
- 'IPADDRESS' => [
- '192.168.0.1'
- ]
+ IPADDRESS => [ '192.168.0.1' ],
+ VIRTUALDEV => 0,
+ SPEED => 100000000,
+ PNPDEVICEID => 'PCI\VEN_10EC&DEV_8168&SUBSYS_84321043&REV_06\4&87D54EE&0&00E5',
+ TYPE => 'Ethernet'
},
{
MTU => undef,
MACADDR => '00:26:83:12:FB:0B',
STATUS => 'Up',
DESCRIPTION => "Périphérique Bluetooth (réseau personnel)",
- IPDHCP => undef
+ IPDHCP => undef,
+ VIRTUALDEV => 0,
+ PNPDEVICEID => 'BTH\MS_BTHPAN\7&42D85A8&0&2',
+ TYPE => 'Ethernet',
+ SPEED => 0
},
],
);
diff --git a/tools/createExtLinks.sh b/tools/createExtLinks.sh
index 41d5242..f7625a3 100755
--- a/tools/createExtLinks.sh
+++ b/tools/createExtLinks.sh
@@ -6,16 +6,16 @@ for task in Deploy SNMPQuery NetDiscovery ESX; do
taskLcName=`perl -e" print lc \"$task\""`
taskFile=$PWD/../agent-task-$taskLcName/lib/FusionInventory/Agent/Task/$task.pm
taskDir=$PWD/../agent-task-$taskLcName/lib/FusionInventory/Agent/Task/$task
- if [ -f $taskFile ] && [ ! -e lib/FusionInventory/Agent/Task/$task.pm ]; then
+ if [ -f "$taskFile" ] && [ ! -e lib/FusionInventory/Agent/Task/$task.pm ]; then
echo "create link for $task"
- ln -s $PWD/../agent-task-$taskLcName/lib/FusionInventory/Agent/Task/$task.pm lib/FusionInventory/Agent/Task/
- if [ -d $taskDir ] && [ ! -e lib/FusionInventory/Agent/Task/$task ]; then
- ln -s $PWD/../agent-task-$taskLcName/lib/FusionInventory/Agent/Task/$task lib/FusionInventory/Agent/Task/
+ ln -s "$PWD/../agent-task-$taskLcName/lib/FusionInventory/Agent/Task/$task.pm" lib/FusionInventory/Agent/Task/
+ if [ -d "$taskDir" ] && [ ! -e lib/FusionInventory/Agent/Task/$task ]; then
+ ln -s "$PWD/../agent-task-$taskLcName/lib/FusionInventory/Agent/Task/$task" lib/FusionInventory/Agent/Task/$task
fi
fi
done
if [ ! -e lib/FusionInventory/VMware ]; then
- ln -s $PWD/../agent-task-esx/lib/FusionInventory/VMware lib/FusionInventory/
+ ln -s "$PWD/../agent-task-esx/lib/FusionInventory/VMware" lib/FusionInventory/VMware
fi
if [ ! -e lib/FusionInventory/Agent/SNMP.pm ]; then
ln -s $PWD/../agent-task-netdiscovery/lib/FusionInventory/Agent/SNMP.pm lib/FusionInventory/Agent/SNMP.pm
================================================================
Commit: 94a987381a348e92c5a08a3ed854ffb87d61476f
https://github.com/fusinv/fusioninventory-agent/commit/94a987381a348e92c5a08a3ed854ffb87d61476f
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-13 (Tue, 13 Mar 2012)
Changed paths:
M README
Log Message:
-----------
add description
diff --git a/README b/README
index 27161a1..39eb856 100644
--- a/README
+++ b/README
@@ -1,6 +1,17 @@
FusionInventory Agent
---------------------
+Description
+-----------
+The fusioinventory agent is a generic agent, running on each managed node. It
+can perform a certain number of actions, called tasks, according to its own
+execution plan, or on behalf of a GLPI server with fusioninventory plugin,
+acting as a control point.
+
+Two of these tasks are included in agent source distribution, local inventory
+and wake on lan. Other tasks are distributed separatly, excepted for binary
+distributions where they are bundled together.
+
Dependencies
------------
================================================================
Commit: d94cdcd542e803fb6044130b0f2f530985e7f5f9
https://github.com/fusinv/fusioninventory-agent/commit/d94cdcd542e803fb6044130b0f2f530985e7f5f9
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-13 (Tue, 13 Mar 2012)
Changed paths:
R AUTHORS
M README
Log Message:
-----------
include authors directly in README file
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644
index 200d1d5..0000000
--- a/AUTHORS
+++ /dev/null
@@ -1,9 +0,0 @@
-maintainer:
- Gonéri LE BOUDER <goneri at rulezlan.org>
-
-Copyright 2006-2010 OCS Inventory contributors
-Copyright 2010-2012 FusionInventory Team
-
-Website: http://www.fusioninventory.org
-
-Please read THANKS to get the list of the contributors
diff --git a/README b/README
index 39eb856..c802387 100644
--- a/README
+++ b/README
@@ -118,3 +118,15 @@ The available workaround:
openssl and its perl bindings (Net::SSLeay)
- disable server certificate checking on client
+Authors
+-------
+* Gonéri Le Bouder <goneri at rulezlan.org>>
+* Guillaume Rousse <guillomovitch at gmail.com>
+
+Copyright 2006-2010 OCS Inventory contributors
+Copyright 2010-2012 FusionInventory Team
+
+License
+-------
+This software is licensed under the terms of GPLv2+, see LICENSE file for
+details.
================================================================
Commit: 6bbb8569b8a81eb786d1f08fd4e892bd8c5af346
https://github.com/fusinv/fusioninventory-agent/commit/6bbb8569b8a81eb786d1f08fd4e892bd8c5af346
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-14 (Wed, 14 Mar 2012)
Changed paths:
A resources/win32/wmi/xp-Win32_NetworkAdapter.wmi
A resources/win32/wmi/xp-Win32_NetworkAdapterConfiguration.wmi
M t/inventory/windows/networks.t
Log Message:
-----------
add xp sample
diff --git a/resources/win32/wmi/xp-Win32_NetworkAdapter.wmi b/resources/win32/wmi/xp-Win32_NetworkAdapter.wmi
new file mode 100644
index 0000000..5452fbe
Binary files /dev/null and b/resources/win32/wmi/xp-Win32_NetworkAdapter.wmi differ
diff --git a/resources/win32/wmi/xp-Win32_NetworkAdapterConfiguration.wmi b/resources/win32/wmi/xp-Win32_NetworkAdapterConfiguration.wmi
new file mode 100644
index 0000000..354fb68
Binary files /dev/null and b/resources/win32/wmi/xp-Win32_NetworkAdapterConfiguration.wmi differ
diff --git a/t/inventory/windows/networks.t b/t/inventory/windows/networks.t
index 8415248..7294850 100755
--- a/t/inventory/windows/networks.t
+++ b/t/inventory/windows/networks.t
@@ -51,6 +51,102 @@ my %tests = (
SPEED => 0
},
],
+ xp => [
+ {
+ VIRTUALDEV => 1,
+ PNPDEVICEID => 'ROOT\\MS_PPTPMINIPORT\\0000',
+ MACADDR => '50:50:54:50:30:30',
+ STATUS => 'Up',
+ TYPE => "Red de \x{e1}rea extensa (WAN)",
+ SPEED => undef,
+ IPDHCP => undef,
+ MTU => undef,
+ DESCRIPTION => 'Minipuerto WAN (PPTP)'
+ },
+ {
+ VIRTUALDEV => 1,
+ PNPDEVICEID => 'ROOT\\MS_PPPOEMINIPORT\\0000',
+ MACADDR => '33:50:6F:45:30:30',
+ STATUS => 'Up',
+ TYPE => "Red de \x{e1}rea extensa (WAN)",
+ SPEED => undef,
+ IPDHCP => undef,
+ MTU => undef,
+ DESCRIPTION => 'Minipuerto WAN (PPPOE)'
+ },
+ {
+ VIRTUALDEV => 1,
+ PNPDEVICEID => 'ROOT\\MS_PSCHEDMP\\0000',
+ MACADDR => '26:0F:20:52:41:53',
+ STATUS => 'Up',
+ TYPE => 'Ethernet',
+ SPEED => undef,
+ IPDHCP => undef,
+ MTU => undef,
+ DESCRIPTION => 'Minipuerto del administrador de paquetes'
+ },
+ {
+ dns => '10.36.6.200',
+ IPMASK => [ '255.255.254.0' ],
+ IPGATEWAY => '10.36.6.1',
+ MACADDR => '00:14:C2:0D:B0:FB',
+ STATUS => 'Up',
+ IPDHCP => '10.36.6.200',
+ IPSUBNET => [ '10.36.6.0' ],
+ MTU => undef,
+ DESCRIPTION => 'Broadcom NetXtreme Gigabit Ethernet - Teefer2 Miniport',
+ 'IPADDRESS' => [ '10.36.6.30' ]
+ },
+ {
+ dns => '10.36.6.100',
+ IPMASK => [ '255.255.254.0' ],
+ IPGATEWAY => '10.36.6.1',
+ VIRTUALDEV => 0,
+ PNPDEVICEID => 'PCI\\VEN_14E4&DEV_1677&SUBSYS_3006103C&REV_01\\4&1886B119&0&00E1',
+ MACADDR => '00:14:C2:0D:B0:FB',
+ STATUS => 'Up',
+ TYPE => 'Ethernet',
+ SPEED => undef,
+ IPDHCP => '10.36.6.100',
+ IPSUBNET => [ '10.36.6.0' ],
+ MTU => undef,
+ DESCRIPTION => 'Broadcom NetXtreme Gigabit Ethernet - Teefer2 Miniport',
+ 'IPADDRESS' => [ '10.36.6.30' ]
+ },
+ {
+ VIRTUALDEV => 1,
+ PNPDEVICEID => 'ROOT\\MS_PSCHEDMP\\0002',
+ MACADDR => '00:14:C2:0D:B0:FB',
+ STATUS => 'Up',
+ TYPE => 'Ethernet',
+ SPEED => undef,
+ IPDHCP => undef,
+ MTU => undef,
+ DESCRIPTION => 'Minipuerto del administrador de paquetes'
+ },
+ {
+ VIRTUALDEV => 1,
+ PNPDEVICEID => 'ROOT\\SYMC_TEEFER2MP\\0000',
+ MACADDR => '00:14:C2:0D:B0:FB',
+ STATUS => 'Up',
+ TYPE => 'Ethernet',
+ SPEED => undef,
+ IPDHCP => undef,
+ MTU => undef,
+ DESCRIPTION => 'Teefer2 Miniport'
+ },
+ {
+ VIRTUALDEV => 1,
+ PNPDEVICEID => 'ROOT\\SYMC_TEEFER2MP\\0002',
+ MACADDR => '26:0F:20:52:41:53',
+ STATUS => 'Up',
+ TYPE => 'Ethernet',
+ SPEED => undef,
+ IPDHCP => undef,
+ MTU => undef,
+ DESCRIPTION => 'Teefer2 Miniport'
+ }
+ ]
);
plan tests => scalar keys %tests;
================================================================
Commit: 75cf44f420850cdc49f7a58df48a005803a9ff2f
https://github.com/fusinv/fusioninventory-agent/commit/75cf44f420850cdc49f7a58df48a005803a9ff2f
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-14 (Wed, 14 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
Log Message:
-----------
exclude empty slots
windows interfaces indexes don't mandatorily start from 0, and may leave
empty slots also
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index 70eb701..580e391 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -128,9 +128,9 @@ sub _getInterfaces {
}
}
- # exclude pure virtual interfaces
return
grep { $_->{IPADDRESS} || $_->{IPADDRESS6} || $_->{MACADDR} }
+ grep { $_ } # exclude slots left empty by indexed access
@interfaces;
}
================================================================
Commit: f9c2c5cbc7ac92b39a078f6f40e86356708cca23
https://github.com/fusinv/fusioninventory-agent/commit/f9c2c5cbc7ac92b39a078f6f40e86356708cca23
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-14 (Wed, 14 Mar 2012)
Changed paths:
A t/06spelling.t
Log Message:
-----------
initial import
diff --git a/t/06spelling.t b/t/06spelling.t
new file mode 100755
index 0000000..38d8723
--- /dev/null
+++ b/t/06spelling.t
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use Test::More;
+use English qw(-no_match_vars);
+
+if (!$ENV{TEST_AUTHOR}) {
+ my $msg = 'Author test. Set $ENV{TEST_AUTHOR} to a true value to run.';
+ plan(skip_all => $msg);
+}
+
+eval { require Test::Pod::Spelling::CommonMistakes; };
+
+if ($EVAL_ERROR) {
+ plan(
+ skip_all =>
+ 'Test::Pod::Spelling::CommonMistakes required to check speeling'
+ );
+}
+
+Test::Pod::Spelling::CommonMistakes::all_pod_files_ok();
================================================================
Commit: 5af33e69e9b9a6ce20fcea02c50cbeddc9defcf2
https://github.com/fusinv/fusioninventory-agent/commit/5af33e69e9b9a6ce20fcea02c50cbeddc9defcf2
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-14 (Wed, 14 Mar 2012)
Changed paths:
M fusioninventory-agent
M lib/FusionInventory/Agent/HTTP/Server.pm
M lib/FusionInventory/Agent/Task/Inventory.pm
Log Message:
-----------
fix some spelling issues
diff --git a/fusioninventory-agent b/fusioninventory-agent
index f844aa1..a1ec3bb 100755
--- a/fusioninventory-agent
+++ b/fusioninventory-agent
@@ -269,9 +269,9 @@ The agent will launch each modules and pass the list of options found in the
PROLOG RESP as parameter. The module can send information directly to the
server (inventory, SNMP scan result, etc)
-=head2 Windows service or Deamon mode
+=head2 Server mode (Windows service or Unix daemon)
-In deamon mode, the agent wait during a period between the last PROLOG and
+In server mode, the agent wait during a period between the last PROLOG and
PROLOG_FREQ. If PROLOG_FREQ is not set, it will use --delaytime value.
The default value is 3600.
diff --git a/lib/FusionInventory/Agent/HTTP/Server.pm b/lib/FusionInventory/Agent/HTTP/Server.pm
index 001033e..4ef83c9 100644
--- a/lib/FusionInventory/Agent/HTTP/Server.pm
+++ b/lib/FusionInventory/Agent/HTTP/Server.pm
@@ -362,7 +362,7 @@ the directory where HTML templates and static files are stored
=item I<ip>
-the network adress to listen to (default: all)
+the network address to listen to (default: all)
=item I<port>
@@ -370,7 +370,7 @@ the network port to listen to
=item I<trust>
-an IP adress or an IP adress range from which to trust incoming requests
+an IP address or an IP address range from which to trust incoming requests
without authentication token (default: none)
=back
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index 9c9aac7..98984f0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -364,4 +364,4 @@ FusionInventory::Agent::Task::Inventory - Inventory task for FusionInventory
=head1 DESCRIPTION
-This task extract various hardware and software informations on the agent host.
+This task extract various hardware and software information on the agent host.
================================================================
Commit: 85709eafee2be6048b12fe8fc5d705f26360c30b
https://github.com/fusinv/fusioninventory-agent/commit/85709eafee2be6048b12fe8fc5d705f26360c30b
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-14 (Wed, 14 Mar 2012)
Changed paths:
M t/05var.t
Log Message:
-----------
not needed anymore
diff --git a/t/05var.t b/t/05var.t
index 2f1896b..9fb4a19 100644
--- a/t/05var.t
+++ b/t/05var.t
@@ -24,6 +24,6 @@ if ($EVAL_ERROR) {
}
Test::Vars::all_vars_ok(
- ignore_vars => { '$i' => 1, '%params' => 1, '$class' => 1 }
+ ignore_vars => { '%params' => 1, '$class' => 1 }
);
================================================================
Commit: 4b791ab708b947c425a1e0253544dc2cf18e670d
https://github.com/fusinv/fusioninventory-agent/commit/4b791ab708b947c425a1e0253544dc2cf18e670d
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-15 (Thu, 15 Mar 2012)
Changed paths:
M t/02critic.t
M t/03pod.t
M t/04pod-coverage.t
M t/05var.t
M t/06spelling.t
Log Message:
-----------
various small syntax harmonisation
diff --git a/t/02critic.t b/t/02critic.t
index 3f753f5..bd3a677 100755
--- a/t/02critic.t
+++ b/t/02critic.t
@@ -2,22 +2,18 @@
use strict;
use warnings;
+
use Test::More;
use English qw(-no_match_vars);
-if (!$ENV{TEST_AUTHOR}) {
- my $msg = 'Author test. Set $ENV{TEST_AUTHOR} to a true value to run.';
- plan(skip_all => $msg);
-}
+plan(skip_all => 'Author test, set $ENV{TEST_AUTHOR} to a true value to run')
+ if !$ENV{TEST_AUTHOR};
eval { require Test::Perl::Critic; };
-
-if ($EVAL_ERROR) {
- my $msg = 'Test::Perl::Critic required to criticise code';
- plan(skip_all => $msg);
-}
+plan(skip_all => 'Test::Perl::Critic required') if $EVAL_ERROR;
my $config = File::Spec->catfile('t', 'perlcriticrc');
Test::Perl::Critic->import(-profile => $config);
+
all_critic_ok();
diff --git a/t/03pod.t b/t/03pod.t
index 98871db..af82d01 100755
--- a/t/03pod.t
+++ b/t/03pod.t
@@ -2,20 +2,16 @@
use strict;
use warnings;
+
use Test::More;
use English qw(-no_match_vars);
-if (!$ENV{TEST_AUTHOR}) {
- my $msg = 'Author test. Set $ENV{TEST_AUTHOR} to a true value to run.';
- plan(skip_all => $msg);
-}
+plan(skip_all => 'Author test, set $ENV{TEST_AUTHOR} to a true value to run')
+ if !$ENV{TEST_AUTHOR};
eval { require Test::Pod; };
-
-if ($EVAL_ERROR) {
- my $msg = 'Test::Pod required to check pod';
- plan(skip_all => $msg);
-}
+plan(skip_all => 'Test::Pod required') if $EVAL_ERROR;
Test::Pod->import();
+
all_pod_files_ok();
diff --git a/t/04pod-coverage.t b/t/04pod-coverage.t
index bc59126..d1c35c1 100755
--- a/t/04pod-coverage.t
+++ b/t/04pod-coverage.t
@@ -1,29 +1,19 @@
#!/usr/bin/perl
-# $Id: pod-coverage.t 1580 2007-03-22 13:38:55Z guillomovitch $
use strict;
use warnings;
+use lib 't';
use Test::More;
use English qw(-no_match_vars);
-use lib 't';
-
-if (!$ENV{TEST_AUTHOR}) {
- my $msg = 'Author test. Set $ENV{TEST_AUTHOR} to a true value to run.';
- plan(skip_all => $msg);
-}
+plan(skip_all => 'Author test, set $ENV{TEST_AUTHOR} to a true value to run')
+ if !$ENV{TEST_AUTHOR};
eval { require Test::Pod::Coverage; };
-
-if ($EVAL_ERROR) {
- my $msg = 'Test::Pod::Coverage required to check pod coverage';
- plan(skip_all => $msg);
-}
+plan(skip_all => 'Test::Pod::Coverage required') if $EVAL_ERROR;
Test::Pod::Coverage->import();
-
-# use mock modules for non-available ones
if ($OSNAME eq 'MSWin32') {
push @INC, 't/fake/unix';
} else {
@@ -31,9 +21,7 @@ if ($OSNAME eq 'MSWin32') {
}
my @modules = grep { filter($_) } all_modules('lib');
-
plan tests => scalar @modules;
-
foreach my $module (@modules) {
pod_coverage_ok(
$module,
diff --git a/t/05var.t b/t/05var.t
index 9fb4a19..3ede00e 100644
--- a/t/05var.t
+++ b/t/05var.t
@@ -2,28 +2,23 @@
use strict;
use warnings;
+
use Test::More;
use English qw(-no_match_vars);
-if (!$ENV{TEST_AUTHOR}) {
- my $msg = 'Author test. Set $ENV{TEST_AUTHOR} to a true value to run.';
- plan(skip_all => $msg);
-}
+plan(skip_all => 'Author test, set $ENV{TEST_AUTHOR} to a true value to run')
+ if !$ENV{TEST_AUTHOR};
-# use mock modules for non-available ones
+eval { require Test::Vars; };
+plan(skip_all => 'Test::Vars required') if $EVAL_ERROR;
+
+Test::Vars->import();
if ($OSNAME eq 'MSWin32') {
push @INC, 't/fake/unix';
} else {
push @INC, 't/fake/windows';
}
-eval { require Test::Vars; };
-
-if ($EVAL_ERROR) {
- plan(skip_all => 'Test::Vars required to validate the code');
-}
-
-Test::Vars::all_vars_ok(
+all_vars_ok(
ignore_vars => { '%params' => 1, '$class' => 1 }
);
-
diff --git a/t/06spelling.t b/t/06spelling.t
index 38d8723..b035de9 100755
--- a/t/06spelling.t
+++ b/t/06spelling.t
@@ -2,21 +2,16 @@
use strict;
use warnings;
+
use Test::More;
use English qw(-no_match_vars);
-if (!$ENV{TEST_AUTHOR}) {
- my $msg = 'Author test. Set $ENV{TEST_AUTHOR} to a true value to run.';
- plan(skip_all => $msg);
-}
+plan(skip_all => 'Author test, set $ENV{TEST_AUTHOR} to a true value to run')
+ if !$ENV{TEST_AUTHOR};
eval { require Test::Pod::Spelling::CommonMistakes; };
+plan(skip_all => 'Test::Pod::Spelling::CommonMistakes required') if $EVAL_ERROR;
-if ($EVAL_ERROR) {
- plan(
- skip_all =>
- 'Test::Pod::Spelling::CommonMistakes required to check speeling'
- );
-}
+Test::Pod::Spelling::CommonMistakes->import();
-Test::Pod::Spelling::CommonMistakes::all_pod_files_ok();
+all_pod_files_ok();
================================================================
Commit: b3e57a284ac4e16c9d679fc444ea70f05e3dbe90
https://github.com/fusinv/fusioninventory-agent/commit/b3e57a284ac4e16c9d679fc444ea70f05e3dbe90
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-15 (Thu, 15 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
Log Message:
-----------
don't set mac address twice
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index 580e391..8670f6d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -107,7 +107,6 @@ sub _getInterfaces {
my $interface = $interfaces[$object->{Index}];
$interface->{SPEED} = $object->{Speed};
- $interface->{MACADDR} = $object->{MACAddress};
$interface->{PNPDEVICEID} = $object->{PNPDeviceID};
# PhysicalAdapter only work on OS > XP
================================================================
Commit: ffcdce484ca969e74e9d0322862efbe0703a85f1
https://github.com/fusinv/fusioninventory-agent/commit/ffcdce484ca969e74e9d0322862efbe0703a85f1
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-15 (Thu, 15 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
M t/inventory/windows/networks.t
Log Message:
-----------
don't use configuration as interface (close #1517)
Network configuration WMI objects seems to live forever in Windows
state, and they should only be used as additional information source,
not to create interface entries.
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index 8670f6d..58314a7 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -51,16 +51,16 @@ sub doInventory {
sub _getInterfaces {
- my @interfaces;
+ my @configurations;
foreach my $object (getWmiObjects(
class => 'Win32_NetworkAdapterConfiguration',
- properties => [ qw/Index Description IPEnabled DHCPServer MACAddress
+ properties => [ qw/Index Description IPEnabled DHCPServer MACAddress
MTU DefaultIPGateway DNSServerSearchOrder IPAddress
IPSubnet/ ]
)) {
- my $interface = {
+ my $configuration = {
DESCRIPTION => $object->{Description},
STATUS => $object->{IPEnabled} ? "Up" : "Down",
IPDHCP => $object->{DHCPServer},
@@ -69,45 +69,66 @@ sub _getInterfaces {
};
if ($object->{DefaultIPGateway}) {
- $interface->{IPGATEWAY} = $object->{DefaultIPGateway}->[0];
+ $configuration->{IPGATEWAY} = $object->{DefaultIPGateway}->[0];
}
if ($object->{DNSServerSearchOrder}) {
- $interface->{dns} = $object->{DNSServerSearchOrder}->[0];
+ $configuration->{dns} = $object->{DNSServerSearchOrder}->[0];
}
if ($object->{IPAddress}) {
foreach my $address (@{$object->{IPAddress}}) {
my $mask = shift @{$object->{IPSubnet}};
if ($address =~ /$ip_address_pattern/) {
- push @{$interface->{IPADDRESS}}, $address;
- push @{$interface->{IPMASK}}, $mask;
- push @{$interface->{IPSUBNET}},
+ push @{$configuration->{IPADDRESS}}, $address;
+ push @{$configuration->{IPMASK}}, $mask;
+ push @{$configuration->{IPSUBNET}},
getSubnetAddress($address, $mask);
} elsif ($address =~ /\S+/) {
- push @{$interface->{IPADDRESS6}}, $address;
- push @{$interface->{IPMASK6}}, $mask;
- push @{$interface->{IPSUBNET6}},
+ push @{$configuration->{IPADDRESS6}}, $address;
+ push @{$configuration->{IPMASK6}}, $mask;
+ push @{$configuration->{IPSUBNET6}},
getSubnetAddressIPv6($address, $mask);
}
}
}
- $interfaces[$object->{Index}] = $interface;
+ $configurations[$object->{Index}] = $configuration;
}
+ my @interfaces;
+
foreach my $object (getWmiObjects(
class => 'Win32_NetworkAdapter',
- properties => [ qw/Index PNPDeviceID Speed MACAddress PhysicalAdapter
- AdapterType/ ]
+ properties => [ qw/Index PNPDeviceID Speed PhysicalAdapter AdapterType/ ]
)) {
# http://comments.gmane.org/gmane.comp.monitoring.fusion-inventory.devel/34
next unless $object->{PNPDeviceID};
- my $interface = $interfaces[$object->{Index}];
+ my $configuration = $configurations[$object->{Index}];
- $interface->{SPEED} = $object->{Speed};
- $interface->{PNPDEVICEID} = $object->{PNPDeviceID};
+ next unless
+ $configuration->{IPADDRESS} ||
+ $configuration->{IPADDRESS6} ||
+ $configuration->{MACADDR};
+
+ my $interface = {
+ SPEED => $object->{Speed},
+ PNPDEVICEID => $object->{PNPDeviceID},
+ MACADDR => $configuration->{MACADDR},
+ DESCRIPTION => $configuration->{DESCRIPTION},
+ STATUS => $configuration->{STATUS},
+ IPDHCP => $configuration->{IPDHCP},
+ MTU => $configuration->{MTU},
+ IPGATEWAY => $configuration->{IPGATEWAY},
+ IPADDRESS => $configuration->{IPADDRESS},
+ IPMASK => $configuration->{IPMASK},
+ IPSUBNET => $configuration->{IPSUBNET},
+ IPADDRESS6 => $configuration->{IPADDRESS6},
+ IPMASK6 => $configuration->{IPMASK6},
+ IPSUBNET6 => $configuration->{IPSUBNET6},
+ dns => $configuration->{dns},
+ };
# PhysicalAdapter only work on OS > XP
if (defined $object->{PhysicalAdapter}) {
@@ -125,11 +146,11 @@ sub _getInterfaces {
$interface->{TYPE} = $object->{AdapterType};
$interface->{TYPE} =~ s/Ethernet.*/Ethernet/;
}
+
+ push @interfaces, $interface;
}
return
- grep { $_->{IPADDRESS} || $_->{IPADDRESS6} || $_->{MACADDR} }
- grep { $_ } # exclude slots left empty by indexed access
@interfaces;
}
diff --git a/t/inventory/windows/networks.t b/t/inventory/windows/networks.t
index 7294850..b854a24 100755
--- a/t/inventory/windows/networks.t
+++ b/t/inventory/windows/networks.t
@@ -21,7 +21,7 @@ use FusionInventory::Agent::Task::Inventory::Input::Win32::Networks;
my %tests = (
7 => [
{
- 'dns' => '192.168.0.254',
+ dns => '192.168.0.254',
IPMASK6 => [ '64' ],
IPMASK => [ '255.255.255.0' ],
IPGATEWAY => '192.168.0.254',
@@ -40,6 +40,14 @@ my %tests = (
TYPE => 'Ethernet'
},
{
+ dns => undef,
+ IPGATEWAY => undef,
+ IPADDRESS6 => undef,
+ IPMASK6 => undef,
+ IPSUBNET6 => undef,
+ IPADDRESS => undef,
+ IPMASK => undef,
+ IPSUBNET => undef,
MTU => undef,
MACADDR => '00:26:83:12:FB:0B',
STATUS => 'Up',
@@ -53,6 +61,14 @@ my %tests = (
],
xp => [
{
+ dns => undef,
+ IPADDRESS6 => undef,
+ IPMASK6 => undef,
+ IPSUBNET6 => undef,
+ IPADDRESS => undef,
+ IPMASK => undef,
+ IPSUBNET => undef,
+ IPGATEWAY => undef,
VIRTUALDEV => 1,
PNPDEVICEID => 'ROOT\\MS_PPTPMINIPORT\\0000',
MACADDR => '50:50:54:50:30:30',
@@ -64,6 +80,14 @@ my %tests = (
DESCRIPTION => 'Minipuerto WAN (PPTP)'
},
{
+ dns => undef,
+ IPADDRESS6 => undef,
+ IPMASK6 => undef,
+ IPSUBNET6 => undef,
+ IPADDRESS => undef,
+ IPMASK => undef,
+ IPSUBNET => undef,
+ IPGATEWAY => undef,
VIRTUALDEV => 1,
PNPDEVICEID => 'ROOT\\MS_PPPOEMINIPORT\\0000',
MACADDR => '33:50:6F:45:30:30',
@@ -75,6 +99,14 @@ my %tests = (
DESCRIPTION => 'Minipuerto WAN (PPPOE)'
},
{
+ dns => undef,
+ IPADDRESS6 => undef,
+ IPMASK6 => undef,
+ IPSUBNET6 => undef,
+ IPADDRESS => undef,
+ IPMASK => undef,
+ IPSUBNET => undef,
+ IPGATEWAY => undef,
VIRTUALDEV => 1,
PNPDEVICEID => 'ROOT\\MS_PSCHEDMP\\0000',
MACADDR => '26:0F:20:52:41:53',
@@ -86,18 +118,6 @@ my %tests = (
DESCRIPTION => 'Minipuerto del administrador de paquetes'
},
{
- dns => '10.36.6.200',
- IPMASK => [ '255.255.254.0' ],
- IPGATEWAY => '10.36.6.1',
- MACADDR => '00:14:C2:0D:B0:FB',
- STATUS => 'Up',
- IPDHCP => '10.36.6.200',
- IPSUBNET => [ '10.36.6.0' ],
- MTU => undef,
- DESCRIPTION => 'Broadcom NetXtreme Gigabit Ethernet - Teefer2 Miniport',
- 'IPADDRESS' => [ '10.36.6.30' ]
- },
- {
dns => '10.36.6.100',
IPMASK => [ '255.255.254.0' ],
IPGATEWAY => '10.36.6.1',
@@ -111,9 +131,20 @@ my %tests = (
IPSUBNET => [ '10.36.6.0' ],
MTU => undef,
DESCRIPTION => 'Broadcom NetXtreme Gigabit Ethernet - Teefer2 Miniport',
- 'IPADDRESS' => [ '10.36.6.30' ]
+ IPADDRESS => [ '10.36.6.30' ],
+ IPADDRESS6 => undef,
+ IPMASK6 => undef,
+ IPSUBNET6 => undef,
},
{
+ dns => undef,
+ IPADDRESS6 => undef,
+ IPMASK6 => undef,
+ IPSUBNET6 => undef,
+ IPADDRESS => undef,
+ IPMASK => undef,
+ IPSUBNET => undef,
+ IPGATEWAY => undef,
VIRTUALDEV => 1,
PNPDEVICEID => 'ROOT\\MS_PSCHEDMP\\0002',
MACADDR => '00:14:C2:0D:B0:FB',
@@ -125,6 +156,14 @@ my %tests = (
DESCRIPTION => 'Minipuerto del administrador de paquetes'
},
{
+ dns => undef,
+ IPADDRESS6 => undef,
+ IPMASK6 => undef,
+ IPSUBNET6 => undef,
+ IPADDRESS => undef,
+ IPMASK => undef,
+ IPSUBNET => undef,
+ IPGATEWAY => undef,
VIRTUALDEV => 1,
PNPDEVICEID => 'ROOT\\SYMC_TEEFER2MP\\0000',
MACADDR => '00:14:C2:0D:B0:FB',
@@ -136,6 +175,14 @@ my %tests = (
DESCRIPTION => 'Teefer2 Miniport'
},
{
+ dns => undef,
+ IPADDRESS6 => undef,
+ IPMASK6 => undef,
+ IPSUBNET6 => undef,
+ IPADDRESS => undef,
+ IPMASK => undef,
+ IPSUBNET => undef,
+ IPGATEWAY => undef,
VIRTUALDEV => 1,
PNPDEVICEID => 'ROOT\\SYMC_TEEFER2MP\\0002',
MACADDR => '26:0F:20:52:41:53',
================================================================
Commit: 910a6076fefeb88f30af4640493dab24fc648015
https://github.com/fusinv/fusioninventory-agent/commit/910a6076fefeb88f30af4640493dab24fc648015
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-15 (Thu, 15 Mar 2012)
Changed paths:
R resources/macos/ioreg/IOUSBDevice
A resources/macos/ioreg/IOUSBDevice1
A resources/macos/ioreg/IOUSBDevice2
M t/tools/macos.t
Log Message:
-----------
new ioreg USB devices sample
diff --git a/resources/macos/ioreg/IOUSBDevice b/resources/macos/ioreg/IOUSBDevice
deleted file mode 100644
index 3d58b39..0000000
--- a/resources/macos/ioreg/IOUSBDevice
+++ /dev/null
@@ -1,748 +0,0 @@
-+-o Root <class IORegistryEntry, id 0x100000100, retain 13>
- +-o MacBook2,1 <class IOPlatformExpertDevice, id 0x100000110, registered, matched, active, busy 0 (16937 ms), retain 25>
- +-o AppleACPIPlatformExpert <class AppleACPIPlatformExpert, id 0x100000111, registered, matched, active, busy 0 (15867 ms), retain 38>
- | +-o IOPMrootDomain <class IOPMrootDomain, id 0x100000114, registered, matched, active, busy 0 (12 ms), retain 48>
- | | +-o IORootParent <class IORootParent, id 0x100000115, !registered, !matched, active, busy 0, retain 7>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000267, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000268, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000026d, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000026e, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000271, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000272, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000002ed, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000319, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000329, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000032f, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000332, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000363, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000364, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000036d, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000036e, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000036f, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000371, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000392, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000393, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003a1, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003a2, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003a3, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003b9, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003bc, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000041e, !registered, !matched, active, busy 0, retain 5>
- | +-o cpus <class IOPlatformDevice, id 0x100000117, registered, matched, active, busy 0 (4 ms), retain 7>
- | +-o CPU0 at 0 <class IOACPIPlatformDevice, id 0x100000118, registered, matched, active, busy 0 (418 ms), retain 7>
- | | +-o AppleACPICPU <class AppleACPICPU, id 0x10000011d, registered, matched, active, busy 0 (406 ms), retain 9>
- | | +-o AppleACPICPUInterruptController <class AppleACPICPUInterruptController, id 0x10000011f, registered, matched, active, busy 0 (1 ms), retain 5>
- | | +-o ACPI_SMC_PlatformPlugin <class ACPI_SMC_PlatformPlugin, id 0x10000027b, registered, matched, active, busy 0 (8 ms), retain 9>
- | | +-o AppleIntelMeromPerformanceMonitor <class AppleIntelMeromPerformanceMonitor, id 0x10000027c, !registered, !matched, active, busy 0 (145 ms), retain 9>
- | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002ce, registered, matched, active, busy 0 (125 ms), retain 7>
- | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002cf, registered, matched, active, busy 0 (126 ms), retain 7>
- | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002d0, registered, matched, active, busy 0 (133 ms), retain 7>
- | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002d1, registered, matched, active, busy 0 (145 ms), retain 7>
- | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002d2, registered, matched, active, busy 0 (133 ms), retain 7>
- | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | +-o AppleIntelMeromSPR <class AppleIntelMeromSPR, id 0x1000002b4, registered, matched, active, busy 0 (135 ms), retain 4>
- | +-o CPU1 at 1 <class IOACPIPlatformDevice, id 0x100000119, registered, matched, active, busy 0 (392 ms), retain 7>
- | | +-o AppleACPICPU <class AppleACPICPU, id 0x10000011e, registered, matched, active, busy 0 (374 ms), retain 7>
- | | +-o AppleIntelMeromPerformanceMonitor <class AppleIntelMeromPerformanceMonitor, id 0x1000002ba, !registered, !matched, active, busy 0 (124 ms), retain 9>
- | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002c2, registered, matched, active, busy 0 (3 ms), retain 7>
- | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002c4, registered, matched, active, busy 0 (6 ms), retain 7>
- | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002c5, registered, matched, active, busy 0 (120 ms), retain 7>
- | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002c6, registered, matched, active, busy 0 (122 ms), retain 7>
- | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002c7, registered, matched, active, busy 0 (124 ms), retain 7>
- | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | +-o AppleIntelMeromSPR <class AppleIntelMeromSPR, id 0x1000002bb, registered, matched, active, busy 0 (125 ms), retain 4>
- | +-o io-apic at fec00000 <class IOACPIPlatformDevice, id 0x10000011a, registered, matched, active, busy 0 (4 ms), retain 6>
- | | +-o AppleAPICInterruptController <class AppleAPICInterruptController, id 0x100000121, registered, matched, active, busy 0 (1 ms), retain 11>
- | +-o AppleACPIEventController <class AppleACPIEventController, id 0x100000122, !registered, !matched, active, busy 0, retain 6>
- | +-o boot-ec <class IOACPIPlatformDevice, id 0x100000123, registered, matched, active, busy 0 (3 ms), retain 6>
- | | +-o AppleACPIEC <class AppleACPIEC, id 0x100000124, !registered, !matched, active, busy 0, retain 6>
- | +-o bios <class IOPlatformDevice, id 0x100000125, registered, matched, active, busy 0 (4 ms), retain 5>
- | | +-o AppleSMBIOS <class AppleSMBIOS, id 0x100000126, registered, matched, active, busy 0 (1 ms), retain 4>
- | +-o ADP1 <class IOACPIPlatformDevice, id 0x10000012a, registered, matched, active, busy 0 (2 ms), retain 7>
- | | +-o AppleACPIACAdapter <class AppleACPIACAdapter, id 0x1000001a2, !registered, !matched, active, busy 0, retain 4>
- | +-o LID0 <class IOACPIPlatformDevice, id 0x10000012b, registered, matched, active, busy 0 (3 ms), retain 9>
- | | +-o AppleACPILid <class AppleACPILid, id 0x1000001a3, !registered, !matched, active, busy 0, retain 5>
- | +-o PNLF <class IOACPIPlatformDevice, id 0x10000012c, registered, matched, active, busy 0 (13 ms), retain 7>
- | | +-o AppleIntelPanelA <class AppleIntelPanelA, id 0x100000273, !registered, !matched, active, busy 0, retain 5>
- | +-o PWRB <class IOACPIPlatformDevice, id 0x10000012d, registered, matched, active, busy 0 (5 ms), retain 8>
- | | +-o AppleACPIButton <class AppleACPIButton, id 0x1000001a4, !registered, !matched, active, busy 0, retain 4>
- | +-o SLPB <class IOACPIPlatformDevice, id 0x10000012e, registered, matched, active, busy 0 (6 ms), retain 7>
- | | +-o AppleACPIButton <class AppleACPIButton, id 0x1000001a5, !registered, !matched, active, busy 0, retain 4>
- | +-o PCI0 at 0 <class IOACPIPlatformDevice, id 0x10000012f, registered, matched, active, busy 0 (15786 ms), retain 43>
- | | +-o AppleACPIPCI <class AppleACPIPCI, id 0x1000001a6, registered, matched, active, busy 0 (15772 ms), retain 40>
- | | +-o pci8086,27a0 at 0 <class IOPCIDevice, id 0x1000001a8, registered, matched, active, busy 0 (5445 ms), retain 8>
- | | | +-o AppleSMCPDRC <class AppleSMCPDRC, id 0x1000002a9, registered, matched, active, busy 0 (1 ms), retain 4>
- | | +-o GFX0 at 2 <class IOPCIDevice, id 0x100000174, registered, matched, active, busy 0 (551 ms), retain 17>
- | | | +-o AppleIntelIntegratedFramebuffer <class AppleIntelIntegratedFramebuffer, id 0x1000002b5, !registered, !matched, active, busy 0, retain 6>
- | | | +-o AppleIntelFramebuffer <class AppleIntelFramebuffer, id 0x1000002d8, registered, matched, active, busy 0 (239 ms), retain 14>
- | | | | +-o AppleMCCSControlModule <class AppleMCCSControlModule, id 0x1000002e2, registered, matched, active, busy 0 (79 ms), retain 5>
- | | | | | +-o AppleMCCSParameterHandler <class AppleMCCSParameterHandler, id 0x1000002eb, registered, matched, active, busy 0 (6 ms), retain 4>
- | | | | +-o AppleUpstreamUserClientDriver <class AppleUpstreamUserClientDriver, id 0x1000002e3, registered, matched, active, busy 0 (3 ms), retain 4>
- | | | | +-o IOFramebufferI2CInterface <class IOFramebufferI2CInterface, id 0x10000031c, registered, matched, active, busy 0 (3 ms), retain 5>
- | | | | +-o display0 <class IODisplayConnect, id 0x10000031d, registered, matched, active, busy 0 (28 ms), retain 5>
- | | | | | +-o AppleBacklightDisplay <class AppleBacklightDisplay, id 0x10000031e, registered, matched, active, busy 0 (2 ms), retain 8>
- | | | | +-o IOFramebufferUserClient <class IOFramebufferUserClient, id 0x100000325, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelFramebuffer <class AppleIntelFramebuffer, id 0x1000002da, registered, matched, active, busy 0 (212 ms), retain 12>
- | | | | +-o AppleMCCSControlModule <class AppleMCCSControlModule, id 0x1000002e5, registered, matched, active, busy 0 (8 ms), retain 5>
- | | | | | +-o AppleMCCSParameterHandler <class AppleMCCSParameterHandler, id 0x1000002e9, registered, matched, active, busy 0 (6 ms), retain 4>
- | | | | +-o AppleUpstreamUserClientDriver <class AppleUpstreamUserClientDriver, id 0x1000002e6, registered, matched, active, busy 0 (5 ms), retain 4>
- | | | | +-o IOFramebufferI2CInterface <class IOFramebufferI2CInterface, id 0x100000324, registered, matched, active, busy 0 (3 ms), retain 5>
- | | | | +-o IOFramebufferUserClient <class IOFramebufferUserClient, id 0x100000327, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915 <class Intel915, id 0x1000002b7, registered, matched, active, busy 0 (2 ms), retain 18>
- | | | +-o Intel9152DContext <class Intel9152DContext, id 0x100000326, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel9152DContext <class Intel9152DContext, id 0x100000328, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915Device <class Intel915Device, id 0x10000032d, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915GLContext <class Intel915GLContext, id 0x10000032e, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915Surface <class Intel915Surface, id 0x10000035e, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915Surface <class Intel915Surface, id 0x100000372, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915GLContext <class Intel915GLContext, id 0x100000373, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915Surface <class Intel915Surface, id 0x100000384, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915Surface <class Intel915Surface, id 0x100000385, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915Surface <class Intel915Surface, id 0x100000391, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915Device <class Intel915Device, id 0x1000003be, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915GLContext <class Intel915GLContext, id 0x1000003bf, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915GLContext <class Intel915GLContext, id 0x1000003c0, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915Surface <class Intel915Surface, id 0x1000003c1, !registered, !matched, active, busy 0, retain 5>
- | | +-o display at 2,1 <class IOPCIDevice, id 0x1000001a9, registered, matched, active, busy 0 (637 ms), retain 9>
- | | | +-o IONDRVFramebuffer <class IONDRVFramebuffer, id 0x100000277, registered, matched, active, busy 0 (458 ms), retain 7>
- | | | +-o AppleMCCSControlModule <class AppleMCCSControlModule, id 0x1000002ac, registered, matched, active, busy 0 (125 ms), retain 5>
- | | | | +-o AppleMCCSParameterHandler <class AppleMCCSParameterHandler, id 0x1000002dd, registered, matched, active, busy 0 (4 ms), retain 4>
- | | | +-o AppleUpstreamUserClientDriver <class AppleUpstreamUserClientDriver, id 0x1000002ad, registered, matched, active, busy 0 (107 ms), retain 4>
- | | +-o pci8086,27a3 at 7 <class IOPCIDevice, id 0x1000001aa, registered, matched, active, busy 0 (32 ms), retain 7>
- | | +-o HDEF at 1B <class IOPCIDevice, id 0x100000178, registered, matched, active, busy 0 (739 ms), retain 10>
- | | | +-o AppleHDAController at 1B <class AppleHDAController, id 0x100000280, registered, matched, active, busy 0 (348 ms), retain 7>
- | | | +-o IOHDACodecDevice at 1B,0 <class IOHDACodecDevice, id 0x1000002a8, registered, matched, active, busy 0 (348 ms), retain 6>
- | | | +-o IOHDACodecDriver <class IOHDACodecDriver, id 0x1000002d6, !registered, !matched, active, busy 0 (261 ms), retain 5>
- | | | +-o IOHDACodecFunction at 1B,0,1 <class IOHDACodecFunction, id 0x1000002d7, registered, matched, active, busy 0 (261 ms), retain 6>
- | | | +-o AppleHDACodecGeneric <class AppleHDACodecGeneric, id 0x1000002e1, registered, matched, active, busy 0 (101 ms), retain 5>
- | | | +-o AppleHDADriver <class AppleHDADriver, id 0x1000002ec, registered, matched, active, busy 0 (21 ms), retain 8>
- | | | +-o AppleHDAEngineOutput at 1B,0,1,2 <class AppleHDAEngineOutput, id 0x100000302, registered, matched, active, busy 0 (9 ms), retain 28>
- | | | | +-o AppleHDAStream <class AppleHDAStream, id 0x100000303, registered, matched, active, busy 0 (5 ms), retain 8>
- | | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x100000304, !registered, !matched, active, busy 0 (0 ms), retain 12>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033f, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039c, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b4, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000305, !registered, !matched, active, busy 0 (0 ms), retain 12>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000340, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039d, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b5, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000306, !registered, !matched, active, busy 0 (0 ms), retain 12>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000341, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039e, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b6, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000307, !registered, !matched, active, busy 0 (0 ms), retain 12>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000342, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039f, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b7, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000308, !registered, !matched, active, busy 0 (0 ms), retain 12>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000343, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a0, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b8, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o AudioAUUCDriver <class AudioAUUCDriver, id 0x10000030a, registered, matched, active, busy 0 (4 ms), retain 4>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000336, !registered, !matched, active, busy 0, retain 7>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000347, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000368, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000036c, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000397, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000039b, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a7, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003ab, !registered, !matched, active, busy 0, retain 6>
- | | | +-o AppleHDAEngineInput at 1B,0,1,0 <class AppleHDAEngineInput, id 0x100000309, registered, matched, active, busy 0 (6 ms), retain 24>
- | | | | +-o AppleHDAStream <class AppleHDAStream, id 0x10000030b, registered, matched, active, busy 0 (5 ms), retain 7>
- | | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x10000030c, !registered, !matched, active, busy 0 (0 ms), retain 10>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033b, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ac, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x10000030d, !registered, !matched, active, busy 0 (0 ms), retain 10>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033c, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ad, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x10000030e, !registered, !matched, active, busy 0 (0 ms), retain 10>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033d, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ae, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x10000030f, !registered, !matched, active, busy 0 (0 ms), retain 18>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033e, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000345, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000399, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a9, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003af, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000335, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000346, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000367, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000396, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000039a, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a6, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003aa, !registered, !matched, active, busy 0, retain 6>
- | | | +-o AppleHDAEngineInput at 1B,0,1,1 <class AppleHDAEngineInput, id 0x100000310, registered, matched, active, busy 0 (6 ms), retain 24>
- | | | +-o AppleHDAStream <class AppleHDAStream, id 0x100000311, registered, matched, active, busy 0 (5 ms), retain 7>
- | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x100000313, !registered, !matched, active, busy 0 (0 ms), retain 10>
- | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000337, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b0, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000314, !registered, !matched, active, busy 0 (0 ms), retain 10>
- | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000338, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b1, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000315, !registered, !matched, active, busy 0 (0 ms), retain 10>
- | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000339, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b2, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000316, !registered, !matched, active, busy 0 (0 ms), retain 10>
- | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033a, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b3, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000334, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000344, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000366, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000369, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000395, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000398, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a5, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a8, !registered, !matched, active, busy 0, retain 6>
- | | +-o RP01 at 1C <class IOPCIDevice, id 0x100000179, registered, matched, active, busy 0 (6297 ms), retain 11>
- | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001c2, registered, matched, active, busy 0 (6262 ms), retain 7>
- | | | +-o PXS1 at 0 <class IOPCIDevice, id 0x10000017a, registered, matched, active, busy 0 (6262 ms), retain 10>
- | | | +-o yukon2osx <class yukon2osx, id 0x1000001c6, !registered, !matched, active, busy 0 (2 ms), retain 7>
- | | | +-o yukon <class yukon, id 0x100000260, !registered, !matched, active, busy 0 (2 ms), retain 8>
- | | | +-o IOEthernetInterface <class IOEthernetInterface, id 0x100000261, registered, matched, active, busy 0 (2 ms), retain 11>
- | | | +-o IONetworkStack <class IONetworkStack, id 0x1000001de, registered, matched, active, busy 0 (2 ms), retain 11>
- | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x100000266, !registered, !matched, active, busy 0, retain 5>
- | | +-o RP02 at 1C,1 <class IOPCIDevice, id 0x10000017b, registered, matched, active, busy 0 (509 ms), retain 11>
- | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001e3, registered, matched, active, busy 0 (299 ms), retain 7>
- | | | +-o PXS2 at 0 <class IOPCIDevice, id 0x10000017c, registered, matched, active, busy 0 (288 ms), retain 12>
- | | | +-o AirPort_AthrFusion21 <class AirPort_AthrFusion21, id 0x10000027d, registered, matched, active, busy 0 (100 ms), retain 8>
- | | | +-o AtherosFusion21Interface <class AtherosFusion21Interface, id 0x1000002ab, registered, matched, active, busy 0 (99 ms), retain 10>
- | | | +-o IONetworkStack <class IONetworkStack, id 0x1000001de, registered, matched, active, busy 0 (2 ms), retain 11>
- | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x100000266, !registered, !matched, active, busy 0, retain 5>
- | | +-o USB1 at 1D <class IOPCIDevice, id 0x10000017d, registered, matched, active, busy 0 (967 ms), retain 11>
- | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001e1, registered, matched, active, busy 0 (634 ms), retain 9>
- | | | +-o UHCI Root Hub Simulation at 1D <class IOUSBRootHubDevice, id 0x1000001fe, registered, matched, active, busy 0 (8 ms), retain 10>
- | | | | | {
- | | | | | "sessionID" = 555462596
- | | | | | "iManufacturer" = 2
- | | | | | "bNumConfigurations" = 1
- | | | | | "idProduct" = 32773
- | | | | | "bcdDevice" = 272
- | | | | | "Bus Power Available" = 250
- | | | | | "bMaxPacketSize0" = 8
- | | | | | "USB Product Name" = "UHCI Root Hub Simulation"
- | | | | | "iProduct" = 1
- | | | | | "iSerialNumber" = 0
- | | | | | "USB Address" = 1
- | | | | | "bDeviceClass" = 9
- | | | | | "locationID" = 486539264
- | | | | | "bDeviceSubClass" = 0
- | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | | "Ports" = 2
- | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | | "bDeviceProtocol" = 0
- | | | | | "USB Vendor Name" = "Apple Inc."
- | | | | | "Device Speed" = 1
- | | | | | "idVendor" = 1452
- | | | | | "AAPL,current-in-sleep" = 1000
- | | | | | "Requested Power" = 0
- | | | | | "AAPL,port-current-in-sleep" = 500
- | | | | | "Low Power Displayed" = No
- | | | | | }
- | | | | |
- | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000200, !registered, !matched, active, busy 0, retain 8>
- | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000202, !registered, !matched, active, busy 0, retain 7>
- | | | +-o Apple Internal Keyboard / Trackpad at 1d200000 <class IOUSBDevice, id 0x100000227, registered, matched, active, busy 0 (625 ms), retain 12>
- | | | | {
- | | | | "sessionID" = 922879256
- | | | | "iManufacturer" = 1
- | | | | "bNumConfigurations" = 1
- | | | | "idProduct" = 539
- | | | | "bcdDevice" = 24
- | | | | "Bus Power Available" = 250
- | | | | "bMaxPacketSize0" = 8
- | | | | "USB Product Name" = "Apple Internal Keyboard / Trackpad"
- | | | | "iProduct" = 2
- | | | | "iSerialNumber" = 0
- | | | | "USB Address" = 2
- | | | | "bDeviceClass" = 0
- | | | | "locationID" = 488636416
- | | | | "bDeviceSubClass" = 0
- | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | "PortNum" = 2
- | | | | "non-removable" = "yes"
- | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | "bDeviceProtocol" = 0
- | | | | "Need contiguous memory for isoch" = Yes
- | | | | "USB Vendor Name" = "Apple Computer"
- | | | | "Device Speed" = 1
- | | | | "idVendor" = 1452
- | | | | "Requested Power" = 20
- | | | | "IOGeneralInterest" = "IOCommand is not serializable"
- | | | | "Low Power Displayed" = No
- | | | | }
- | | | |
- | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x100000229, !registered, !matched, active, busy 0, retain 4>
- | | | +-o Apple Internal Keyboard at 0 <class IOUSBInterface, id 0x10000022b, registered, matched, active, busy 0 (520 ms), retain 8>
- | | | | +-o AppleUSBTCKeyboard <class AppleUSBTCKeyboard, id 0x100000232, registered, matched, active, busy 0 (101 ms), retain 8>
- | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000238, registered, matched, active, busy 0 (6 ms), retain 6>
- | | | | +-o AppleUSBTCKeyEventDriver <class AppleUSBTCKeyEventDriver, id 0x100000239, registered, matched, active, busy 0 (1 ms), retain 8>
- | | | | +-o IOHIDKeyboard <class IOHIDKeyboard, id 0x10000023b, registered, matched, active, busy 0 (0 ms), retain 8>
- | | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 16>
- | | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
- | | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
- | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
- | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 15>
- | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Touchpad at 1 <class IOUSBInterface, id 0x10000022c, registered, matched, active, busy 0 (382 ms), retain 7>
- | | | | +-o AppleUSBGrIIITrackpad <class AppleUSBGrIIITrackpad, id 0x10000023d, registered, matched, active, busy 0 (117 ms), retain 16>
- | | | | +-o RawDataReporter <class RawDataReporter, id 0x10000023e, registered, matched, active, busy 0 (105 ms), retain 6>
- | | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x10000023f, registered, matched, active, busy 0 (3 ms), retain 5>
- | | | | +-o IOHIDPointingDevice <class IOHIDPointingDevice, id 0x100000241, registered, matched, active, busy 0 (107 ms), retain 6>
- | | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000242, registered, matched, active, busy 0 (3 ms), retain 5>
- | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 15>
- | | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
- | | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
- | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
- | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o BaselineReporter <class BaselineReporter, id 0x100000244, registered, matched, active, busy 0 (108 ms), retain 6>
- | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000245, registered, matched, active, busy 0 (3 ms), retain 5>
- | | | +-o Apple Internal Keyboard at 2 <class IOUSBInterface, id 0x10000022d, registered, matched, active, busy 0 (202 ms), retain 8>
- | | | +-o AppleUSBTCKeyboard <class AppleUSBTCKeyboard, id 0x100000247, registered, matched, active, busy 0 (110 ms), retain 8>
- | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000248, registered, matched, active, busy 0 (103 ms), retain 6>
- | | | +-o IOHIDEventDriver <class IOHIDEventDriver, id 0x1000002a1, registered, matched, active, busy 0 (3 ms), retain 8>
- | | | +-o IOHIDConsumer <class IOHIDConsumer, id 0x1000002a2, registered, matched, active, busy 0 (1 ms), retain 8>
- | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 16>
- | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
- | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 15>
- | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
- | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
- | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
- | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
- | | +-o USB2 at 1D,1 <class IOPCIDevice, id 0x100000181, registered, matched, active, busy 0 (352 ms), retain 11>
- | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001f3, registered, matched, active, busy 0 (13 ms), retain 8>
- | | | +-o UHCI Root Hub Simulation at 1D,1 <class IOUSBRootHubDevice, id 0x100000206, registered, matched, active, busy 0 (10 ms), retain 8>
- | | | | {
- | | | | "sessionID" = 564210044
- | | | | "iManufacturer" = 2
- | | | | "bNumConfigurations" = 1
- | | | | "idProduct" = 32773
- | | | | "bcdDevice" = 272
- | | | | "Bus Power Available" = 250
- | | | | "bMaxPacketSize0" = 8
- | | | | "USB Product Name" = "UHCI Root Hub Simulation"
- | | | | "iProduct" = 1
- | | | | "iSerialNumber" = 0
- | | | | "USB Address" = 1
- | | | | "bDeviceClass" = 9
- | | | | "locationID" = 1023410176
- | | | | "bDeviceSubClass" = 0
- | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | "Ports" = 2
- | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | "bDeviceProtocol" = 0
- | | | | "USB Vendor Name" = "Apple Inc."
- | | | | "Device Speed" = 1
- | | | | "idVendor" = 1452
- | | | | "AAPL,current-in-sleep" = 1000
- | | | | "Requested Power" = 0
- | | | | "AAPL,port-current-in-sleep" = 500
- | | | | "Low Power Displayed" = No
- | | | | }
- | | | |
- | | | +-o AppleUSBHub <class AppleUSBHub, id 0x10000020b, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000020d, !registered, !matched, active, busy 0, retain 7>
- | | +-o USB3 at 1D,2 <class IOPCIDevice, id 0x100000185, registered, matched, active, busy 0 (647 ms), retain 11>
- | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001c8, registered, matched, active, busy 0 (297 ms), retain 9>
- | | | +-o UHCI Root Hub Simulation at 1D,2 <class IOUSBRootHubDevice, id 0x100000209, registered, matched, active, busy 0 (20 ms), retain 10>
- | | | | | {
- | | | | | "sessionID" = 572462640
- | | | | | "iManufacturer" = 2
- | | | | | "bNumConfigurations" = 1
- | | | | | "idProduct" = 32773
- | | | | | "bcdDevice" = 272
- | | | | | "Bus Power Available" = 250
- | | | | | "bMaxPacketSize0" = 8
- | | | | | "USB Product Name" = "UHCI Root Hub Simulation"
- | | | | | "iProduct" = 1
- | | | | | "iSerialNumber" = 0
- | | | | | "USB Address" = 1
- | | | | | "bDeviceClass" = 9
- | | | | | "locationID" = 1560281088
- | | | | | "bDeviceSubClass" = 0
- | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | | "Ports" = 2
- | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | | "bDeviceProtocol" = 0
- | | | | | "USB Vendor Name" = "Apple Inc."
- | | | | | "Device Speed" = 1
- | | | | | "idVendor" = 1452
- | | | | | "AAPL,current-in-sleep" = 1000
- | | | | | "Requested Power" = 0
- | | | | | "AAPL,port-current-in-sleep" = 500
- | | | | | "Low Power Displayed" = No
- | | | | | }
- | | | | |
- | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000218, !registered, !matched, active, busy 0, retain 8>
- | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000021a, !registered, !matched, active, busy 0, retain 7>
- | | | +-o IR Receiver at 5d200000 <class IOUSBDevice, id 0x10000022a, registered, matched, active, busy 0 (276 ms), retain 9>
- | | | | {
- | | | | "sessionID" = 944991920
- | | | | "iManufacturer" = 1
- | | | | "bNumConfigurations" = 1
- | | | | "idProduct" = 33344
- | | | | "bcdDevice" = 272
- | | | | "Bus Power Available" = 250
- | | | | "bMaxPacketSize0" = 8
- | | | | "USB Product Name" = "IR Receiver"
- | | | | "iProduct" = 2
- | | | | "iSerialNumber" = 0
- | | | | "USB Address" = 2
- | | | | "bDeviceClass" = 0
- | | | | "locationID" = 1562378240
- | | | | "bDeviceSubClass" = 0
- | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | "PortNum" = 2
- | | | | "non-removable" = "yes"
- | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | "bDeviceProtocol" = 0
- | | | | "Need contiguous memory for isoch" = Yes
- | | | | "USB Vendor Name" = "Apple Computer, Inc."
- | | | | "Device Speed" = 1
- | | | | "idVendor" = 1452
- | | | | "Requested Power" = 50
- | | | | "IOGeneralInterest" = "IOCommand is not serializable"
- | | | | "Low Power Displayed" = No
- | | | | }
- | | | |
- | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x10000022f, !registered, !matched, active, busy 0, retain 4>
- | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000230, registered, matched, active, busy 0 (261 ms), retain 8>
- | | | +-o AppleIRController <class AppleIRController, id 0x100000235, registered, matched, active, busy 0 (112 ms), retain 8>
- | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000236, registered, matched, active, busy 0 (3 ms), retain 5>
- | | | +-o IOHIDLibUserClient <class IOHIDLibUserClient, id 0x10000035d, !registered, !matched, active, busy 0, retain 6>
- | | +-o USB4 at 1D,3 <class IOPCIDevice, id 0x100000189, registered, matched, active, busy 0 (2390 ms), retain 11>
- | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001c9, registered, matched, active, busy 0 (2038 ms), retain 9>
- | | | +-o UHCI Root Hub Simulation at 1D,3 <class IOUSBRootHubDevice, id 0x10000020e, registered, matched, active, busy 0 (8 ms), retain 10>
- | | | | | {
- | | | | | "sessionID" = 575818003
- | | | | | "iManufacturer" = 2
- | | | | | "bNumConfigurations" = 1
- | | | | | "idProduct" = 32773
- | | | | | "bcdDevice" = 272
- | | | | | "Bus Power Available" = 250
- | | | | | "bMaxPacketSize0" = 8
- | | | | | "USB Product Name" = "UHCI Root Hub Simulation"
- | | | | | "iProduct" = 1
- | | | | | "iSerialNumber" = 0
- | | | | | "USB Address" = 1
- | | | | | "bDeviceClass" = 9
- | | | | | "locationID" = 2097152000
- | | | | | "bDeviceSubClass" = 0
- | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | | "Ports" = 2
- | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | | "bDeviceProtocol" = 0
- | | | | | "USB Vendor Name" = "Apple Inc."
- | | | | | "Device Speed" = 1
- | | | | | "idVendor" = 1452
- | | | | | "AAPL,current-in-sleep" = 1000
- | | | | | "Requested Power" = 0
- | | | | | "AAPL,port-current-in-sleep" = 500
- | | | | | "Low Power Displayed" = No
- | | | | | }
- | | | | |
- | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000212, !registered, !matched, active, busy 0, retain 8>
- | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000215, !registered, !matched, active, busy 0, retain 7>
- | | | +-o WirelessControllerDevice at 7d100000 <class IOUSBDevice, id 0x100000256, registered, matched, active, busy 0 (250 ms), retain 10>
- | | | | {
- | | | | "sessionID" = 3290864968
- | | | | "iManufacturer" = 0
- | | | | "idProduct" = 33285
- | | | | "bDeviceClass" = 224
- | | | | "bcdDevice" = 6501
- | | | | "Bus Power Available" = 250
- | | | | "bMaxPacketSize0" = 64
- | | | | "iProduct" = 0
- | | | | "iSerialNumber" = 0
- | | | | "USB Address" = 2
- | | | | "bNumConfigurations" = 1
- | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | "locationID" = 2098200576
- | | | | "bDeviceSubClass" = 1
- | | | | "USB Product Name" = "Bluetooth USB Host Controller"
- | | | | "non-removable" = "yes"
- | | | | "PortNum" = 1
- | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | "bDeviceProtocol" = 1
- | | | | "Need contiguous memory for isoch" = Yes
- | | | | "Device Speed" = 1
- | | | | "USB Vendor Name" = "Apple Inc."
- | | | | "idVendor" = 1452
- | | | | "Requested Power" = 0
- | | | | "IOGeneralInterest" = "IOCommand is not serializable"
- | | | | "Low Power Displayed" = No
- | | | | }
- | | | |
- | | | +-o CSRUSBBluetoothHCIController <class CSRUSBBluetoothHCIController, id 0x100000258, registered, matched, active, busy 0 (0 ms), retain 10>
- | | | | +-o IOBluetoothHCIUserClient <class IOBluetoothHCIUserClient, id 0x100000270, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o IOBluetoothHCIUserClient <class IOBluetoothHCIUserClient, id 0x1000003ba, !registered, !matched, active, busy 0, retain 5>
- | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000025a, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOUSBInterface at 1 <class IOUSBInterface, id 0x10000025b, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOUSBInterface at 2 <class IOUSBInterface, id 0x10000025c, !registered, !matched, active, busy 0, retain 6>
- | | +-o USB7 at 1D,7 <class IOPCIDevice, id 0x10000018d, registered, matched, active, busy 0 (2564 ms), retain 13>
- | | | +-o IOService <class IOService, id 0x1000001ca, !registered, !matched, active, busy 0, retain 4>
- | | | +-o AppleUSBEHCI <class AppleUSBEHCI, id 0x1000001cb, registered, matched, active, busy 0 (2383 ms), retain 14>
- | | | +-o EHCI Root Hub Simulation at 1D,7 <class IOUSBRootHubDevice, id 0x1000001d7, registered, matched, active, busy 0 (32 ms), retain 12>
- | | | | | {
- | | | | | "sessionID" = 410970048
- | | | | | "iManufacturer" = 2
- | | | | | "bNumConfigurations" = 1
- | | | | | "idProduct" = 32774
- | | | | | "bcdDevice" = 512
- | | | | | "Bus Power Available" = 250
- | | | | | "bMaxPacketSize0" = 64
- | | | | | "USB Product Name" = "EHCI Root Hub Simulation"
- | | | | | "iProduct" = 1
- | | | | | "iSerialNumber" = 0
- | | | | | "USB Address" = 1
- | | | | | "bDeviceClass" = 9
- | | | | | "locationID" = 18446744073659219968
- | | | | | "bDeviceSubClass" = 0
- | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | | "Ports" = 8
- | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | | "bDeviceProtocol" = 1
- | | | | | "USB Vendor Name" = "Apple Inc."
- | | | | | "Device Speed" = 2
- | | | | | "idVendor" = 1452
- | | | | | "AAPL,current-in-sleep" = 4000
- | | | | | "Requested Power" = 0
- | | | | | "AAPL,port-current-in-sleep" = 500
- | | | | | "Low Power Displayed" = No
- | | | | | }
- | | | | |
- | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x1000001e8, registered, matched, active, busy 0 (0 ms), retain 9>
- | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x1000001ea, !registered, !matched, active, busy 0, retain 7>
- | | | +-o Built-in iSight at fd400000 <class IOUSBDevice, id 0x10000024e, registered, matched, active, busy 0 (50 ms), retain 9>
- | | | | | {
- | | | | | "sessionID" = 2717373407
- | | | | | "iManufacturer" = 1
- | | | | | "bNumConfigurations" = 1
- | | | | | "idProduct" = 34049
- | | | | | "bcdDevice" = 393
- | | | | | "Bus Power Available" = 250
- | | | | | "bMaxPacketSize0" = 64
- | | | | | "USB Product Name" = "Built-in iSight"
- | | | | | "iProduct" = 2
- | | | | | "iSerialNumber" = 0
- | | | | | "USB Address" = 2
- | | | | | "bDeviceClass" = 255
- | | | | | "locationID" = 18446744073663414272
- | | | | | "bDeviceSubClass" = 255
- | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | | "PortNum" = 4
- | | | | | "non-removable" = "yes"
- | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | | "bDeviceProtocol" = 255
- | | | | | "USB Vendor Name" = "Micron"
- | | | | | "Device Speed" = 2
- | | | | | "idVendor" = 1452
- | | | | | "Requested Power" = 50
- | | | | | "IOGeneralInterest" = "IOCommand is not serializable"
- | | | | | "kSuspendPort" = Yes
- | | | | | "Low Power Displayed" = No
- | | | | | }
- | | | | |
- | | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x100000250, !registered, !matched, active, busy 0, retain 4>
- | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000252, registered, matched, active, busy 0 (15 ms), retain 6>
- | | | | +-o IOUSBInterface at 1 <class IOUSBInterface, id 0x100000253, registered, matched, active, busy 0 (15 ms), retain 6>
- | | | +-o Flash Disk at fd300000 <class IOUSBDevice, id 0x100000408, registered, matched, active, busy 0 (499 ms), retain 8>
- | | | | {
- | | | | "sessionID" = 3995793432240
- | | | | "iManufacturer" = 1
- | | | | "bNumConfigurations" = 1
- | | | | "idProduct" = 24613
- | | | | "bcdDevice" = 256
- | | | | "Bus Power Available" = 250
- | | | | "bMaxPacketSize0" = 64
- | | | | "USB Product Name" = "Flash Disk"
- | | | | "iProduct" = 2
- | | | | "iSerialNumber" = 3
- | | | | "USB Address" = 3
- | | | | "bDeviceClass" = 0
- | | | | "bDeviceSubClass" = 0
- | | | | "locationID" = 18446744073662365696
- | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | "kHasMSCInterface" = Yes
- | | | | "PortNum" = 3
- | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | "bDeviceProtocol" = 0
- | | | | "uid" = "USB:197660250078C5C90000"
- | | | | "USB Vendor Name" = "CBM"
- | | | | "Device Speed" = 2
- | | | | "idVendor" = 6518
- | | | | "USB Serial Number" = "16270078C5C90000"
- | | | | "Requested Power" = 50
- | | | | "IOGeneralInterest" = "IOCommand is not serializable"
- | | | | "Low Power Displayed" = No
- | | | | }
- | | | |
- | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x10000040a, !registered, !matched, active, busy 0, retain 4>
- | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000040b, registered, matched, active, busy 0 (482 ms), retain 7>
- | | | +-o IOUSBMassStorageClass <class IOUSBMassStorageClass, id 0x10000040d, registered, matched, active, busy 0 (177 ms), retain 8>
- | | | +-o IOSCSIPeripheralDeviceNub <class IOSCSIPeripheralDeviceNub, id 0x10000040f, registered, matched, active, busy 0 (74 ms), retain 6>
- | | | +-o IOSCSIPeripheralDeviceType00 <class IOSCSIPeripheralDeviceType00, id 0x100000410, !registered, !matched, active, busy 0 (20 ms), retain 7>
- | | | +-o IOBlockStorageServices <class IOBlockStorageServices, id 0x100000413, registered, matched, active, busy 0 (20 ms), retain 5>
- | | | +-o IOBlockStorageDriver <class IOBlockStorageDriver, id 0x100000414, registered, matched, active, busy 0 (18 ms), retain 7>
- | | | +-o CBM Flash Disk Media <class IOMedia, id 0x100000415, registered, matched, active, busy 0 (16 ms), retain 10>
- | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000416, registered, matched, active, busy 0 (2 ms), retain 5>
- | | | +-o IOFDiskPartitionScheme <class IOFDiskPartitionScheme, id 0x100000419, !registered, !matched, active, busy 0 (10 ms), retain 6>
- | | | +-o Untitled 1 at 1 <class IOMedia, id 0x10000041b, registered, matched, active, busy 0 (10 ms), retain 9>
- | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000041c, registered, matched, active, busy 0 (2 ms), retain 6>
- | | +-o PCIB at 1E <class IOPCIDevice, id 0x100000197, registered, matched, active, busy 0 (712 ms), retain 11>
- | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001cd, registered, matched, active, busy 0 (542 ms), retain 7>
- | | | +-o FRWR at 3 <class IOPCIDevice, id 0x100000198, registered, matched, active, busy 0 (494 ms), retain 10>
- | | | +-o AppleFWOHCI <class AppleFWOHCI, id 0x1000001d8, !registered, !matched, active, busy 0 (476 ms), retain 6>
- | | | +-o IOFireWireController <class IOFireWireController, id 0x1000001da, registered, matched, active, busy 0 (476 ms), retain 9>
- | | | +-o IOFireWireLocalNode <class IOFireWireLocalNode, id 0x100000214, registered, matched, active, busy 0 (476 ms), retain 12>
- | | | +-o IOFireWireUserClientIniter <class IOFireWireUserClientIniter, id 0x100000216, !registered, !matched, active, busy 0, retain 4>
- | | | +-o IOFireWireUserClientIniter <class IOFireWireUserClientIniter, id 0x1000002b0, !registered, !matched, active, busy 0, retain 4>
- | | | +-o IOFireWireIP <class IOFireWireIP, id 0x1000002b1, registered, matched, active, busy 0 (224 ms), retain 5>
- | | | +-o IOFWInterface <class IOFWInterface, id 0x1000002b9, registered, matched, active, busy 0 (224 ms), retain 10>
- | | | +-o IONetworkStack <class IONetworkStack, id 0x1000001de, registered, matched, active, busy 0 (2 ms), retain 11>
- | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x100000266, !registered, !matched, active, busy 0, retain 5>
- | | +-o LPCB at 1F <class IOPCIDevice, id 0x100000199, registered, matched, active, busy 0 (5615 ms), retain 28>
- | | | +-o AppleLPC <class AppleLPC, id 0x100000275, registered, matched, active, busy 0 (3 ms), retain 5>
- | | +-o PATA at 1F,1 <class IOPCIDevice, id 0x10000019a, registered, matched, active, busy 0 (10462 ms), retain 13>
- | | | +-o AppleIntelPIIXATARoot <class AppleIntelPIIXATARoot, id 0x1000001d1, !registered, !matched, active, busy 0 (10287 ms), retain 6>
- | | | +-o PRID at 0 <class AppleIntelPIIXATAChannel, id 0x10000019b, registered, matched, active, busy 0 (10287 ms), retain 14>
- | | | | +-o AppleIntelPIIXPATA <class AppleIntelPIIXPATA, id 0x1000001e2, registered, matched, active, busy 0 (10231 ms), retain 7>
- | | | | +-o ATADeviceNub at 0 <class ATADeviceNub, id 0x1000001f5, registered, matched, active, busy 0 (10230 ms), retain 6>
- | | | | +-o IOATAPIProtocolTransport <class IOATAPIProtocolTransport, id 0x1000001f8, registered, matched, active, busy 0 (10221 ms), retain 8>
- | | | | +-o IOSCSIPeripheralDeviceNub <class IOSCSIPeripheralDeviceNub, id 0x1000001fb, registered, matched, active, busy 0 (10013 ms), retain 6>
- | | | | +-o IOSCSIPeripheralDeviceType05 <class IOSCSIPeripheralDeviceType05, id 0x100000222, !registered, !matched, active, busy 0 (3701 ms), retain 7>
- | | | | +-o IODVDServices <class IODVDServices, id 0x100000263, registered, matched, active, busy 0 (3701 ms), retain 6>
- | | | | +-o IODVDBlockStorageDriver <class IODVDBlockStorageDriver, id 0x100000264, registered, matched, active, busy 0 (3699 ms), retain 7>
- | | | | | +-o HL-DT-ST DVDRW GSA-S10N Media <class IODVDMedia, id 0x100000269, registered, matched, active, busy 0 (3698 ms), retain 10>
- | | | | | +-o IODVDMediaBSDClient <class IODVDMediaBSDClient, id 0x10000026a, registered, matched, active, busy 0 (2 ms), retain 5>
- | | | | | +-o IOApplePartitionScheme <class IOApplePartitionScheme, id 0x1000002f4, !registered, !matched, active, busy 0 (14 ms), retain 8>
- | | | | | +-o Apple at 1 <class IOMedia, id 0x1000002f5, registered, matched, active, busy 0 (11 ms), retain 8>
- | | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x1000002f8, registered, matched, active, busy 0 (5 ms), retain 5>
- | | | | | +-o Macintosh at 2 <class IOMedia, id 0x1000002f6, registered, matched, active, busy 0 (12 ms), retain 8>
- | | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x1000002f9, registered, matched, active, busy 0 (5 ms), retain 5>
- | | | | | +-o Mac_OS_X at 3 <class IOMedia, id 0x1000002f7, registered, matched, active, busy 0 (14 ms), retain 9>
- | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x1000002fa, registered, matched, active, busy 0 (5 ms), retain 6>
- | | | | +-o SCSITaskUserClientIniter <class SCSITaskUserClientIniter, id 0x100000265, !registered, !matched, active, busy 0, retain 4>
- | | | +-o CHN1 at 1 <class AppleIntelPIIXATAChannel, id 0x1000001d2, registered, matched, active, busy 0 (75 ms), retain 6>
- | | +-o SATA at 1F,2 <class IOPCIDevice, id 0x10000019e, registered, matched, active, busy 0 (387 ms), retain 13>
- | | | +-o AppleAHCI <class AppleAHCI, id 0x1000001d3, registered, matched, active, busy 0 (208 ms), retain 7>
- | | | +-o PRT2 at 2 <class AppleAHCIPort, id 0x1000001a0, registered, matched, active, busy 0 (170 ms), retain 10>
- | | | +-o IOAHCIDevice at 0 <class IOAHCIDevice, id 0x1000001eb, registered, matched, active, busy 0 (170 ms), retain 11>
- | | | +-o AppleAHCIDiskDriver <class AppleAHCIDiskDriver, id 0x1000001ec, registered, matched, active, busy 0 (51 ms), retain 6>
- | | | +-o IOAHCIBlockStorageDevice <class IOAHCIBlockStorageDevice, id 0x100000203, registered, matched, active, busy 0 (51 ms), retain 6>
- | | | +-o IOBlockStorageDriver <class IOBlockStorageDriver, id 0x100000207, registered, matched, active, busy 0 (49 ms), retain 7>
- | | | +-o FUJITSU MHY2120BH Media <class IOMedia, id 0x100000208, registered, matched, active, busy 0 (49 ms), retain 10>
- | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000020f, registered, matched, active, busy 0 (0 ms), retain 5>
- | | | +-o IOGUIDPartitionScheme <class IOGUIDPartitionScheme, id 0x10000021b, !registered, !matched, active, busy 0 (13 ms), retain 7>
- | | | +-o EFI System Partition at 1 <class IOMedia, id 0x10000021e, registered, matched, active, busy 0 (3 ms), retain 8>
- | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000220, registered, matched, active, busy 0 (1 ms), retain 5>
- | | | +-o Untitled at 2 <class IOMedia, id 0x10000021f, registered, matched, active, busy 0 (13 ms), retain 10>
- | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000221, registered, matched, active, busy 0 (1 ms), retain 6>
- | | +-o SBUS at 1F,3 <class IOPCIDevice, id 0x1000001a1, registered, matched, active, busy 0 (203 ms), retain 8>
- | +-o PDRC <class IOACPIPlatformDevice, id 0x100000130, registered, matched, active, busy 0 (9 ms), retain 6>
- | +-o SMC <class IOACPIPlatformDevice, id 0x10000015f, registered, matched, active, busy 0 (451 ms), retain 9>
- | | +-o AppleSMC <class AppleSMC, id 0x1000002ae, registered, matched, active, busy 0 (191 ms), retain 6>
- | | +-o SMCWatchDogTimer <class SMCWatchDogTimer, id 0x1000002b3, registered, matched, active, busy 0 (129 ms), retain 5>
- | +-o SMS0 <class IOACPIPlatformDevice, id 0x100000160, registered, matched, active, busy 0 (377 ms), retain 7>
- | | +-o SMCMotionSensor <class SMCMotionSensor, id 0x1000002dc, registered, matched, active, busy 0 (2 ms), retain 5>
- | +-o EC <class IOACPIPlatformDevice, id 0x100000161, registered, matched, active, busy 0 (245 ms), retain 10>
- | | +-o AppleACPIEC <class AppleACPIEC, id 0x100000124, !registered, !matched, active, busy 0, retain 6>
- | +-o SMB0 <class IOACPIPlatformDevice, id 0x100000162, registered, matched, active, busy 0 (34 ms), retain 9>
- | | +-o AppleECSMBusController <class AppleECSMBusController, id 0x1000001ed, registered, matched, active, busy 0 (16 ms), retain 5>
- | | +-o AppleSmartBatteryManager <class AppleSmartBatteryManager, id 0x1000001ee, registered, matched, active, busy 0 (3 ms), retain 6>
- | | +-o AppleSmartBattery <class AppleSmartBattery, id 0x1000001f0, registered, matched, active, busy 0 (0 ms), retain 5>
- | +-o SBS0 <class IOACPIPlatformDevice, id 0x100000163, registered, matched, active, busy 0 (19 ms), retain 6>
- | +-o DMAC <class IOACPIPlatformDevice, id 0x100000164, registered, matched, active, busy 0 (21 ms), retain 6>
- | +-o FWHD <class IOACPIPlatformDevice, id 0x100000165, registered, matched, active, busy 0 (22 ms), retain 6>
- | +-o HPET <class IOACPIPlatformDevice, id 0x100000166, registered, matched, active, busy 0 (24 ms), retain 7>
- | | +-o AppleHPET <class AppleHPET, id 0x1000001bc, !registered, !matched, active, busy 0, retain 4>
- | +-o IPIC <class IOACPIPlatformDevice, id 0x100000167, registered, matched, active, busy 0 (25 ms), retain 6>
- | +-o MATH <class IOACPIPlatformDevice, id 0x100000168, registered, matched, active, busy 0 (26 ms), retain 6>
- | +-o LDRC <class IOACPIPlatformDevice, id 0x100000169, registered, matched, active, busy 0 (27 ms), retain 6>
- | +-o RTC <class IOACPIPlatformDevice, id 0x10000016a, registered, matched, active, busy 0 (38 ms), retain 8>
- | | +-o AppleRTC <class AppleRTC, id 0x1000001bd, registered, matched, active, busy 0 (1 ms), retain 6>
- | +-o TIMR <class IOACPIPlatformDevice, id 0x10000016b, registered, matched, active, busy 0 (29 ms), retain 6>
- | +-o AppleEFIRuntime <class AppleEFIRuntime, id 0x1000001be, registered, matched, active, busy 0 (297 ms), retain 7>
- | | +-o AppleEFINVRAM <class AppleEFINVRAM, id 0x1000001bf, registered, matched, active, busy 0 (1 ms), retain 7>
- | +-o IOPCIMessagedInterruptController <class IOPCIMessagedInterruptController, id 0x1000001c1, registered, matched, active, busy 0 (2 ms), retain 6>
- | +-o AppleRawIOAddressSpace <class AppleRawIOAddressSpace, id 0x10000028a, registered, matched, active, busy 0 (2 ms), retain 4>
- | +-o AppleRawPhysicalMemoryAddressSpace <class AppleRawPhysicalMemoryAddressSpace, id 0x10000028b, registered, matched, active, busy 0 (4 ms), retain 4>
- +-o IOResources <class IOResources, id 0x100000113, registered, matched, active, busy 0 (824 ms), retain 24>
- +-o AppleIntelCPUPowerManagement <class AppleIntelCPUPowerManagement, id 0x10000011b, registered, matched, active, busy 0 (252 ms), retain 5>
- | +-o AppleIntelCPUPowerManagementClient <class AppleIntelCPUPowerManagementClient, id 0x100000120, !registered, !matched, active, busy 0, retain 4>
- +-o IOHDIXController <class IOHDIXController, id 0x10000011c, registered, matched, active, busy 0 (2 ms), retain 4>
- +-o com_apple_AppleFSCompression_AppleFSCompressionTypeZlib <class com_apple_AppleFSCompression_AppleFSCompressionTypeZlib, id 0x1000001dc, !registered, !matched, active, busy 0, retain 4>
- +-o com_apple_BootCache <class com_apple_BootCache, id 0x1000001dd, !registered, !matched, active, busy 0, retain 4>
- +-o IONetworkStack <class IONetworkStack, id 0x1000001de, registered, matched, active, busy 0 (2 ms), retain 11>
- | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x100000266, !registered, !matched, active, busy 0, retain 5>
- +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 15>
- | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
- | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
- | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
- | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
- +-o AppleProfileOSHooks <class AppleProfileOSHooks, id 0x100000281, registered, matched, active, busy 0 (187 ms), retain 15>
- | +-o AppleProfileTimeTrigger <class AppleProfileTimeTrigger, id 0x10000028f, registered, matched, active, busy 0 (168 ms), retain 6>
- | +-o AppleProfilePMITrigger <class AppleProfilePMITrigger, id 0x100000290, registered, matched, active, busy 0 (168 ms), retain 6>
- | +-o AppleOSXPerformanceMonitor <class AppleOSXPerformanceMonitor, id 0x100000291, !registered, !matched, active, busy 0 (173 ms), retain 6>
- | | +-o AppleOSXPerformanceCounter <class AppleOSXPerformanceCounter, id 0x10000029c, registered, matched, active, busy 0 (170 ms), retain 6>
- | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 18>
- | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | +-o AppleOSXPerformanceCounter <class AppleOSXPerformanceCounter, id 0x10000029d, registered, matched, active, busy 0 (173 ms), retain 6>
- | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 18>
- | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | +-o AppleProfileKEventTrigger <class AppleProfileKEventTrigger, id 0x100000293, registered, matched, active, busy 0 (175 ms), retain 6>
- | +-o AppleProfileManualTrigger <class AppleProfileManualTrigger, id 0x100000294, registered, matched, active, busy 0 (2 ms), retain 6>
- | +-o AppleProfileCallstackAction <class AppleProfileCallstackAction, id 0x100000295, !registered, !matched, active, busy 0, retain 5>
- | +-o AppleProfileKEventAction <class AppleProfileKEventAction, id 0x100000296, !registered, !matched, active, busy 0, retain 5>
- | +-o AppleProfileRegisterStateAction <class AppleProfileRegisterStateAction, id 0x100000297, !registered, !matched, active, busy 0, retain 5>
- | +-o AppleProfileThreadInfoAction <class AppleProfileThreadInfoAction, id 0x100000298, !registered, !matched, active, busy 0, retain 5>
- | +-o AppleProfileTimestampAction <class AppleProfileTimestampAction, id 0x100000299, !registered, !matched, active, busy 0, retain 5>
- +-o com_apple_driver_AudioIPCDevice <class com_apple_driver_AudioIPCDevice, id 0x100000282, registered, matched, active, busy 0 (165 ms), retain 6>
- | +-o com_apple_driver_AudioIPCEngine <class com_apple_driver_AudioIPCEngine, id 0x10000028c, registered, matched, active, busy 0 (164 ms), retain 9>
- | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000333, !registered, !matched, active, busy 0, retain 6>
- | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000365, !registered, !matched, active, busy 0, retain 6>
- | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000394, !registered, !matched, active, busy 0, retain 6>
- | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a4, !registered, !matched, active, busy 0, retain 6>
- +-o CHUDKernLib <class CHUDKernLib, id 0x100000283, registered, matched, active, busy 0 (170 ms), retain 4>
- +-o CHUDProf <class CHUDProf, id 0x100000284, registered, matched, active, busy 0 (307 ms), retain 4>
- +-o CHUDUtils <class CHUDUtils, id 0x100000285, registered, matched, active, busy 0 (310 ms), retain 4>
- +-o Dont_Steal_Mac_OS_X <class Dont_Steal_Mac_OS_X, id 0x100000286, !registered, !matched, active, busy 0, retain 5>
- +-o IOBluetoothSerialManager <class IOBluetoothSerialManager, id 0x100000287, registered, matched, active, busy 0 (376 ms), retain 7>
- | +-o IOBluetoothSerialClient <class IOBluetoothSerialClient, id 0x1000002d3, !registered, !matched, active, busy 0 (133 ms), retain 5>
- | | +-o IOBluetoothSerialClientSerialStreamSync <class IOBluetoothSerialClientSerialStreamSync, id 0x1000002d5, registered, matched, active, busy 0 (133 ms), retain 5>
- | | +-o IOSerialBSDClient <class IOSerialBSDClient, id 0x1000002df, registered, matched, active, busy 0 (6 ms), retain 4>
- | +-o IOBluetoothSerialClient <class IOBluetoothSerialClient, id 0x1000002de, !registered, !matched, active, busy 0 (76 ms), retain 5>
- | +-o IOBluetoothSerialClientModemStreamSync <class IOBluetoothSerialClientModemStreamSync, id 0x1000002e0, registered, matched, active, busy 0 (76 ms), retain 5>
- | +-o IOSerialBSDClient <class IOSerialBSDClient, id 0x1000002e8, registered, matched, active, busy 0 (6 ms), retain 4>
- +-o IODisplayWrangler <class IODisplayWrangler, id 0x100000288, registered, matched, active, busy 0 (169 ms), retain 7>
- | +-o IOAccelerationUserClient <class IOAccelerationUserClient, id 0x100000370, !registered, !matched, active, busy 0, retain 5>
- +-o IOSurfaceRoot <class IOSurfaceRoot, id 0x100000289, registered, matched, active, busy 0 (171 ms), retain 5>
- +-o AppleSCSISubsystemGlobals <class AppleSCSISubsystemGlobals, id 0x1000002fd, registered, matched, active, busy 0 (1 ms), retain 5>
diff --git a/resources/macos/ioreg/IOUSBDevice1 b/resources/macos/ioreg/IOUSBDevice1
new file mode 100644
index 0000000..3d58b39
--- /dev/null
+++ b/resources/macos/ioreg/IOUSBDevice1
@@ -0,0 +1,748 @@
++-o Root <class IORegistryEntry, id 0x100000100, retain 13>
+ +-o MacBook2,1 <class IOPlatformExpertDevice, id 0x100000110, registered, matched, active, busy 0 (16937 ms), retain 25>
+ +-o AppleACPIPlatformExpert <class AppleACPIPlatformExpert, id 0x100000111, registered, matched, active, busy 0 (15867 ms), retain 38>
+ | +-o IOPMrootDomain <class IOPMrootDomain, id 0x100000114, registered, matched, active, busy 0 (12 ms), retain 48>
+ | | +-o IORootParent <class IORootParent, id 0x100000115, !registered, !matched, active, busy 0, retain 7>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000267, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000268, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000026d, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000026e, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000271, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000272, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000002ed, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000319, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000329, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000032f, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000332, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000363, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000364, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000036d, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000036e, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000036f, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000371, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000392, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000393, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003a1, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003a2, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003a3, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003b9, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003bc, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000041e, !registered, !matched, active, busy 0, retain 5>
+ | +-o cpus <class IOPlatformDevice, id 0x100000117, registered, matched, active, busy 0 (4 ms), retain 7>
+ | +-o CPU0 at 0 <class IOACPIPlatformDevice, id 0x100000118, registered, matched, active, busy 0 (418 ms), retain 7>
+ | | +-o AppleACPICPU <class AppleACPICPU, id 0x10000011d, registered, matched, active, busy 0 (406 ms), retain 9>
+ | | +-o AppleACPICPUInterruptController <class AppleACPICPUInterruptController, id 0x10000011f, registered, matched, active, busy 0 (1 ms), retain 5>
+ | | +-o ACPI_SMC_PlatformPlugin <class ACPI_SMC_PlatformPlugin, id 0x10000027b, registered, matched, active, busy 0 (8 ms), retain 9>
+ | | +-o AppleIntelMeromPerformanceMonitor <class AppleIntelMeromPerformanceMonitor, id 0x10000027c, !registered, !matched, active, busy 0 (145 ms), retain 9>
+ | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002ce, registered, matched, active, busy 0 (125 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002cf, registered, matched, active, busy 0 (126 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002d0, registered, matched, active, busy 0 (133 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002d1, registered, matched, active, busy 0 (145 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002d2, registered, matched, active, busy 0 (133 ms), retain 7>
+ | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | +-o AppleIntelMeromSPR <class AppleIntelMeromSPR, id 0x1000002b4, registered, matched, active, busy 0 (135 ms), retain 4>
+ | +-o CPU1 at 1 <class IOACPIPlatformDevice, id 0x100000119, registered, matched, active, busy 0 (392 ms), retain 7>
+ | | +-o AppleACPICPU <class AppleACPICPU, id 0x10000011e, registered, matched, active, busy 0 (374 ms), retain 7>
+ | | +-o AppleIntelMeromPerformanceMonitor <class AppleIntelMeromPerformanceMonitor, id 0x1000002ba, !registered, !matched, active, busy 0 (124 ms), retain 9>
+ | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002c2, registered, matched, active, busy 0 (3 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002c4, registered, matched, active, busy 0 (6 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002c5, registered, matched, active, busy 0 (120 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002c6, registered, matched, active, busy 0 (122 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002c7, registered, matched, active, busy 0 (124 ms), retain 7>
+ | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | +-o AppleIntelMeromSPR <class AppleIntelMeromSPR, id 0x1000002bb, registered, matched, active, busy 0 (125 ms), retain 4>
+ | +-o io-apic at fec00000 <class IOACPIPlatformDevice, id 0x10000011a, registered, matched, active, busy 0 (4 ms), retain 6>
+ | | +-o AppleAPICInterruptController <class AppleAPICInterruptController, id 0x100000121, registered, matched, active, busy 0 (1 ms), retain 11>
+ | +-o AppleACPIEventController <class AppleACPIEventController, id 0x100000122, !registered, !matched, active, busy 0, retain 6>
+ | +-o boot-ec <class IOACPIPlatformDevice, id 0x100000123, registered, matched, active, busy 0 (3 ms), retain 6>
+ | | +-o AppleACPIEC <class AppleACPIEC, id 0x100000124, !registered, !matched, active, busy 0, retain 6>
+ | +-o bios <class IOPlatformDevice, id 0x100000125, registered, matched, active, busy 0 (4 ms), retain 5>
+ | | +-o AppleSMBIOS <class AppleSMBIOS, id 0x100000126, registered, matched, active, busy 0 (1 ms), retain 4>
+ | +-o ADP1 <class IOACPIPlatformDevice, id 0x10000012a, registered, matched, active, busy 0 (2 ms), retain 7>
+ | | +-o AppleACPIACAdapter <class AppleACPIACAdapter, id 0x1000001a2, !registered, !matched, active, busy 0, retain 4>
+ | +-o LID0 <class IOACPIPlatformDevice, id 0x10000012b, registered, matched, active, busy 0 (3 ms), retain 9>
+ | | +-o AppleACPILid <class AppleACPILid, id 0x1000001a3, !registered, !matched, active, busy 0, retain 5>
+ | +-o PNLF <class IOACPIPlatformDevice, id 0x10000012c, registered, matched, active, busy 0 (13 ms), retain 7>
+ | | +-o AppleIntelPanelA <class AppleIntelPanelA, id 0x100000273, !registered, !matched, active, busy 0, retain 5>
+ | +-o PWRB <class IOACPIPlatformDevice, id 0x10000012d, registered, matched, active, busy 0 (5 ms), retain 8>
+ | | +-o AppleACPIButton <class AppleACPIButton, id 0x1000001a4, !registered, !matched, active, busy 0, retain 4>
+ | +-o SLPB <class IOACPIPlatformDevice, id 0x10000012e, registered, matched, active, busy 0 (6 ms), retain 7>
+ | | +-o AppleACPIButton <class AppleACPIButton, id 0x1000001a5, !registered, !matched, active, busy 0, retain 4>
+ | +-o PCI0 at 0 <class IOACPIPlatformDevice, id 0x10000012f, registered, matched, active, busy 0 (15786 ms), retain 43>
+ | | +-o AppleACPIPCI <class AppleACPIPCI, id 0x1000001a6, registered, matched, active, busy 0 (15772 ms), retain 40>
+ | | +-o pci8086,27a0 at 0 <class IOPCIDevice, id 0x1000001a8, registered, matched, active, busy 0 (5445 ms), retain 8>
+ | | | +-o AppleSMCPDRC <class AppleSMCPDRC, id 0x1000002a9, registered, matched, active, busy 0 (1 ms), retain 4>
+ | | +-o GFX0 at 2 <class IOPCIDevice, id 0x100000174, registered, matched, active, busy 0 (551 ms), retain 17>
+ | | | +-o AppleIntelIntegratedFramebuffer <class AppleIntelIntegratedFramebuffer, id 0x1000002b5, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o AppleIntelFramebuffer <class AppleIntelFramebuffer, id 0x1000002d8, registered, matched, active, busy 0 (239 ms), retain 14>
+ | | | | +-o AppleMCCSControlModule <class AppleMCCSControlModule, id 0x1000002e2, registered, matched, active, busy 0 (79 ms), retain 5>
+ | | | | | +-o AppleMCCSParameterHandler <class AppleMCCSParameterHandler, id 0x1000002eb, registered, matched, active, busy 0 (6 ms), retain 4>
+ | | | | +-o AppleUpstreamUserClientDriver <class AppleUpstreamUserClientDriver, id 0x1000002e3, registered, matched, active, busy 0 (3 ms), retain 4>
+ | | | | +-o IOFramebufferI2CInterface <class IOFramebufferI2CInterface, id 0x10000031c, registered, matched, active, busy 0 (3 ms), retain 5>
+ | | | | +-o display0 <class IODisplayConnect, id 0x10000031d, registered, matched, active, busy 0 (28 ms), retain 5>
+ | | | | | +-o AppleBacklightDisplay <class AppleBacklightDisplay, id 0x10000031e, registered, matched, active, busy 0 (2 ms), retain 8>
+ | | | | +-o IOFramebufferUserClient <class IOFramebufferUserClient, id 0x100000325, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelFramebuffer <class AppleIntelFramebuffer, id 0x1000002da, registered, matched, active, busy 0 (212 ms), retain 12>
+ | | | | +-o AppleMCCSControlModule <class AppleMCCSControlModule, id 0x1000002e5, registered, matched, active, busy 0 (8 ms), retain 5>
+ | | | | | +-o AppleMCCSParameterHandler <class AppleMCCSParameterHandler, id 0x1000002e9, registered, matched, active, busy 0 (6 ms), retain 4>
+ | | | | +-o AppleUpstreamUserClientDriver <class AppleUpstreamUserClientDriver, id 0x1000002e6, registered, matched, active, busy 0 (5 ms), retain 4>
+ | | | | +-o IOFramebufferI2CInterface <class IOFramebufferI2CInterface, id 0x100000324, registered, matched, active, busy 0 (3 ms), retain 5>
+ | | | | +-o IOFramebufferUserClient <class IOFramebufferUserClient, id 0x100000327, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915 <class Intel915, id 0x1000002b7, registered, matched, active, busy 0 (2 ms), retain 18>
+ | | | +-o Intel9152DContext <class Intel9152DContext, id 0x100000326, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel9152DContext <class Intel9152DContext, id 0x100000328, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915Device <class Intel915Device, id 0x10000032d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915GLContext <class Intel915GLContext, id 0x10000032e, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915Surface <class Intel915Surface, id 0x10000035e, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915Surface <class Intel915Surface, id 0x100000372, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915GLContext <class Intel915GLContext, id 0x100000373, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915Surface <class Intel915Surface, id 0x100000384, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915Surface <class Intel915Surface, id 0x100000385, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915Surface <class Intel915Surface, id 0x100000391, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915Device <class Intel915Device, id 0x1000003be, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915GLContext <class Intel915GLContext, id 0x1000003bf, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915GLContext <class Intel915GLContext, id 0x1000003c0, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915Surface <class Intel915Surface, id 0x1000003c1, !registered, !matched, active, busy 0, retain 5>
+ | | +-o display at 2,1 <class IOPCIDevice, id 0x1000001a9, registered, matched, active, busy 0 (637 ms), retain 9>
+ | | | +-o IONDRVFramebuffer <class IONDRVFramebuffer, id 0x100000277, registered, matched, active, busy 0 (458 ms), retain 7>
+ | | | +-o AppleMCCSControlModule <class AppleMCCSControlModule, id 0x1000002ac, registered, matched, active, busy 0 (125 ms), retain 5>
+ | | | | +-o AppleMCCSParameterHandler <class AppleMCCSParameterHandler, id 0x1000002dd, registered, matched, active, busy 0 (4 ms), retain 4>
+ | | | +-o AppleUpstreamUserClientDriver <class AppleUpstreamUserClientDriver, id 0x1000002ad, registered, matched, active, busy 0 (107 ms), retain 4>
+ | | +-o pci8086,27a3 at 7 <class IOPCIDevice, id 0x1000001aa, registered, matched, active, busy 0 (32 ms), retain 7>
+ | | +-o HDEF at 1B <class IOPCIDevice, id 0x100000178, registered, matched, active, busy 0 (739 ms), retain 10>
+ | | | +-o AppleHDAController at 1B <class AppleHDAController, id 0x100000280, registered, matched, active, busy 0 (348 ms), retain 7>
+ | | | +-o IOHDACodecDevice at 1B,0 <class IOHDACodecDevice, id 0x1000002a8, registered, matched, active, busy 0 (348 ms), retain 6>
+ | | | +-o IOHDACodecDriver <class IOHDACodecDriver, id 0x1000002d6, !registered, !matched, active, busy 0 (261 ms), retain 5>
+ | | | +-o IOHDACodecFunction at 1B,0,1 <class IOHDACodecFunction, id 0x1000002d7, registered, matched, active, busy 0 (261 ms), retain 6>
+ | | | +-o AppleHDACodecGeneric <class AppleHDACodecGeneric, id 0x1000002e1, registered, matched, active, busy 0 (101 ms), retain 5>
+ | | | +-o AppleHDADriver <class AppleHDADriver, id 0x1000002ec, registered, matched, active, busy 0 (21 ms), retain 8>
+ | | | +-o AppleHDAEngineOutput at 1B,0,1,2 <class AppleHDAEngineOutput, id 0x100000302, registered, matched, active, busy 0 (9 ms), retain 28>
+ | | | | +-o AppleHDAStream <class AppleHDAStream, id 0x100000303, registered, matched, active, busy 0 (5 ms), retain 8>
+ | | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x100000304, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033f, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039c, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b4, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000305, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000340, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039d, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b5, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000306, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000341, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039e, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b6, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000307, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000342, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039f, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b7, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000308, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000343, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a0, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b8, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o AudioAUUCDriver <class AudioAUUCDriver, id 0x10000030a, registered, matched, active, busy 0 (4 ms), retain 4>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000336, !registered, !matched, active, busy 0, retain 7>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000347, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000368, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000036c, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000397, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000039b, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a7, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003ab, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o AppleHDAEngineInput at 1B,0,1,0 <class AppleHDAEngineInput, id 0x100000309, registered, matched, active, busy 0 (6 ms), retain 24>
+ | | | | +-o AppleHDAStream <class AppleHDAStream, id 0x10000030b, registered, matched, active, busy 0 (5 ms), retain 7>
+ | | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x10000030c, !registered, !matched, active, busy 0 (0 ms), retain 10>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033b, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ac, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x10000030d, !registered, !matched, active, busy 0 (0 ms), retain 10>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033c, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ad, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x10000030e, !registered, !matched, active, busy 0 (0 ms), retain 10>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033d, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ae, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x10000030f, !registered, !matched, active, busy 0 (0 ms), retain 18>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033e, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000345, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000399, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a9, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003af, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000335, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000346, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000367, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000396, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000039a, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a6, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003aa, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o AppleHDAEngineInput at 1B,0,1,1 <class AppleHDAEngineInput, id 0x100000310, registered, matched, active, busy 0 (6 ms), retain 24>
+ | | | +-o AppleHDAStream <class AppleHDAStream, id 0x100000311, registered, matched, active, busy 0 (5 ms), retain 7>
+ | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x100000313, !registered, !matched, active, busy 0 (0 ms), retain 10>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000337, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b0, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000314, !registered, !matched, active, busy 0 (0 ms), retain 10>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000338, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b1, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000315, !registered, !matched, active, busy 0 (0 ms), retain 10>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000339, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b2, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000316, !registered, !matched, active, busy 0 (0 ms), retain 10>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033a, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b3, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000334, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000344, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000366, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000369, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000395, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000398, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a5, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a8, !registered, !matched, active, busy 0, retain 6>
+ | | +-o RP01 at 1C <class IOPCIDevice, id 0x100000179, registered, matched, active, busy 0 (6297 ms), retain 11>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001c2, registered, matched, active, busy 0 (6262 ms), retain 7>
+ | | | +-o PXS1 at 0 <class IOPCIDevice, id 0x10000017a, registered, matched, active, busy 0 (6262 ms), retain 10>
+ | | | +-o yukon2osx <class yukon2osx, id 0x1000001c6, !registered, !matched, active, busy 0 (2 ms), retain 7>
+ | | | +-o yukon <class yukon, id 0x100000260, !registered, !matched, active, busy 0 (2 ms), retain 8>
+ | | | +-o IOEthernetInterface <class IOEthernetInterface, id 0x100000261, registered, matched, active, busy 0 (2 ms), retain 11>
+ | | | +-o IONetworkStack <class IONetworkStack, id 0x1000001de, registered, matched, active, busy 0 (2 ms), retain 11>
+ | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x100000266, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RP02 at 1C,1 <class IOPCIDevice, id 0x10000017b, registered, matched, active, busy 0 (509 ms), retain 11>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001e3, registered, matched, active, busy 0 (299 ms), retain 7>
+ | | | +-o PXS2 at 0 <class IOPCIDevice, id 0x10000017c, registered, matched, active, busy 0 (288 ms), retain 12>
+ | | | +-o AirPort_AthrFusion21 <class AirPort_AthrFusion21, id 0x10000027d, registered, matched, active, busy 0 (100 ms), retain 8>
+ | | | +-o AtherosFusion21Interface <class AtherosFusion21Interface, id 0x1000002ab, registered, matched, active, busy 0 (99 ms), retain 10>
+ | | | +-o IONetworkStack <class IONetworkStack, id 0x1000001de, registered, matched, active, busy 0 (2 ms), retain 11>
+ | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x100000266, !registered, !matched, active, busy 0, retain 5>
+ | | +-o USB1 at 1D <class IOPCIDevice, id 0x10000017d, registered, matched, active, busy 0 (967 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001e1, registered, matched, active, busy 0 (634 ms), retain 9>
+ | | | +-o UHCI Root Hub Simulation at 1D <class IOUSBRootHubDevice, id 0x1000001fe, registered, matched, active, busy 0 (8 ms), retain 10>
+ | | | | | {
+ | | | | | "sessionID" = 555462596
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 32773
+ | | | | | "bcdDevice" = 272
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 8
+ | | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 1
+ | | | | | "bDeviceClass" = 9
+ | | | | | "locationID" = 486539264
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 2
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "bDeviceProtocol" = 0
+ | | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | | "Device Speed" = 1
+ | | | | | "idVendor" = 1452
+ | | | | | "AAPL,current-in-sleep" = 1000
+ | | | | | "Requested Power" = 0
+ | | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000200, !registered, !matched, active, busy 0, retain 8>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000202, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o Apple Internal Keyboard / Trackpad at 1d200000 <class IOUSBDevice, id 0x100000227, registered, matched, active, busy 0 (625 ms), retain 12>
+ | | | | {
+ | | | | "sessionID" = 922879256
+ | | | | "iManufacturer" = 1
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 539
+ | | | | "bcdDevice" = 24
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 8
+ | | | | "USB Product Name" = "Apple Internal Keyboard / Trackpad"
+ | | | | "iProduct" = 2
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 2
+ | | | | "bDeviceClass" = 0
+ | | | | "locationID" = 488636416
+ | | | | "bDeviceSubClass" = 0
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "PortNum" = 2
+ | | | | "non-removable" = "yes"
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 0
+ | | | | "Need contiguous memory for isoch" = Yes
+ | | | | "USB Vendor Name" = "Apple Computer"
+ | | | | "Device Speed" = 1
+ | | | | "idVendor" = 1452
+ | | | | "Requested Power" = 20
+ | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x100000229, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o Apple Internal Keyboard at 0 <class IOUSBInterface, id 0x10000022b, registered, matched, active, busy 0 (520 ms), retain 8>
+ | | | | +-o AppleUSBTCKeyboard <class AppleUSBTCKeyboard, id 0x100000232, registered, matched, active, busy 0 (101 ms), retain 8>
+ | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000238, registered, matched, active, busy 0 (6 ms), retain 6>
+ | | | | +-o AppleUSBTCKeyEventDriver <class AppleUSBTCKeyEventDriver, id 0x100000239, registered, matched, active, busy 0 (1 ms), retain 8>
+ | | | | +-o IOHIDKeyboard <class IOHIDKeyboard, id 0x10000023b, registered, matched, active, busy 0 (0 ms), retain 8>
+ | | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 16>
+ | | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 15>
+ | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Touchpad at 1 <class IOUSBInterface, id 0x10000022c, registered, matched, active, busy 0 (382 ms), retain 7>
+ | | | | +-o AppleUSBGrIIITrackpad <class AppleUSBGrIIITrackpad, id 0x10000023d, registered, matched, active, busy 0 (117 ms), retain 16>
+ | | | | +-o RawDataReporter <class RawDataReporter, id 0x10000023e, registered, matched, active, busy 0 (105 ms), retain 6>
+ | | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x10000023f, registered, matched, active, busy 0 (3 ms), retain 5>
+ | | | | +-o IOHIDPointingDevice <class IOHIDPointingDevice, id 0x100000241, registered, matched, active, busy 0 (107 ms), retain 6>
+ | | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000242, registered, matched, active, busy 0 (3 ms), retain 5>
+ | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 15>
+ | | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o BaselineReporter <class BaselineReporter, id 0x100000244, registered, matched, active, busy 0 (108 ms), retain 6>
+ | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000245, registered, matched, active, busy 0 (3 ms), retain 5>
+ | | | +-o Apple Internal Keyboard at 2 <class IOUSBInterface, id 0x10000022d, registered, matched, active, busy 0 (202 ms), retain 8>
+ | | | +-o AppleUSBTCKeyboard <class AppleUSBTCKeyboard, id 0x100000247, registered, matched, active, busy 0 (110 ms), retain 8>
+ | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000248, registered, matched, active, busy 0 (103 ms), retain 6>
+ | | | +-o IOHIDEventDriver <class IOHIDEventDriver, id 0x1000002a1, registered, matched, active, busy 0 (3 ms), retain 8>
+ | | | +-o IOHIDConsumer <class IOHIDConsumer, id 0x1000002a2, registered, matched, active, busy 0 (1 ms), retain 8>
+ | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 16>
+ | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 15>
+ | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
+ | | +-o USB2 at 1D,1 <class IOPCIDevice, id 0x100000181, registered, matched, active, busy 0 (352 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001f3, registered, matched, active, busy 0 (13 ms), retain 8>
+ | | | +-o UHCI Root Hub Simulation at 1D,1 <class IOUSBRootHubDevice, id 0x100000206, registered, matched, active, busy 0 (10 ms), retain 8>
+ | | | | {
+ | | | | "sessionID" = 564210044
+ | | | | "iManufacturer" = 2
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 32773
+ | | | | "bcdDevice" = 272
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 8
+ | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | "iProduct" = 1
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 1
+ | | | | "bDeviceClass" = 9
+ | | | | "locationID" = 1023410176
+ | | | | "bDeviceSubClass" = 0
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "Ports" = 2
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 0
+ | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | "Device Speed" = 1
+ | | | | "idVendor" = 1452
+ | | | | "AAPL,current-in-sleep" = 1000
+ | | | | "Requested Power" = 0
+ | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o AppleUSBHub <class AppleUSBHub, id 0x10000020b, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000020d, !registered, !matched, active, busy 0, retain 7>
+ | | +-o USB3 at 1D,2 <class IOPCIDevice, id 0x100000185, registered, matched, active, busy 0 (647 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001c8, registered, matched, active, busy 0 (297 ms), retain 9>
+ | | | +-o UHCI Root Hub Simulation at 1D,2 <class IOUSBRootHubDevice, id 0x100000209, registered, matched, active, busy 0 (20 ms), retain 10>
+ | | | | | {
+ | | | | | "sessionID" = 572462640
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 32773
+ | | | | | "bcdDevice" = 272
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 8
+ | | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 1
+ | | | | | "bDeviceClass" = 9
+ | | | | | "locationID" = 1560281088
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 2
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "bDeviceProtocol" = 0
+ | | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | | "Device Speed" = 1
+ | | | | | "idVendor" = 1452
+ | | | | | "AAPL,current-in-sleep" = 1000
+ | | | | | "Requested Power" = 0
+ | | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000218, !registered, !matched, active, busy 0, retain 8>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000021a, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o IR Receiver at 5d200000 <class IOUSBDevice, id 0x10000022a, registered, matched, active, busy 0 (276 ms), retain 9>
+ | | | | {
+ | | | | "sessionID" = 944991920
+ | | | | "iManufacturer" = 1
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 33344
+ | | | | "bcdDevice" = 272
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 8
+ | | | | "USB Product Name" = "IR Receiver"
+ | | | | "iProduct" = 2
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 2
+ | | | | "bDeviceClass" = 0
+ | | | | "locationID" = 1562378240
+ | | | | "bDeviceSubClass" = 0
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "PortNum" = 2
+ | | | | "non-removable" = "yes"
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 0
+ | | | | "Need contiguous memory for isoch" = Yes
+ | | | | "USB Vendor Name" = "Apple Computer, Inc."
+ | | | | "Device Speed" = 1
+ | | | | "idVendor" = 1452
+ | | | | "Requested Power" = 50
+ | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x10000022f, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000230, registered, matched, active, busy 0 (261 ms), retain 8>
+ | | | +-o AppleIRController <class AppleIRController, id 0x100000235, registered, matched, active, busy 0 (112 ms), retain 8>
+ | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000236, registered, matched, active, busy 0 (3 ms), retain 5>
+ | | | +-o IOHIDLibUserClient <class IOHIDLibUserClient, id 0x10000035d, !registered, !matched, active, busy 0, retain 6>
+ | | +-o USB4 at 1D,3 <class IOPCIDevice, id 0x100000189, registered, matched, active, busy 0 (2390 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001c9, registered, matched, active, busy 0 (2038 ms), retain 9>
+ | | | +-o UHCI Root Hub Simulation at 1D,3 <class IOUSBRootHubDevice, id 0x10000020e, registered, matched, active, busy 0 (8 ms), retain 10>
+ | | | | | {
+ | | | | | "sessionID" = 575818003
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 32773
+ | | | | | "bcdDevice" = 272
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 8
+ | | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 1
+ | | | | | "bDeviceClass" = 9
+ | | | | | "locationID" = 2097152000
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 2
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "bDeviceProtocol" = 0
+ | | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | | "Device Speed" = 1
+ | | | | | "idVendor" = 1452
+ | | | | | "AAPL,current-in-sleep" = 1000
+ | | | | | "Requested Power" = 0
+ | | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000212, !registered, !matched, active, busy 0, retain 8>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000215, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o WirelessControllerDevice at 7d100000 <class IOUSBDevice, id 0x100000256, registered, matched, active, busy 0 (250 ms), retain 10>
+ | | | | {
+ | | | | "sessionID" = 3290864968
+ | | | | "iManufacturer" = 0
+ | | | | "idProduct" = 33285
+ | | | | "bDeviceClass" = 224
+ | | | | "bcdDevice" = 6501
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 64
+ | | | | "iProduct" = 0
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 2
+ | | | | "bNumConfigurations" = 1
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "locationID" = 2098200576
+ | | | | "bDeviceSubClass" = 1
+ | | | | "USB Product Name" = "Bluetooth USB Host Controller"
+ | | | | "non-removable" = "yes"
+ | | | | "PortNum" = 1
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 1
+ | | | | "Need contiguous memory for isoch" = Yes
+ | | | | "Device Speed" = 1
+ | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | "idVendor" = 1452
+ | | | | "Requested Power" = 0
+ | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o CSRUSBBluetoothHCIController <class CSRUSBBluetoothHCIController, id 0x100000258, registered, matched, active, busy 0 (0 ms), retain 10>
+ | | | | +-o IOBluetoothHCIUserClient <class IOBluetoothHCIUserClient, id 0x100000270, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOBluetoothHCIUserClient <class IOBluetoothHCIUserClient, id 0x1000003ba, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000025a, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOUSBInterface at 1 <class IOUSBInterface, id 0x10000025b, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOUSBInterface at 2 <class IOUSBInterface, id 0x10000025c, !registered, !matched, active, busy 0, retain 6>
+ | | +-o USB7 at 1D,7 <class IOPCIDevice, id 0x10000018d, registered, matched, active, busy 0 (2564 ms), retain 13>
+ | | | +-o IOService <class IOService, id 0x1000001ca, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o AppleUSBEHCI <class AppleUSBEHCI, id 0x1000001cb, registered, matched, active, busy 0 (2383 ms), retain 14>
+ | | | +-o EHCI Root Hub Simulation at 1D,7 <class IOUSBRootHubDevice, id 0x1000001d7, registered, matched, active, busy 0 (32 ms), retain 12>
+ | | | | | {
+ | | | | | "sessionID" = 410970048
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 32774
+ | | | | | "bcdDevice" = 512
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 64
+ | | | | | "USB Product Name" = "EHCI Root Hub Simulation"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 1
+ | | | | | "bDeviceClass" = 9
+ | | | | | "locationID" = 18446744073659219968
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 8
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "bDeviceProtocol" = 1
+ | | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | | "Device Speed" = 2
+ | | | | | "idVendor" = 1452
+ | | | | | "AAPL,current-in-sleep" = 4000
+ | | | | | "Requested Power" = 0
+ | | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x1000001e8, registered, matched, active, busy 0 (0 ms), retain 9>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x1000001ea, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o Built-in iSight at fd400000 <class IOUSBDevice, id 0x10000024e, registered, matched, active, busy 0 (50 ms), retain 9>
+ | | | | | {
+ | | | | | "sessionID" = 2717373407
+ | | | | | "iManufacturer" = 1
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 34049
+ | | | | | "bcdDevice" = 393
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 64
+ | | | | | "USB Product Name" = "Built-in iSight"
+ | | | | | "iProduct" = 2
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 2
+ | | | | | "bDeviceClass" = 255
+ | | | | | "locationID" = 18446744073663414272
+ | | | | | "bDeviceSubClass" = 255
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "PortNum" = 4
+ | | | | | "non-removable" = "yes"
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "bDeviceProtocol" = 255
+ | | | | | "USB Vendor Name" = "Micron"
+ | | | | | "Device Speed" = 2
+ | | | | | "idVendor" = 1452
+ | | | | | "Requested Power" = 50
+ | | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | | "kSuspendPort" = Yes
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x100000250, !registered, !matched, active, busy 0, retain 4>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000252, registered, matched, active, busy 0 (15 ms), retain 6>
+ | | | | +-o IOUSBInterface at 1 <class IOUSBInterface, id 0x100000253, registered, matched, active, busy 0 (15 ms), retain 6>
+ | | | +-o Flash Disk at fd300000 <class IOUSBDevice, id 0x100000408, registered, matched, active, busy 0 (499 ms), retain 8>
+ | | | | {
+ | | | | "sessionID" = 3995793432240
+ | | | | "iManufacturer" = 1
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 24613
+ | | | | "bcdDevice" = 256
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 64
+ | | | | "USB Product Name" = "Flash Disk"
+ | | | | "iProduct" = 2
+ | | | | "iSerialNumber" = 3
+ | | | | "USB Address" = 3
+ | | | | "bDeviceClass" = 0
+ | | | | "bDeviceSubClass" = 0
+ | | | | "locationID" = 18446744073662365696
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "kHasMSCInterface" = Yes
+ | | | | "PortNum" = 3
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 0
+ | | | | "uid" = "USB:197660250078C5C90000"
+ | | | | "USB Vendor Name" = "CBM"
+ | | | | "Device Speed" = 2
+ | | | | "idVendor" = 6518
+ | | | | "USB Serial Number" = "16270078C5C90000"
+ | | | | "Requested Power" = 50
+ | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x10000040a, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000040b, registered, matched, active, busy 0 (482 ms), retain 7>
+ | | | +-o IOUSBMassStorageClass <class IOUSBMassStorageClass, id 0x10000040d, registered, matched, active, busy 0 (177 ms), retain 8>
+ | | | +-o IOSCSIPeripheralDeviceNub <class IOSCSIPeripheralDeviceNub, id 0x10000040f, registered, matched, active, busy 0 (74 ms), retain 6>
+ | | | +-o IOSCSIPeripheralDeviceType00 <class IOSCSIPeripheralDeviceType00, id 0x100000410, !registered, !matched, active, busy 0 (20 ms), retain 7>
+ | | | +-o IOBlockStorageServices <class IOBlockStorageServices, id 0x100000413, registered, matched, active, busy 0 (20 ms), retain 5>
+ | | | +-o IOBlockStorageDriver <class IOBlockStorageDriver, id 0x100000414, registered, matched, active, busy 0 (18 ms), retain 7>
+ | | | +-o CBM Flash Disk Media <class IOMedia, id 0x100000415, registered, matched, active, busy 0 (16 ms), retain 10>
+ | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000416, registered, matched, active, busy 0 (2 ms), retain 5>
+ | | | +-o IOFDiskPartitionScheme <class IOFDiskPartitionScheme, id 0x100000419, !registered, !matched, active, busy 0 (10 ms), retain 6>
+ | | | +-o Untitled 1 at 1 <class IOMedia, id 0x10000041b, registered, matched, active, busy 0 (10 ms), retain 9>
+ | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000041c, registered, matched, active, busy 0 (2 ms), retain 6>
+ | | +-o PCIB at 1E <class IOPCIDevice, id 0x100000197, registered, matched, active, busy 0 (712 ms), retain 11>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001cd, registered, matched, active, busy 0 (542 ms), retain 7>
+ | | | +-o FRWR at 3 <class IOPCIDevice, id 0x100000198, registered, matched, active, busy 0 (494 ms), retain 10>
+ | | | +-o AppleFWOHCI <class AppleFWOHCI, id 0x1000001d8, !registered, !matched, active, busy 0 (476 ms), retain 6>
+ | | | +-o IOFireWireController <class IOFireWireController, id 0x1000001da, registered, matched, active, busy 0 (476 ms), retain 9>
+ | | | +-o IOFireWireLocalNode <class IOFireWireLocalNode, id 0x100000214, registered, matched, active, busy 0 (476 ms), retain 12>
+ | | | +-o IOFireWireUserClientIniter <class IOFireWireUserClientIniter, id 0x100000216, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOFireWireUserClientIniter <class IOFireWireUserClientIniter, id 0x1000002b0, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOFireWireIP <class IOFireWireIP, id 0x1000002b1, registered, matched, active, busy 0 (224 ms), retain 5>
+ | | | +-o IOFWInterface <class IOFWInterface, id 0x1000002b9, registered, matched, active, busy 0 (224 ms), retain 10>
+ | | | +-o IONetworkStack <class IONetworkStack, id 0x1000001de, registered, matched, active, busy 0 (2 ms), retain 11>
+ | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x100000266, !registered, !matched, active, busy 0, retain 5>
+ | | +-o LPCB at 1F <class IOPCIDevice, id 0x100000199, registered, matched, active, busy 0 (5615 ms), retain 28>
+ | | | +-o AppleLPC <class AppleLPC, id 0x100000275, registered, matched, active, busy 0 (3 ms), retain 5>
+ | | +-o PATA at 1F,1 <class IOPCIDevice, id 0x10000019a, registered, matched, active, busy 0 (10462 ms), retain 13>
+ | | | +-o AppleIntelPIIXATARoot <class AppleIntelPIIXATARoot, id 0x1000001d1, !registered, !matched, active, busy 0 (10287 ms), retain 6>
+ | | | +-o PRID at 0 <class AppleIntelPIIXATAChannel, id 0x10000019b, registered, matched, active, busy 0 (10287 ms), retain 14>
+ | | | | +-o AppleIntelPIIXPATA <class AppleIntelPIIXPATA, id 0x1000001e2, registered, matched, active, busy 0 (10231 ms), retain 7>
+ | | | | +-o ATADeviceNub at 0 <class ATADeviceNub, id 0x1000001f5, registered, matched, active, busy 0 (10230 ms), retain 6>
+ | | | | +-o IOATAPIProtocolTransport <class IOATAPIProtocolTransport, id 0x1000001f8, registered, matched, active, busy 0 (10221 ms), retain 8>
+ | | | | +-o IOSCSIPeripheralDeviceNub <class IOSCSIPeripheralDeviceNub, id 0x1000001fb, registered, matched, active, busy 0 (10013 ms), retain 6>
+ | | | | +-o IOSCSIPeripheralDeviceType05 <class IOSCSIPeripheralDeviceType05, id 0x100000222, !registered, !matched, active, busy 0 (3701 ms), retain 7>
+ | | | | +-o IODVDServices <class IODVDServices, id 0x100000263, registered, matched, active, busy 0 (3701 ms), retain 6>
+ | | | | +-o IODVDBlockStorageDriver <class IODVDBlockStorageDriver, id 0x100000264, registered, matched, active, busy 0 (3699 ms), retain 7>
+ | | | | | +-o HL-DT-ST DVDRW GSA-S10N Media <class IODVDMedia, id 0x100000269, registered, matched, active, busy 0 (3698 ms), retain 10>
+ | | | | | +-o IODVDMediaBSDClient <class IODVDMediaBSDClient, id 0x10000026a, registered, matched, active, busy 0 (2 ms), retain 5>
+ | | | | | +-o IOApplePartitionScheme <class IOApplePartitionScheme, id 0x1000002f4, !registered, !matched, active, busy 0 (14 ms), retain 8>
+ | | | | | +-o Apple at 1 <class IOMedia, id 0x1000002f5, registered, matched, active, busy 0 (11 ms), retain 8>
+ | | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x1000002f8, registered, matched, active, busy 0 (5 ms), retain 5>
+ | | | | | +-o Macintosh at 2 <class IOMedia, id 0x1000002f6, registered, matched, active, busy 0 (12 ms), retain 8>
+ | | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x1000002f9, registered, matched, active, busy 0 (5 ms), retain 5>
+ | | | | | +-o Mac_OS_X at 3 <class IOMedia, id 0x1000002f7, registered, matched, active, busy 0 (14 ms), retain 9>
+ | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x1000002fa, registered, matched, active, busy 0 (5 ms), retain 6>
+ | | | | +-o SCSITaskUserClientIniter <class SCSITaskUserClientIniter, id 0x100000265, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o CHN1 at 1 <class AppleIntelPIIXATAChannel, id 0x1000001d2, registered, matched, active, busy 0 (75 ms), retain 6>
+ | | +-o SATA at 1F,2 <class IOPCIDevice, id 0x10000019e, registered, matched, active, busy 0 (387 ms), retain 13>
+ | | | +-o AppleAHCI <class AppleAHCI, id 0x1000001d3, registered, matched, active, busy 0 (208 ms), retain 7>
+ | | | +-o PRT2 at 2 <class AppleAHCIPort, id 0x1000001a0, registered, matched, active, busy 0 (170 ms), retain 10>
+ | | | +-o IOAHCIDevice at 0 <class IOAHCIDevice, id 0x1000001eb, registered, matched, active, busy 0 (170 ms), retain 11>
+ | | | +-o AppleAHCIDiskDriver <class AppleAHCIDiskDriver, id 0x1000001ec, registered, matched, active, busy 0 (51 ms), retain 6>
+ | | | +-o IOAHCIBlockStorageDevice <class IOAHCIBlockStorageDevice, id 0x100000203, registered, matched, active, busy 0 (51 ms), retain 6>
+ | | | +-o IOBlockStorageDriver <class IOBlockStorageDriver, id 0x100000207, registered, matched, active, busy 0 (49 ms), retain 7>
+ | | | +-o FUJITSU MHY2120BH Media <class IOMedia, id 0x100000208, registered, matched, active, busy 0 (49 ms), retain 10>
+ | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000020f, registered, matched, active, busy 0 (0 ms), retain 5>
+ | | | +-o IOGUIDPartitionScheme <class IOGUIDPartitionScheme, id 0x10000021b, !registered, !matched, active, busy 0 (13 ms), retain 7>
+ | | | +-o EFI System Partition at 1 <class IOMedia, id 0x10000021e, registered, matched, active, busy 0 (3 ms), retain 8>
+ | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000220, registered, matched, active, busy 0 (1 ms), retain 5>
+ | | | +-o Untitled at 2 <class IOMedia, id 0x10000021f, registered, matched, active, busy 0 (13 ms), retain 10>
+ | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000221, registered, matched, active, busy 0 (1 ms), retain 6>
+ | | +-o SBUS at 1F,3 <class IOPCIDevice, id 0x1000001a1, registered, matched, active, busy 0 (203 ms), retain 8>
+ | +-o PDRC <class IOACPIPlatformDevice, id 0x100000130, registered, matched, active, busy 0 (9 ms), retain 6>
+ | +-o SMC <class IOACPIPlatformDevice, id 0x10000015f, registered, matched, active, busy 0 (451 ms), retain 9>
+ | | +-o AppleSMC <class AppleSMC, id 0x1000002ae, registered, matched, active, busy 0 (191 ms), retain 6>
+ | | +-o SMCWatchDogTimer <class SMCWatchDogTimer, id 0x1000002b3, registered, matched, active, busy 0 (129 ms), retain 5>
+ | +-o SMS0 <class IOACPIPlatformDevice, id 0x100000160, registered, matched, active, busy 0 (377 ms), retain 7>
+ | | +-o SMCMotionSensor <class SMCMotionSensor, id 0x1000002dc, registered, matched, active, busy 0 (2 ms), retain 5>
+ | +-o EC <class IOACPIPlatformDevice, id 0x100000161, registered, matched, active, busy 0 (245 ms), retain 10>
+ | | +-o AppleACPIEC <class AppleACPIEC, id 0x100000124, !registered, !matched, active, busy 0, retain 6>
+ | +-o SMB0 <class IOACPIPlatformDevice, id 0x100000162, registered, matched, active, busy 0 (34 ms), retain 9>
+ | | +-o AppleECSMBusController <class AppleECSMBusController, id 0x1000001ed, registered, matched, active, busy 0 (16 ms), retain 5>
+ | | +-o AppleSmartBatteryManager <class AppleSmartBatteryManager, id 0x1000001ee, registered, matched, active, busy 0 (3 ms), retain 6>
+ | | +-o AppleSmartBattery <class AppleSmartBattery, id 0x1000001f0, registered, matched, active, busy 0 (0 ms), retain 5>
+ | +-o SBS0 <class IOACPIPlatformDevice, id 0x100000163, registered, matched, active, busy 0 (19 ms), retain 6>
+ | +-o DMAC <class IOACPIPlatformDevice, id 0x100000164, registered, matched, active, busy 0 (21 ms), retain 6>
+ | +-o FWHD <class IOACPIPlatformDevice, id 0x100000165, registered, matched, active, busy 0 (22 ms), retain 6>
+ | +-o HPET <class IOACPIPlatformDevice, id 0x100000166, registered, matched, active, busy 0 (24 ms), retain 7>
+ | | +-o AppleHPET <class AppleHPET, id 0x1000001bc, !registered, !matched, active, busy 0, retain 4>
+ | +-o IPIC <class IOACPIPlatformDevice, id 0x100000167, registered, matched, active, busy 0 (25 ms), retain 6>
+ | +-o MATH <class IOACPIPlatformDevice, id 0x100000168, registered, matched, active, busy 0 (26 ms), retain 6>
+ | +-o LDRC <class IOACPIPlatformDevice, id 0x100000169, registered, matched, active, busy 0 (27 ms), retain 6>
+ | +-o RTC <class IOACPIPlatformDevice, id 0x10000016a, registered, matched, active, busy 0 (38 ms), retain 8>
+ | | +-o AppleRTC <class AppleRTC, id 0x1000001bd, registered, matched, active, busy 0 (1 ms), retain 6>
+ | +-o TIMR <class IOACPIPlatformDevice, id 0x10000016b, registered, matched, active, busy 0 (29 ms), retain 6>
+ | +-o AppleEFIRuntime <class AppleEFIRuntime, id 0x1000001be, registered, matched, active, busy 0 (297 ms), retain 7>
+ | | +-o AppleEFINVRAM <class AppleEFINVRAM, id 0x1000001bf, registered, matched, active, busy 0 (1 ms), retain 7>
+ | +-o IOPCIMessagedInterruptController <class IOPCIMessagedInterruptController, id 0x1000001c1, registered, matched, active, busy 0 (2 ms), retain 6>
+ | +-o AppleRawIOAddressSpace <class AppleRawIOAddressSpace, id 0x10000028a, registered, matched, active, busy 0 (2 ms), retain 4>
+ | +-o AppleRawPhysicalMemoryAddressSpace <class AppleRawPhysicalMemoryAddressSpace, id 0x10000028b, registered, matched, active, busy 0 (4 ms), retain 4>
+ +-o IOResources <class IOResources, id 0x100000113, registered, matched, active, busy 0 (824 ms), retain 24>
+ +-o AppleIntelCPUPowerManagement <class AppleIntelCPUPowerManagement, id 0x10000011b, registered, matched, active, busy 0 (252 ms), retain 5>
+ | +-o AppleIntelCPUPowerManagementClient <class AppleIntelCPUPowerManagementClient, id 0x100000120, !registered, !matched, active, busy 0, retain 4>
+ +-o IOHDIXController <class IOHDIXController, id 0x10000011c, registered, matched, active, busy 0 (2 ms), retain 4>
+ +-o com_apple_AppleFSCompression_AppleFSCompressionTypeZlib <class com_apple_AppleFSCompression_AppleFSCompressionTypeZlib, id 0x1000001dc, !registered, !matched, active, busy 0, retain 4>
+ +-o com_apple_BootCache <class com_apple_BootCache, id 0x1000001dd, !registered, !matched, active, busy 0, retain 4>
+ +-o IONetworkStack <class IONetworkStack, id 0x1000001de, registered, matched, active, busy 0 (2 ms), retain 11>
+ | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x100000266, !registered, !matched, active, busy 0, retain 5>
+ +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 15>
+ | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
+ | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
+ | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
+ | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
+ +-o AppleProfileOSHooks <class AppleProfileOSHooks, id 0x100000281, registered, matched, active, busy 0 (187 ms), retain 15>
+ | +-o AppleProfileTimeTrigger <class AppleProfileTimeTrigger, id 0x10000028f, registered, matched, active, busy 0 (168 ms), retain 6>
+ | +-o AppleProfilePMITrigger <class AppleProfilePMITrigger, id 0x100000290, registered, matched, active, busy 0 (168 ms), retain 6>
+ | +-o AppleOSXPerformanceMonitor <class AppleOSXPerformanceMonitor, id 0x100000291, !registered, !matched, active, busy 0 (173 ms), retain 6>
+ | | +-o AppleOSXPerformanceCounter <class AppleOSXPerformanceCounter, id 0x10000029c, registered, matched, active, busy 0 (170 ms), retain 6>
+ | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 18>
+ | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | +-o AppleOSXPerformanceCounter <class AppleOSXPerformanceCounter, id 0x10000029d, registered, matched, active, busy 0 (173 ms), retain 6>
+ | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 18>
+ | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileKEventTrigger <class AppleProfileKEventTrigger, id 0x100000293, registered, matched, active, busy 0 (175 ms), retain 6>
+ | +-o AppleProfileManualTrigger <class AppleProfileManualTrigger, id 0x100000294, registered, matched, active, busy 0 (2 ms), retain 6>
+ | +-o AppleProfileCallstackAction <class AppleProfileCallstackAction, id 0x100000295, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileKEventAction <class AppleProfileKEventAction, id 0x100000296, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileRegisterStateAction <class AppleProfileRegisterStateAction, id 0x100000297, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileThreadInfoAction <class AppleProfileThreadInfoAction, id 0x100000298, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileTimestampAction <class AppleProfileTimestampAction, id 0x100000299, !registered, !matched, active, busy 0, retain 5>
+ +-o com_apple_driver_AudioIPCDevice <class com_apple_driver_AudioIPCDevice, id 0x100000282, registered, matched, active, busy 0 (165 ms), retain 6>
+ | +-o com_apple_driver_AudioIPCEngine <class com_apple_driver_AudioIPCEngine, id 0x10000028c, registered, matched, active, busy 0 (164 ms), retain 9>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000333, !registered, !matched, active, busy 0, retain 6>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000365, !registered, !matched, active, busy 0, retain 6>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000394, !registered, !matched, active, busy 0, retain 6>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a4, !registered, !matched, active, busy 0, retain 6>
+ +-o CHUDKernLib <class CHUDKernLib, id 0x100000283, registered, matched, active, busy 0 (170 ms), retain 4>
+ +-o CHUDProf <class CHUDProf, id 0x100000284, registered, matched, active, busy 0 (307 ms), retain 4>
+ +-o CHUDUtils <class CHUDUtils, id 0x100000285, registered, matched, active, busy 0 (310 ms), retain 4>
+ +-o Dont_Steal_Mac_OS_X <class Dont_Steal_Mac_OS_X, id 0x100000286, !registered, !matched, active, busy 0, retain 5>
+ +-o IOBluetoothSerialManager <class IOBluetoothSerialManager, id 0x100000287, registered, matched, active, busy 0 (376 ms), retain 7>
+ | +-o IOBluetoothSerialClient <class IOBluetoothSerialClient, id 0x1000002d3, !registered, !matched, active, busy 0 (133 ms), retain 5>
+ | | +-o IOBluetoothSerialClientSerialStreamSync <class IOBluetoothSerialClientSerialStreamSync, id 0x1000002d5, registered, matched, active, busy 0 (133 ms), retain 5>
+ | | +-o IOSerialBSDClient <class IOSerialBSDClient, id 0x1000002df, registered, matched, active, busy 0 (6 ms), retain 4>
+ | +-o IOBluetoothSerialClient <class IOBluetoothSerialClient, id 0x1000002de, !registered, !matched, active, busy 0 (76 ms), retain 5>
+ | +-o IOBluetoothSerialClientModemStreamSync <class IOBluetoothSerialClientModemStreamSync, id 0x1000002e0, registered, matched, active, busy 0 (76 ms), retain 5>
+ | +-o IOSerialBSDClient <class IOSerialBSDClient, id 0x1000002e8, registered, matched, active, busy 0 (6 ms), retain 4>
+ +-o IODisplayWrangler <class IODisplayWrangler, id 0x100000288, registered, matched, active, busy 0 (169 ms), retain 7>
+ | +-o IOAccelerationUserClient <class IOAccelerationUserClient, id 0x100000370, !registered, !matched, active, busy 0, retain 5>
+ +-o IOSurfaceRoot <class IOSurfaceRoot, id 0x100000289, registered, matched, active, busy 0 (171 ms), retain 5>
+ +-o AppleSCSISubsystemGlobals <class AppleSCSISubsystemGlobals, id 0x1000002fd, registered, matched, active, busy 0 (1 ms), retain 5>
diff --git a/resources/macos/ioreg/IOUSBDevice2 b/resources/macos/ioreg/IOUSBDevice2
new file mode 100644
index 0000000..7381f42
--- /dev/null
+++ b/resources/macos/ioreg/IOUSBDevice2
@@ -0,0 +1,976 @@
++-o Root <class IORegistryEntry, id 0x100000100, retain 15>
+ +-o iMac7,1 <class IOPlatformExpertDevice, id 0x100000110, registered, matched, active, busy 0 (12850 ms), retain 23>
+ +-o AppleACPIPlatformExpert <class AppleACPIPlatformExpert, id 0x100000111, registered, matched, active, busy 0 (10089 ms), retain 33>
+ | +-o IOPMrootDomain <class IOPMrootDomain, id 0x100000114, registered, matched, active, busy 0 (10 ms), retain 54>
+ | | +-o IORootParent <class IORootParent, id 0x100000115, !registered, !matched, active, busy 0, retain 7>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000002ab, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000002ac, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000002ad, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000002ae, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000002b0, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000030c, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000037a, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000384, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000398, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003d5, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003d8, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003e9, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003ea, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003f3, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003f4, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003f5, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003f9, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000410, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000412, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000413, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000414, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000432, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000434, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000438, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000459, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000046e, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000470, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000476, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000478, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000479, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000047a, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000047b, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000047d, !registered, !matched, active, busy 0, retain 5>
+ | +-o cpus <class IOPlatformDevice, id 0x100000117, registered, matched, active, busy 0 (3 ms), retain 7>
+ | +-o CPU0 at 0 <class IOACPIPlatformDevice, id 0x100000118, registered, matched, active, busy 0 (173 ms), retain 7>
+ | | +-o AppleACPICPU <class AppleACPICPU, id 0x10000011d, registered, matched, active, busy 0 (165 ms), retain 9>
+ | | +-o AppleACPICPUInterruptController <class AppleACPICPUInterruptController, id 0x10000011f, registered, matched, active, busy 0 (0 ms), retain 5>
+ | | +-o ACPI_SMC_PlatformPlugin <class ACPI_SMC_PlatformPlugin, id 0x1000002ba, registered, matched, active, busy 0 (13 ms), retain 9>
+ | | +-o AppleIntelMeromPerformanceMonitor <class AppleIntelMeromPerformanceMonitor, id 0x1000002bb, !registered, !matched, active, busy 0 (83 ms), retain 9>
+ | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002f5, registered, matched, active, busy 0 (62 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002f6, registered, matched, active, busy 0 (64 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002f7, registered, matched, active, busy 0 (66 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002f8, registered, matched, active, busy 0 (65 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002f9, registered, matched, active, busy 0 (83 ms), retain 7>
+ | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | +-o AppleIntelMeromSPR <class AppleIntelMeromSPR, id 0x1000002ee, registered, matched, active, busy 0 (67 ms), retain 4>
+ | +-o CPU1 at 1 <class IOACPIPlatformDevice, id 0x100000119, registered, matched, active, busy 0 (169 ms), retain 7>
+ | | +-o AppleACPICPU <class AppleACPICPU, id 0x10000011e, registered, matched, active, busy 0 (155 ms), retain 7>
+ | | +-o AppleIntelMeromPerformanceMonitor <class AppleIntelMeromPerformanceMonitor, id 0x1000002ce, !registered, !matched, active, busy 0 (75 ms), retain 9>
+ | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x100000301, registered, matched, active, busy 0 (68 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x100000302, registered, matched, active, busy 0 (69 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x100000303, registered, matched, active, busy 0 (72 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x100000304, registered, matched, active, busy 0 (73 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x100000305, registered, matched, active, busy 0 (75 ms), retain 7>
+ | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | +-o AppleIntelMeromSPR <class AppleIntelMeromSPR, id 0x1000002fa, registered, matched, active, busy 0 (75 ms), retain 4>
+ | +-o io-apic at fec00000 <class IOACPIPlatformDevice, id 0x10000011a, registered, matched, active, busy 0 (3 ms), retain 6>
+ | | +-o AppleAPICInterruptController <class AppleAPICInterruptController, id 0x100000121, registered, matched, active, busy 0 (0 ms), retain 11>
+ | +-o AppleACPIEventController <class AppleACPIEventController, id 0x100000122, !registered, !matched, active, busy 0, retain 6>
+ | +-o boot-ec <class IOACPIPlatformDevice, id 0x100000123, registered, matched, active, busy 0 (1 ms), retain 6>
+ | | +-o AppleACPIEC <class AppleACPIEC, id 0x100000124, !registered, !matched, active, busy 0, retain 6>
+ | +-o bios <class IOPlatformDevice, id 0x100000125, registered, matched, active, busy 0 (4 ms), retain 5>
+ | | +-o AppleSMBIOS <class AppleSMBIOS, id 0x100000126, registered, matched, active, busy 0 (1 ms), retain 4>
+ | +-o PNLF <class IOACPIPlatformDevice, id 0x10000012a, registered, matched, active, busy 0 (34 ms), retain 7>
+ | | +-o AppleIntelPanelA <class AppleIntelPanelA, id 0x1000002c5, !registered, !matched, active, busy 0, retain 5>
+ | +-o PWRB <class IOACPIPlatformDevice, id 0x10000012b, registered, matched, active, busy 0 (2 ms), retain 8>
+ | | +-o AppleACPIButton <class AppleACPIButton, id 0x1000001af, !registered, !matched, active, busy 0, retain 4>
+ | +-o SLPB <class IOACPIPlatformDevice, id 0x10000012c, registered, matched, active, busy 0 (3 ms), retain 7>
+ | | +-o AppleACPIButton <class AppleACPIButton, id 0x1000001b0, !registered, !matched, active, busy 0, retain 4>
+ | +-o PCI0 <class IOACPIPlatformDevice, id 0x10000012d, registered, matched, active, busy 0 (10058 ms), retain 45>
+ | | +-o AppleACPIPCI <class AppleACPIPCI, id 0x1000001b1, registered, matched, active, busy 0 (10050 ms), retain 44>
+ | | +-o MCHC at 0 <class IOPCIDevice, id 0x100000178, registered, matched, active, busy 0 (164 ms), retain 8>
+ | | +-o PEGP at 1 <class IOPCIDevice, id 0x100000179, registered, matched, active, busy 0 (292 ms), retain 11>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001ce, registered, matched, active, busy 0 (272 ms), retain 7>
+ | | | +-o GFX0 at 0 <class IOPCIDevice, id 0x10000017a, registered, matched, active, busy 0 (271 ms), retain 21>
+ | | | +-o ATI2600Controller <class ATI2600Controller, id 0x1000002b1, registered, matched, active, busy 0 (61 ms), retain 4>
+ | | | +-o ATY,Hypoprion at 0 <class AtiFbStub, id 0x1000002b5, registered, matched, active, busy 0 (159 ms), retain 7>
+ | | | | +-o ATY_Hypoprion <class ATIFramebuffer, id 0x100000306, registered, matched, active, busy 0 (87 ms), retain 15>
+ | | | | +-o AppleMCCSControlModule <class AppleMCCSControlModule, id 0x100000312, registered, matched, active, busy 0 (5 ms), retain 5>
+ | | | | | +-o AppleMCCSParameterHandler <class AppleMCCSParameterHandler, id 0x100000314, registered, matched, active, busy 0 (4 ms), retain 4>
+ | | | | +-o AppleUpstreamUserClientDriver <class AppleUpstreamUserClientDriver, id 0x100000313, registered, matched, active, busy 0 (1 ms), retain 4>
+ | | | | +-o AMDNDRVService <class AtiAppServices, id 0x10000036e, registered, matched, active, busy 0 (1 ms), retain 5>
+ | | | | +-o IOFramebufferI2CInterface <class IOFramebufferI2CInterface, id 0x10000036f, registered, matched, active, busy 0 (1 ms), retain 5>
+ | | | | +-o display0 <class IODisplayConnect, id 0x100000370, registered, matched, active, busy 0 (2 ms), retain 5>
+ | | | | | +-o AppleBacklightDisplay <class AppleBacklightDisplay, id 0x100000371, registered, matched, active, busy 0 (1 ms), retain 8>
+ | | | | +-o IOFramebufferUserClient <class IOFramebufferUserClient, id 0x100000376, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOFramebufferSharedUserClient <class IOFramebufferSharedUserClient, id 0x100000483, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATY,Hypoprion at 1 <class AtiFbStub, id 0x1000002b6, registered, matched, active, busy 0 (13 ms), retain 7>
+ | | | | +-o ATY_Hypoprion <class ATIFramebuffer, id 0x100000318, registered, matched, active, busy 0 (11 ms), retain 12>
+ | | | | +-o AppleMCCSControlModule <class AppleMCCSControlModule, id 0x10000031b, registered, matched, active, busy 0 (4 ms), retain 5>
+ | | | | | +-o AppleMCCSParameterHandler <class AppleMCCSParameterHandler, id 0x10000031d, registered, matched, active, busy 0 (1 ms), retain 4>
+ | | | | +-o AppleUpstreamUserClientDriver <class AppleUpstreamUserClientDriver, id 0x10000031c, registered, matched, active, busy 0 (3 ms), retain 4>
+ | | | | +-o AMDNDRVService <class AtiAppServices, id 0x100000374, registered, matched, active, busy 0 (0 ms), retain 5>
+ | | | | +-o IOFramebufferI2CInterface <class IOFramebufferI2CInterface, id 0x100000375, registered, matched, active, busy 0 (1 ms), retain 5>
+ | | | | +-o IOFramebufferUserClient <class IOFramebufferUserClient, id 0x100000378, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATISupport <class ATISupport, id 0x1000002b2, registered, matched, active, busy 0 (1 ms), retain 4>
+ | | | +-o ATIRadeonX2000 <class ATIRadeonX2000, id 0x1000002b3, registered, matched, active, busy 0 (4 ms), retain 16>
+ | | | +-o IOService <class IOService, id 0x100000322, registered, matched, active, busy 0 (4 ms), retain 6>
+ | | | | +-o IOHWSensor <class IOHWSensor, id 0x100000323, registered, matched, active, busy 0 (1 ms), retain 7>
+ | | | +-o ATIR6002DContext <class ATIR6002DContext, id 0x100000377, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR6002DContext <class ATIR6002DContext, id 0x100000379, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR600Device <class ATIR600Device, id 0x10000037f, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR600GLContext <class ATIR600GLContext, id 0x100000380, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR600Surface <class ATIR600Surface, id 0x1000003f6, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR600Surface <class ATIR600Surface, id 0x1000003fa, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR600GLContext <class ATIR600GLContext, id 0x1000003fb, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR600Surface <class ATIR600Surface, id 0x100000408, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR600Surface <class ATIR600Surface, id 0x100000409, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR600Surface <class ATIR600Surface, id 0x100000411, !registered, !matched, active, busy 0, retain 5>
+ | | +-o UHC4 at 1A <class IOPCIDevice, id 0x100000191, registered, matched, active, busy 0 (2874 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001d2, registered, matched, active, busy 0 (2688 ms), retain 10>
+ | | | +-o UHCI Root Hub Simulation at 1A <class IOUSBRootHubDevice, id 0x100000216, registered, matched, active, busy 0 (338 ms), retain 12>
+ | | | | | {
+ | | | | | "sessionID" = 372634795
+ | | | | | "AAPL,current-extra-in-sleep" = 500
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 32773
+ | | | | | "bcdDevice" = 272
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 8
+ | | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 1
+ | | | | | "bDeviceClass" = 9
+ | | | | | "locationID" = 436207616
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 2
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "AAPL,max-port-current-in-sleep" = 1000
+ | | | | | "bDeviceProtocol" = 0
+ | | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | | "Device Speed" = 1
+ | | | | | "idVendor" = 1452
+ | | | | | "AAPL,current-in-sleep" = 1000
+ | | | | | "Requested Power" = 0
+ | | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000218, !registered, !matched, active, busy 0, retain 10>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000021a, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o NetScroll + Mini Traveler at 1a200000 <class IOUSBDevice, id 0x100000270, registered, matched, active, busy 0 (730 ms), retain 9>
+ | | | | | {
+ | | | | | "sessionID" = 1035836159
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 54
+ | | | | | "bcdDevice" = 272
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 8
+ | | | | | "USB Product Name" = "NetScroll + Mini Traveler"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 3
+ | | | | | "bDeviceClass" = 0
+ | | | | | "locationID" = 438304768
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "PortNum" = 2
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "bDeviceProtocol" = 0
+ | | | | | "Need contiguous memory for isoch" = Yes
+ | | | | | "USB Vendor Name" = "Genius"
+ | | | | | "Device Speed" = 0
+ | | | | | "idVendor" = 1112
+ | | | | | "Requested Power" = 50
+ | | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x10000027a, !registered, !matched, active, busy 0, retain 4>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000280, registered, matched, active, busy 0 (706 ms), retain 8>
+ | | | | +-o IOUSBHIDDriver <class IOUSBHIDDriver, id 0x10000030a, registered, matched, active, busy 0 (20 ms), retain 7>
+ | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000316, registered, matched, active, busy 0 (13 ms), retain 6>
+ | | | | +-o IOHIDEventDriver <class IOHIDEventDriver, id 0x10000031e, registered, matched, active, busy 0 (3 ms), retain 8>
+ | | | | +-o IOHIDPointing <class IOHIDPointing, id 0x10000031f, registered, matched, active, busy 0 (1 ms), retain 7>
+ | | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x100000220, registered, matched, active, busy 0 (2 ms), retain 17>
+ | | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037c, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037d, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x100000220, registered, matched, active, busy 0 (2 ms), retain 16>
+ | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037c, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o WirelessControllerDevice at 1a100000 <class IOUSBDevice, id 0x10000029e, registered, matched, active, busy 0 (564 ms), retain 10>
+ | | | | {
+ | | | | "sessionID" = 3009829809
+ | | | | "iManufacturer" = 0
+ | | | | "idProduct" = 33286
+ | | | | "bDeviceClass" = 224
+ | | | | "bcdDevice" = 6501
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 64
+ | | | | "iProduct" = 0
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 2
+ | | | | "bNumConfigurations" = 1
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "locationID" = 437256192
+ | | | | "bDeviceSubClass" = 1
+ | | | | "USB Product Name" = "Bluetooth USB Host Controller"
+ | | | | "non-removable" = "yes"
+ | | | | "PortNum" = 1
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 1
+ | | | | "Need contiguous memory for isoch" = Yes
+ | | | | "Device Speed" = 1
+ | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | "idVendor" = 1452
+ | | | | "Requested Power" = 0
+ | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o CSRUSBBluetoothHCIController <class CSRUSBBluetoothHCIController, id 0x1000002a0, registered, matched, active, busy 0 (0 ms), retain 10>
+ | | | | +-o IOBluetoothHCIUserClient <class IOBluetoothHCIUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOBluetoothHCIUserClient <class IOBluetoothHCIUserClient, id 0x100000433, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x1000002a2, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOUSBInterface at 1 <class IOUSBInterface, id 0x1000002a3, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOUSBInterface at 2 <class IOUSBInterface, id 0x1000002a4, !registered, !matched, active, busy 0, retain 6>
+ | | +-o UHC5 at 1A,1 <class IOPCIDevice, id 0x100000195, registered, matched, active, busy 0 (570 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001d3, registered, matched, active, busy 0 (377 ms), retain 8>
+ | | | +-o UHCI Root Hub Simulation at 1A,1 <class IOUSBRootHubDevice, id 0x10000021c, registered, matched, active, busy 0 (377 ms), retain 8>
+ | | | | {
+ | | | | "sessionID" = 380960109
+ | | | | "AAPL,current-extra-in-sleep" = 500
+ | | | | "iManufacturer" = 2
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 32773
+ | | | | "bcdDevice" = 272
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 8
+ | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | "iProduct" = 1
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 1
+ | | | | "bDeviceClass" = 9
+ | | | | "locationID" = 973078528
+ | | | | "bDeviceSubClass" = 0
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "Ports" = 2
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "AAPL,max-port-current-in-sleep" = 1000
+ | | | | "bDeviceProtocol" = 0
+ | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | "Device Speed" = 1
+ | | | | "idVendor" = 1452
+ | | | | "AAPL,current-in-sleep" = 1000
+ | | | | "Requested Power" = 0
+ | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000224, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000226, !registered, !matched, active, busy 0, retain 7>
+ | | +-o EHC2 at 1A,7 <class IOPCIDevice, id 0x1000001a1, registered, matched, active, busy 0 (671 ms), retain 12>
+ | | | +-o IOService <class IOService, id 0x1000001d4, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o AppleUSBEHCI <class AppleUSBEHCI, id 0x1000001d5, registered, matched, active, busy 0 (629 ms), retain 12>
+ | | | +-o EHCI Root Hub Simulation at 1A,7 <class IOUSBRootHubDevice, id 0x1000001e9, registered, matched, active, busy 0 (382 ms), retain 10>
+ | | | | | {
+ | | | | | "sessionID" = 228913729
+ | | | | | "AAPL,current-extra-in-sleep" = 500
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 32774
+ | | | | | "bcdDevice" = 512
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 64
+ | | | | | "USB Product Name" = "EHCI Root Hub Simulation"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 1
+ | | | | | "bDeviceClass" = 9
+ | | | | | "locationID" = 18446744073608888320
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "AAPL,current-extra" = 1000
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 4
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "AAPL,current-available" = 1500
+ | | | | | "bDeviceProtocol" = 1
+ | | | | | "AAPL,max-port-current-in-sleep" = 1000
+ | | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | | "Device Speed" = 2
+ | | | | | "idVendor" = 1452
+ | | | | | "AAPL,current-in-sleep" = 2000
+ | | | | | "Requested Power" = 0
+ | | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x1000001eb, registered, matched, active, busy 0 (0 ms), retain 8>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x1000001ed, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o Keyboard Hub at fa400000 <class IOUSBHubDevice, id 0x100000243, registered, matched, active, busy 0 (273 ms), retain 10>
+ | | | | | {
+ | | | | | "sessionID" = 565166469
+ | | | | | "iManufacturer" = 1
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 4102
+ | | | | | "bcdDevice" = 37909
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 64
+ | | | | | "USB Product Name" = "Keyboard Hub"
+ | | | | | "iProduct" = 2
+ | | | | | "iSerialNumber" = 3
+ | | | | | "USB Address" = 2
+ | | | | | "bDeviceClass" = 9
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "locationID" = 18446744073613082624
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 3
+ | | | | | "PortNum" = 4
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "ExtraPowerRequest" = 600
+ | | | | | "bDeviceProtocol" = 1
+ | | | | | "USB Vendor Name" = "Apple, Inc."
+ | | | | | "Device Speed" = 2
+ | | | | | "idVendor" = 1452
+ | | | | | "ExtraPowerForPorts" = 400
+ | | | | | "USB Serial Number" = "000000000000"
+ | | | | | "kHubPowerSequencingDelay" = Yes
+ | | | | | "Requested Power" = 150
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x10000024a, registered, matched, active, busy 0 (0 ms), retain 9>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000024c, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o Apple Keyboard at fa420000 <class IOUSBDevice, id 0x100000271, registered, matched, active, busy 0 (578 ms), retain 11>
+ | | | | {
+ | | | | "sessionID" = 1018522533
+ | | | | "iManufacturer" = 1
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 545
+ | | | | "bcdDevice" = 105
+ | | | | "Bus Power Available" = 50
+ | | | | "bMaxPacketSize0" = 8
+ | | | | "USB Product Name" = "Apple Keyboard"
+ | | | | "iProduct" = 2
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 3
+ | | | | "bDeviceClass" = 0
+ | | | | "locationID" = 18446744073613213696
+ | | | | "bDeviceSubClass" = 0
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "PortNum" = 2
+ | | | | "non-removable" = "yes"
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 0
+ | | | | "USB Vendor Name" = "Apple, Inc"
+ | | | | "Device Speed" = 0
+ | | | | "idVendor" = 1452
+ | | | | "Requested Power" = 10
+ | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x100000273, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000274, registered, matched, active, busy 0 (215 ms), retain 8>
+ | | | | +-o AppleUSBHIDKeyboard <class AppleUSBHIDKeyboard, id 0x100000277, registered, matched, active, busy 0 (39 ms), retain 7>
+ | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x10000027b, registered, matched, active, busy 0 (4 ms), retain 6>
+ | | | | +-o AppleHIDKeyboardEventDriver <class AppleHIDKeyboardEventDriver, id 0x10000027c, registered, matched, active, busy 0 (1 ms), retain 8>
+ | | | | +-o IOHIDKeyboard <class IOHIDKeyboard, id 0x10000027e, registered, matched, active, busy 0 (0 ms), retain 8>
+ | | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x100000220, registered, matched, active, busy 0 (2 ms), retain 17>
+ | | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037c, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037d, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x100000220, registered, matched, active, busy 0 (2 ms), retain 16>
+ | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037c, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOUSBInterface at 1 <class IOUSBInterface, id 0x100000275, registered, matched, active, busy 0 (196 ms), retain 8>
+ | | | +-o AppleUSBHIDKeyboard <class AppleUSBHIDKeyboard, id 0x100000282, registered, matched, active, busy 0 (50 ms), retain 7>
+ | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000283, registered, matched, active, busy 0 (41 ms), retain 6>
+ | | | +-o IOHIDEventDriver <class IOHIDEventDriver, id 0x1000002c8, registered, matched, active, busy 0 (3 ms), retain 8>
+ | | | +-o IOHIDConsumer <class IOHIDConsumer, id 0x1000002c9, registered, matched, active, busy 0 (1 ms), retain 8>
+ | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x100000220, registered, matched, active, busy 0 (2 ms), retain 17>
+ | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037c, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOHIDSystem <class IOHIDSystem, id 0x100000220, registered, matched, active, busy 0 (2 ms), retain 16>
+ | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037c, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037d, !registered, !matched, active, busy 0, retain 5>
+ | | +-o HDEF at 1B <class IOPCIDevice, id 0x10000017e, registered, matched, active, busy 0 (2793 ms), retain 10>
+ | | | +-o AppleHDAController at 1B <class AppleHDAController, id 0x1000002bc, registered, matched, active, busy 0 (2689 ms), retain 7>
+ | | | +-o IOHDACodecDevice at 1B,0 <class IOHDACodecDevice, id 0x1000002d8, registered, matched, active, busy 0 (2689 ms), retain 6>
+ | | | +-o IOHDACodecDriver <class IOHDACodecDriver, id 0x1000002ec, !registered, !matched, active, busy 0 (2688 ms), retain 5>
+ | | | +-o IOHDACodecFunction at 1B,0,1 <class IOHDACodecFunction, id 0x1000002ed, registered, matched, active, busy 0 (2688 ms), retain 6>
+ | | | +-o AppleHDACodecGeneric <class AppleHDACodecGeneric, id 0x10000030e, registered, matched, active, busy 0 (26 ms), retain 5>
+ | | | +-o AppleHDADriver <class AppleHDADriver, id 0x100000328, registered, matched, active, busy 0 (9 ms), retain 8>
+ | | | +-o AppleHDAEngineOutput at 1B,0,1,2 <class AppleHDAEngineOutput, id 0x100000333, registered, matched, active, busy 0 (4 ms), retain 35>
+ | | | | +-o AppleHDAStream <class AppleHDAStream, id 0x100000334, registered, matched, active, busy 0 (2 ms), retain 7>
+ | | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x100000335, !registered, !matched, active, busy 0 (0 ms), retain 14>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ab, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000042b, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000452, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000462, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000336, !registered, !matched, active, busy 0 (0 ms), retain 14>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ac, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000042c, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000453, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000463, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000337, !registered, !matched, active, busy 0 (0 ms), retain 14>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ad, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000042d, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000454, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000464, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000338, !registered, !matched, active, busy 0 (0 ms), retain 14>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ae, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000042e, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000455, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000465, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000339, !registered, !matched, active, busy 0 (0 ms), retain 14>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003af, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000042f, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000456, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000466, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x10000033a, !registered, !matched, active, busy 0 (0 ms), retain 14>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b0, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000430, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000457, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000467, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x10000033b, !registered, !matched, active, busy 0 (0 ms), retain 14>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b1, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000431, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000458, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000468, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o AudioAUUCDriver <class AudioAUUCDriver, id 0x10000033d, registered, matched, active, busy 0 (1 ms), retain 4>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000039c, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003b5, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003dc, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003e0, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003ee, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003f2, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000418, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000041c, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000043c, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000441, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000045d, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000461, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o AppleHDAEngineInput at 1B,0,1,0 <class AppleHDAEngineInput, id 0x10000033c, registered, matched, active, busy 0 (3 ms), retain 34>
+ | | | | +-o AppleHDAStream <class AppleHDAStream, id 0x10000033e, registered, matched, active, busy 0 (2 ms), retain 7>
+ | | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x10000033f, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a4, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000041d, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000444, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000340, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a5, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000041e, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000445, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000341, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a6, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000041f, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000446, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000342, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a7, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000420, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000447, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000343, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a8, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000421, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000448, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000344, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a9, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000422, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000449, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000345, !registered, !matched, active, busy 0 (0 ms), retain 24>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003aa, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b3, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003de, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003f0, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000041a, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000423, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000043e, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000044a, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000045f, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000039b, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003b4, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003db, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003df, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003ed, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003f1, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000417, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000041b, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000043b, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000440, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000045c, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000460, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o AppleHDAEngineInput at 1B,0,1,1 <class AppleHDAEngineInput, id 0x100000346, registered, matched, active, busy 0 (2 ms), retain 34>
+ | | | +-o AppleHDAStream <class AppleHDAStream, id 0x100000348, registered, matched, active, busy 0 (1 ms), retain 7>
+ | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x100000349, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039d, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000424, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000044b, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x10000034a, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039e, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000425, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000044c, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x10000034b, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039f, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000426, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000044d, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x10000034c, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a0, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000427, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000044e, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x10000034d, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a1, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000428, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000044f, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x10000034e, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a2, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000429, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000450, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x10000034f, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a3, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000042a, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000451, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000039a, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003b2, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003da, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003dd, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003ec, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003ef, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000416, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000419, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000043a, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000043d, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000045b, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000045e, !registered, !matched, active, busy 0, retain 6>
+ | | +-o pci-bridge at 1C <class IOPCIDevice, id 0x1000001b3, registered, matched, active, busy 0 (60 ms), retain 9>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001d7, registered, matched, active, busy 0 (30 ms), retain 5>
+ | | +-o RP04 at 1C,3 <class IOPCIDevice, id 0x10000017f, registered, matched, active, busy 0 (114 ms), retain 11>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001da, registered, matched, active, busy 0 (82 ms), retain 7>
+ | | | +-o FRWR at 0 <class IOPCIDevice, id 0x100000180, registered, matched, active, busy 0 (80 ms), retain 10>
+ | | | +-o AppleFWOHCI <class AppleFWOHCI, id 0x1000001f5, !registered, !matched, active, busy 0 (48 ms), retain 6>
+ | | | +-o IOFireWireController <class IOFireWireController, id 0x1000001f7, registered, matched, active, busy 0 (48 ms), retain 9>
+ | | | +-o IOFireWireLocalNode <class IOFireWireLocalNode, id 0x10000026e, registered, matched, active, busy 0 (47 ms), retain 12>
+ | | | +-o IOFireWireUserClientIniter <class IOFireWireUserClientIniter, id 0x10000026f, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOFireWireUserClientIniter <class IOFireWireUserClientIniter, id 0x1000002ca, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOFireWireIP <class IOFireWireIP, id 0x1000002cb, registered, matched, active, busy 0 (4 ms), retain 5>
+ | | | +-o IOFWInterface <class IOFWInterface, id 0x1000002cd, registered, matched, active, busy 0 (3 ms), retain 10>
+ | | | +-o IONetworkStack <class IONetworkStack, id 0x10000021f, registered, matched, active, busy 0 (2 ms), retain 11>
+ | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x1000002aa, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RP05 at 1C,4 <class IOPCIDevice, id 0x100000181, registered, matched, active, busy 0 (237 ms), retain 11>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001de, registered, matched, active, busy 0 (203 ms), retain 7>
+ | | | +-o ARPT at 0 <class IOPCIDevice, id 0x100000182, registered, matched, active, busy 0 (203 ms), retain 12>
+ | | | +-o AirPort_Brcm43224 <class AirPort_Brcm43224, id 0x1000001fb, registered, matched, active, busy 0 (9 ms), retain 8>
+ | | | +-o AirPort_Brcm43224Interface <class AirPort_Brcm43224Interface, id 0x100000237, registered, matched, active, busy 0 (7 ms), retain 10>
+ | | | +-o IONetworkStack <class IONetworkStack, id 0x10000021f, registered, matched, active, busy 0 (2 ms), retain 11>
+ | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x1000002aa, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RP06 at 1C,5 <class IOPCIDevice, id 0x100000183, registered, matched, active, busy 0 (6723 ms), retain 11>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001e2, registered, matched, active, busy 0 (6686 ms), retain 7>
+ | | | +-o GIGE at 0 <class IOPCIDevice, id 0x100000184, registered, matched, active, busy 0 (6686 ms), retain 10>
+ | | | +-o yukon2osx <class yukon2osx, id 0x1000001fd, !registered, !matched, active, busy 0 (1 ms), retain 7>
+ | | | +-o yukon <class yukon, id 0x1000002a8, !registered, !matched, active, busy 0 (1 ms), retain 8>
+ | | | +-o IOEthernetInterface <class IOEthernetInterface, id 0x1000002a9, registered, matched, active, busy 0 (1 ms), retain 11>
+ | | | +-o IONetworkStack <class IONetworkStack, id 0x10000021f, registered, matched, active, busy 0 (2 ms), retain 11>
+ | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x1000002aa, !registered, !matched, active, busy 0, retain 5>
+ | | +-o UHC1 at 1D <class IOPCIDevice, id 0x100000185, registered, matched, active, busy 0 (634 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001e6, registered, matched, active, busy 0 (292 ms), retain 9>
+ | | | +-o UHCI Root Hub Simulation at 1D <class IOUSBRootHubDevice, id 0x100000242, registered, matched, active, busy 0 (281 ms), retain 8>
+ | | | | {
+ | | | | "sessionID" = 542392661
+ | | | | "AAPL,current-extra-in-sleep" = 500
+ | | | | "iManufacturer" = 2
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 32773
+ | | | | "bcdDevice" = 272
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 8
+ | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | "iProduct" = 1
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 1
+ | | | | "bDeviceClass" = 9
+ | | | | "locationID" = 486539264
+ | | | | "bDeviceSubClass" = 0
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "Ports" = 2
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "AAPL,max-port-current-in-sleep" = 1000
+ | | | | "bDeviceProtocol" = 0
+ | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | "Device Speed" = 1
+ | | | | "idVendor" = 1452
+ | | | | "AAPL,current-in-sleep" = 1000
+ | | | | "Requested Power" = 0
+ | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000245, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000247, !registered, !matched, active, busy 0, retain 7>
+ | | +-o UHC2 at 1D,1 <class IOPCIDevice, id 0x100000189, registered, matched, active, busy 0 (756 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001e7, registered, matched, active, busy 0 (416 ms), retain 8>
+ | | | +-o UHCI Root Hub Simulation at 1D,1 <class IOUSBRootHubDevice, id 0x100000238, registered, matched, active, busy 0 (416 ms), retain 8>
+ | | | | {
+ | | | | "sessionID" = 528553166
+ | | | | "AAPL,current-extra-in-sleep" = 500
+ | | | | "iManufacturer" = 2
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 32773
+ | | | | "bcdDevice" = 272
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 8
+ | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | "iProduct" = 1
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 1
+ | | | | "bDeviceClass" = 9
+ | | | | "locationID" = 1023410176
+ | | | | "bDeviceSubClass" = 0
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "Ports" = 2
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "AAPL,max-port-current-in-sleep" = 1000
+ | | | | "bDeviceProtocol" = 0
+ | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | "Device Speed" = 1
+ | | | | "idVendor" = 1452
+ | | | | "AAPL,current-in-sleep" = 1000
+ | | | | "Requested Power" = 0
+ | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o AppleUSBHub <class AppleUSBHub, id 0x10000023a, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000023c, !registered, !matched, active, busy 0, retain 7>
+ | | +-o UHC3 at 1D,2 <class IOPCIDevice, id 0x10000018d, registered, matched, active, busy 0 (924 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001e8, registered, matched, active, busy 0 (583 ms), retain 9>
+ | | | +-o UHCI Root Hub Simulation at 1D,2 <class IOUSBRootHubDevice, id 0x10000023d, registered, matched, active, busy 0 (425 ms), retain 10>
+ | | | | | {
+ | | | | | "sessionID" = 533559502
+ | | | | | "AAPL,current-extra-in-sleep" = 500
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 32773
+ | | | | | "bcdDevice" = 272
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 8
+ | | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 1
+ | | | | | "bDeviceClass" = 9
+ | | | | | "locationID" = 1560281088
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 2
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "AAPL,max-port-current-in-sleep" = 1000
+ | | | | | "bDeviceProtocol" = 0
+ | | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | | "Device Speed" = 1
+ | | | | | "idVendor" = 1452
+ | | | | | "AAPL,current-in-sleep" = 1000
+ | | | | | "Requested Power" = 0
+ | | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x10000023f, !registered, !matched, active, busy 0, retain 8>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000241, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o IR Receiver at 5d100000 <class IOUSBDevice, id 0x100000286, registered, matched, active, busy 0 (577 ms), retain 9>
+ | | | | {
+ | | | | "sessionID" = 1116620200
+ | | | | "iManufacturer" = 1
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 33346
+ | | | | "bcdDevice" = 22
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 8
+ | | | | "USB Product Name" = "IR Receiver"
+ | | | | "iProduct" = 2
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 2
+ | | | | "bDeviceClass" = 0
+ | | | | "locationID" = 1561329664
+ | | | | "bDeviceSubClass" = 0
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "PortNum" = 1
+ | | | | "non-removable" = "yes"
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 0
+ | | | | "Need contiguous memory for isoch" = Yes
+ | | | | "USB Vendor Name" = "Apple Computer, Inc."
+ | | | | "Device Speed" = 0
+ | | | | "idVendor" = 1452
+ | | | | "Requested Power" = 50
+ | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x100000288, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000289, registered, matched, active, busy 0 (272 ms), retain 8>
+ | | | +-o AppleIRController <class AppleIRController, id 0x10000028b, registered, matched, active, busy 0 (51 ms), retain 8>
+ | | | +-o IOHIDInterface <class IOHIDInterface, id 0x10000028c, registered, matched, active, busy 0 (2 ms), retain 5>
+ | | | +-o IOHIDLibUserClient <class IOHIDLibUserClient, id 0x1000003d6, !registered, !matched, active, busy 0, retain 6>
+ | | +-o EHC1 at 1D,7 <class IOPCIDevice, id 0x100000199, registered, matched, active, busy 0 (1067 ms), retain 17>
+ | | | +-o IOService <class IOService, id 0x1000001ff, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o AppleUSBEHCI <class AppleUSBEHCI, id 0x100000200, registered, matched, active, busy 0 (978 ms), retain 13>
+ | | | +-o EHCI Root Hub Simulation at 1D,7 <class IOUSBRootHubDevice, id 0x100000209, registered, matched, active, busy 0 (446 ms), retain 12>
+ | | | | | {
+ | | | | | "sessionID" = 278360131
+ | | | | | "AAPL,current-extra-in-sleep" = 500
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 32774
+ | | | | | "bcdDevice" = 512
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 64
+ | | | | | "USB Product Name" = "EHCI Root Hub Simulation"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 1
+ | | | | | "bDeviceClass" = 9
+ | | | | | "locationID" = 18446744073659219968
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "AAPL,current-extra" = 1000
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 6
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "AAPL,current-available" = 1500
+ | | | | | "bDeviceProtocol" = 1
+ | | | | | "AAPL,max-port-current-in-sleep" = 1000
+ | | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | | "Device Speed" = 2
+ | | | | | "idVendor" = 1452
+ | | | | | "AAPL,current-in-sleep" = 3000
+ | | | | | "Requested Power" = 0
+ | | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x10000020c, registered, matched, active, busy 0 (0 ms), retain 9>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000020e, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o LaCie Device at fd100000 <class IOUSBDevice, id 0x10000024d, registered, matched, active, busy 0 (725 ms), retain 8>
+ | | | | | {
+ | | | | | "sessionID" = 637721320
+ | | | | | "iManufacturer" = 10
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 4138
+ | | | | | "bcdDevice" = 256
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 64
+ | | | | | "USB Product Name" = "LaCie Device"
+ | | | | | "iProduct" = 11
+ | | | | | "iSerialNumber" = 5
+ | | | | | "USB Address" = 2
+ | | | | | "bDeviceClass" = 0
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "locationID" = 18446744073660268544
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "kHasMSCInterface" = Yes
+ | | | | | "PortNum" = 1
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "bDeviceProtocol" = 0
+ | | | | | "uid" = "USB:059F102A6E7A5FFFFFFF"
+ | | | | | "USB Vendor Name" = "LaCie"
+ | | | | | "Device Speed" = 2
+ | | | | | "idVendor" = 1439
+ | | | | | "USB Serial Number" = "6E7A5FFFFFFF"
+ | | | | | "Requested Power" = 1
+ | | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x10000024f, !registered, !matched, active, busy 0, retain 4>
+ | | | | +-o MSC Bulk-Only Transfer at 0 <class IOUSBInterface, id 0x100000250, registered, matched, active, busy 0 (453 ms), retain 7>
+ | | | | +-o IOUSBMassStorageClass <class IOUSBMassStorageClass, id 0x100000254, registered, matched, active, busy 0 (248 ms), retain 8>
+ | | | | +-o IOSCSIPeripheralDeviceNub <class IOSCSIPeripheralDeviceNub, id 0x100000256, registered, matched, active, busy 0 (105 ms), retain 6>
+ | | | | +-o IOSCSIPeripheralDeviceType00 <class IOSCSIPeripheralDeviceType00, id 0x100000260, !registered, !matched, active, busy 0 (101 ms), retain 7>
+ | | | | +-o IOBlockStorageServices <class IOBlockStorageServices, id 0x100000263, registered, matched, active, busy 0 (101 ms), retain 5>
+ | | | | +-o IOBlockStorageDriver <class IOBlockStorageDriver, id 0x100000264, registered, matched, active, busy 0 (100 ms), retain 7>
+ | | | | +-o ST950032 5AS Media <class IOMedia, id 0x10000028e, registered, matched, active, busy 0 (99 ms), retain 10>
+ | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000028f, registered, matched, active, busy 0 (0 ms), retain 5>
+ | | | | +-o IOApplePartitionScheme <class IOApplePartitionScheme, id 0x100000293, !registered, !matched, active, busy 0 (25 ms), retain 10>
+ | | | | +-o Apple at 1 <class IOMedia, id 0x100000294, registered, matched, active, busy 0 (4 ms), retain 8>
+ | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000299, registered, matched, active, busy 0 (2 ms), retain 5>
+ | | | | +-o osx104 at 3 <class IOMedia, id 0x100000295, registered, matched, active, busy 0 (9 ms), retain 9>
+ | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000029a, registered, matched, active, busy 0 (2 ms), retain 6>
+ | | | | +-o osx105 at 5 <class IOMedia, id 0x100000296, registered, matched, active, busy 0 (10 ms), retain 9>
+ | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000029b, registered, matched, active, busy 0 (2 ms), retain 6>
+ | | | | +-o osx106 at 7 <class IOMedia, id 0x100000297, registered, matched, active, busy 0 (10 ms), retain 9>
+ | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000029c, registered, matched, active, busy 0 (2 ms), retain 6>
+ | | | | +-o vms at 9 <class IOMedia, id 0x100000298, registered, matched, active, busy 0 (11 ms), retain 9>
+ | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000029d, registered, matched, active, busy 0 (2 ms), retain 6>
+ | | | +-o Built-in iSight at fd400000 <class IOUSBDevice, id 0x10000025b, registered, matched, active, busy 0 (607 ms), retain 10>
+ | | | | {
+ | | | | "sessionID" = 791376929
+ | | | | "iManufacturer" = 1
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 34050
+ | | | | "bcdDevice" = 341
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 64
+ | | | | "USB Product Name" = "Built-in iSight"
+ | | | | "iProduct" = 2
+ | | | | "iSerialNumber" = 3
+ | | | | "USB Address" = 3
+ | | | | "bDeviceClass" = 239
+ | | | | "bDeviceSubClass" = 2
+ | | | | "locationID" = 18446744073663414272
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "PortNum" = 4
+ | | | | "non-removable" = "yes"
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 1
+ | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | "Device Speed" = 2
+ | | | | "idVendor" = 1452
+ | | | | "USB Serial Number" = "6067E773DA9722F4 (03.01)"
+ | | | | "Requested Power" = 250
+ | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | "kSuspendPort" = Yes
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x10000025f, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000265, registered, matched, active, busy 0 (373 ms), retain 6>
+ | | | +-o IOUSBInterface at 1 <class IOUSBInterface, id 0x100000266, registered, matched, active, busy 0 (399 ms), retain 6>
+ | | | +-o IOUSBInterface at 2 <class IOUSBInterface, id 0x100000267, registered, matched, active, busy 0 (433 ms), retain 6>
+ | | +-o pci-bridge at 1E <class IOPCIDevice, id 0x1000001b4, registered, matched, active, busy 0 (199 ms), retain 9>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x100000204, registered, matched, active, busy 0 (113 ms), retain 5>
+ | | +-o LPCB at 1F <class IOPCIDevice, id 0x1000001a7, registered, matched, active, busy 0 (253 ms), retain 28>
+ | | | +-o AppleLPC <class AppleLPC, id 0x1000002b7, registered, matched, active, busy 0 (2 ms), retain 5>
+ | | +-o PATA at 1F,1 <class IOPCIDevice, id 0x1000001a8, registered, matched, active, busy 0 (500 ms), retain 13>
+ | | | +-o AppleIntelPIIXATARoot <class AppleIntelPIIXATARoot, id 0x1000001ee, !registered, !matched, active, busy 0 (450 ms), retain 6>
+ | | | +-o PRID at 0 <class AppleIntelPIIXATAChannel, id 0x1000001a9, registered, matched, active, busy 0 (450 ms), retain 11>
+ | | | | +-o AppleIntelPIIXPATA <class AppleIntelPIIXPATA, id 0x1000001f4, registered, matched, active, busy 0 (412 ms), retain 7>
+ | | | | +-o ATADeviceNub at 0 <class ATADeviceNub, id 0x10000021b, registered, matched, active, busy 0 (306 ms), retain 6>
+ | | | | +-o IOATAPIProtocolTransport <class IOATAPIProtocolTransport, id 0x10000022e, registered, matched, active, busy 0 (276 ms), retain 9>
+ | | | | +-o IOSCSIPeripheralDeviceNub <class IOSCSIPeripheralDeviceNub, id 0x100000234, registered, matched, active, busy 0 (43 ms), retain 6>
+ | | | | +-o IOSCSIPeripheralDeviceType05 <class IOSCSIPeripheralDeviceType05, id 0x100000251, !registered, !matched, active, busy 0 (2 ms), retain 7>
+ | | | | +-o IODVDServices <class IODVDServices, id 0x100000258, registered, matched, active, busy 0 (2 ms), retain 6>
+ | | | | +-o IODVDBlockStorageDriver <class IODVDBlockStorageDriver, id 0x100000259, registered, matched, active, busy 0 (0 ms), retain 5>
+ | | | | +-o SCSITaskUserClientIniter <class SCSITaskUserClientIniter, id 0x10000025a, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o CHN1 at 1 <class AppleIntelPIIXATAChannel, id 0x1000001ef, registered, matched, active, busy 0 (51 ms), retain 6>
+ | | +-o SATA at 1F,2 <class IOPCIDevice, id 0x1000001ac, registered, matched, active, busy 0 (309 ms), retain 12>
+ | | | +-o AppleICH8AHCI <class AppleICH8AHCI, id 0x1000001f0, registered, matched, active, busy 0 (254 ms), retain 7>
+ | | | +-o PRT0 at 0 <class AppleAHCIPort, id 0x1000001ad, registered, matched, active, busy 0 (246 ms), retain 10>
+ | | | +-o IOAHCIDevice at 0 <class IOAHCIDevice, id 0x1000001f9, registered, matched, active, busy 0 (246 ms), retain 12>
+ | | | +-o AppleAHCIDiskDriver <class AppleAHCIDiskDriver, id 0x1000001fa, registered, matched, active, busy 0 (219 ms), retain 6>
+ | | | +-o IOAHCIBlockStorageDevice <class IOAHCIBlockStorageDevice, id 0x10000020a, registered, matched, active, busy 0 (212 ms), retain 6>
+ | | | +-o IOBlockStorageDriver <class IOBlockStorageDriver, id 0x100000211, registered, matched, active, busy 0 (211 ms), retain 7>
+ | | | +-o WDC WD3200AAJS-40VWA0 Media <class IOMedia, id 0x100000212, registered, matched, active, busy 0 (211 ms), retain 10>
+ | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000213, registered, matched, active, busy 0 (0 ms), retain 5>
+ | | | +-o IOGUIDPartitionScheme <class IOGUIDPartitionScheme, id 0x100000215, !registered, !matched, active, busy 0 (96 ms), retain 8>
+ | | | +-o EFI System Partition at 1 <class IOMedia, id 0x100000229, registered, matched, active, busy 0 (3 ms), retain 8>
+ | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000022f, registered, matched, active, busy 0 (0 ms), retain 5>
+ | | | +-o osx at 2 <class IOMedia, id 0x10000022a, registered, matched, active, busy 0 (95 ms), retain 10>
+ | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000230, registered, matched, active, busy 0 (2 ms), retain 6>
+ | | | +-o Sauvegardes at 3 <class IOMedia, id 0x10000022b, registered, matched, active, busy 0 (95 ms), retain 9>
+ | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000231, registered, matched, active, busy 0 (0 ms), retain 6>
+ | | +-o SBUS at 1F,3 <class IOPCIDevice, id 0x1000001ae, registered, matched, active, busy 0 (68 ms), retain 8>
+ | +-o PDRC <class IOACPIPlatformDevice, id 0x10000012f, registered, matched, active, busy 0 (4 ms), retain 6>
+ | +-o SMC <class IOACPIPlatformDevice, id 0x100000167, registered, matched, active, busy 0 (155 ms), retain 7>
+ | | +-o AppleSMC <class AppleSMC, id 0x1000002c1, registered, matched, active, busy 0 (83 ms), retain 6>
+ | | +-o SMCWatchDogTimer <class SMCWatchDogTimer, id 0x1000002d7, registered, matched, active, busy 0 (60 ms), retain 5>
+ | +-o EC <class IOACPIPlatformDevice, id 0x100000168, registered, matched, active, busy 0 (7 ms), retain 8>
+ | | +-o AppleACPIEC <class AppleACPIEC, id 0x100000124, !registered, !matched, active, busy 0, retain 6>
+ | +-o DMAC <class IOACPIPlatformDevice, id 0x100000169, registered, matched, active, busy 0 (8 ms), retain 6>
+ | +-o FWHD <class IOACPIPlatformDevice, id 0x10000016a, registered, matched, active, busy 0 (12 ms), retain 6>
+ | +-o HPET <class IOACPIPlatformDevice, id 0x10000016b, registered, matched, active, busy 0 (26 ms), retain 7>
+ | | +-o AppleHPET <class AppleHPET, id 0x1000001cc, !registered, !matched, active, busy 0, retain 4>
+ | +-o IPIC <class IOACPIPlatformDevice, id 0x10000016c, registered, matched, active, busy 0 (13 ms), retain 6>
+ | +-o MATH <class IOACPIPlatformDevice, id 0x10000016d, registered, matched, active, busy 0 (13 ms), retain 6>
+ | +-o LDRC <class IOACPIPlatformDevice, id 0x10000016e, registered, matched, active, busy 0 (14 ms), retain 6>
+ | +-o RTC <class IOACPIPlatformDevice, id 0x10000016f, registered, matched, active, busy 0 (99 ms), retain 8>
+ | | +-o AppleRTC <class AppleRTC, id 0x1000001c8, registered, matched, active, busy 0 (75 ms), retain 6>
+ | +-o TIMR <class IOACPIPlatformDevice, id 0x100000170, registered, matched, active, busy 0 (16 ms), retain 6>
+ | +-o AppleEFIRuntime <class AppleEFIRuntime, id 0x1000001c9, registered, matched, active, busy 0 (693 ms), retain 7>
+ | | +-o AppleEFINVRAM <class AppleEFINVRAM, id 0x1000001ca, registered, matched, active, busy 0 (1 ms), retain 6>
+ | +-o IOPCIMessagedInterruptController <class IOPCIMessagedInterruptController, id 0x1000001cd, registered, matched, active, busy 0 (40 ms), retain 6>
+ | +-o AppleRawIOAddressSpace <class AppleRawIOAddressSpace, id 0x1000002d5, registered, matched, active, busy 0 (23 ms), retain 4>
+ | +-o AppleRawPhysicalMemoryAddressSpace <class AppleRawPhysicalMemoryAddressSpace, id 0x1000002d6, registered, matched, active, busy 0 (24 ms), retain 4>
+ +-o IOResources <class IOResources, id 0x100000113, registered, matched, active, busy 0 (991 ms), retain 31>
+ +-o AppleIntelCPUPowerManagement <class AppleIntelCPUPowerManagement, id 0x10000011b, registered, matched, active, busy 0 (234 ms), retain 5>
+ | +-o AppleIntelCPUPowerManagementClient <class AppleIntelCPUPowerManagementClient, id 0x100000120, !registered, !matched, active, busy 0, retain 4>
+ +-o IOHDIXController <class IOHDIXController, id 0x10000011c, registered, matched, active, busy 0 (1 ms), retain 4>
+ +-o com_apple_AppleFSCompression_AppleFSCompressionTypeZlib <class com_apple_AppleFSCompression_AppleFSCompressionTypeZlib, id 0x10000021d, !registered, !matched, active, busy 0, retain 4>
+ +-o com_apple_BootCache <class com_apple_BootCache, id 0x10000021e, !registered, !matched, active, busy 0, retain 4>
+ +-o IONetworkStack <class IONetworkStack, id 0x10000021f, registered, matched, active, busy 0 (2 ms), retain 11>
+ | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x1000002aa, !registered, !matched, active, busy 0, retain 5>
+ +-o IOHIDSystem <class IOHIDSystem, id 0x100000220, registered, matched, active, busy 0 (2 ms), retain 16>
+ | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 5>
+ | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 5>
+ | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037c, !registered, !matched, active, busy 0, retain 5>
+ | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037d, !registered, !matched, active, busy 0, retain 5>
+ +-o AppleProfileOSHooks <class AppleProfileOSHooks, id 0x1000002bd, registered, matched, active, busy 0 (86 ms), retain 15>
+ | +-o AppleProfileTimeTrigger <class AppleProfileTimeTrigger, id 0x1000002db, registered, matched, active, busy 0 (53 ms), retain 6>
+ | +-o AppleProfilePMITrigger <class AppleProfilePMITrigger, id 0x1000002dc, registered, matched, active, busy 0 (54 ms), retain 6>
+ | +-o AppleOSXPerformanceMonitor <class AppleOSXPerformanceMonitor, id 0x1000002dd, !registered, !matched, active, busy 0 (55 ms), retain 6>
+ | | +-o AppleOSXPerformanceCounter <class AppleOSXPerformanceCounter, id 0x1000002e8, registered, matched, active, busy 0 (55 ms), retain 6>
+ | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 18>
+ | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | +-o AppleOSXPerformanceCounter <class AppleOSXPerformanceCounter, id 0x1000002e9, registered, matched, active, busy 0 (55 ms), retain 6>
+ | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 18>
+ | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileKEventTrigger <class AppleProfileKEventTrigger, id 0x1000002df, registered, matched, active, busy 0 (57 ms), retain 6>
+ | +-o AppleProfileManualTrigger <class AppleProfileManualTrigger, id 0x1000002e0, registered, matched, active, busy 0 (62 ms), retain 6>
+ | +-o AppleProfileCallstackAction <class AppleProfileCallstackAction, id 0x1000002e1, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileKEventAction <class AppleProfileKEventAction, id 0x1000002e2, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileRegisterStateAction <class AppleProfileRegisterStateAction, id 0x1000002e3, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileThreadInfoAction <class AppleProfileThreadInfoAction, id 0x1000002e4, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileTimestampAction <class AppleProfileTimestampAction, id 0x1000002e5, !registered, !matched, active, busy 0, retain 5>
+ +-o com_apple_driver_AudioIPCDevice <class com_apple_driver_AudioIPCDevice, id 0x1000002be, registered, matched, active, busy 0 (21 ms), retain 6>
+ | +-o com_apple_driver_AudioIPCEngine <class com_apple_driver_AudioIPCEngine, id 0x1000002d2, registered, matched, active, busy 0 (19 ms), retain 11>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000399, !registered, !matched, active, busy 0, retain 6>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003d9, !registered, !matched, active, busy 0, retain 6>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003eb, !registered, !matched, active, busy 0, retain 6>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000415, !registered, !matched, active, busy 0, retain 6>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000439, !registered, !matched, active, busy 0, retain 6>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000045a, !registered, !matched, active, busy 0, retain 6>
+ +-o Dont_Steal_Mac_OS_X <class Dont_Steal_Mac_OS_X, id 0x1000002bf, !registered, !matched, active, busy 0, retain 5>
+ +-o IOBluetoothSerialManager <class IOBluetoothSerialManager, id 0x1000002c0, registered, matched, active, busy 0 (29 ms), retain 7>
+ | +-o IOBluetoothSerialClient <class IOBluetoothSerialClient, id 0x10000032b, !registered, !matched, active, busy 0 (4 ms), retain 5>
+ | | +-o IOBluetoothSerialClientSerialStreamSync <class IOBluetoothSerialClientSerialStreamSync, id 0x10000032c, registered, matched, active, busy 0 (4 ms), retain 5>
+ | | +-o IOSerialBSDClient <class IOSerialBSDClient, id 0x10000032d, registered, matched, active, busy 0 (2 ms), retain 4>
+ | +-o IOBluetoothSerialClient <class IOBluetoothSerialClient, id 0x10000032e, !registered, !matched, active, busy 0 (4 ms), retain 5>
+ | +-o IOBluetoothSerialClientModemStreamSync <class IOBluetoothSerialClientModemStreamSync, id 0x10000032f, registered, matched, active, busy 0 (4 ms), retain 5>
+ | +-o IOSerialBSDClient <class IOSerialBSDClient, id 0x100000331, registered, matched, active, busy 0 (1 ms), retain 4>
+ +-o IODisplayWrangler <class IODisplayWrangler, id 0x1000002c2, registered, matched, active, busy 0 (22 ms), retain 7>
+ | +-o IOAccelerationUserClient <class IOAccelerationUserClient, id 0x1000003f8, !registered, !matched, active, busy 0, retain 5>
+ +-o IOSurfaceRoot <class IOSurfaceRoot, id 0x1000002c3, registered, matched, active, busy 0 (82 ms), retain 5>
+ +-o AppleSCSISubsystemGlobals <class AppleSCSISubsystemGlobals, id 0x100000329, registered, matched, active, busy 0 (1 ms), retain 5>
+ +-o com_parallels_hypervisor <class com_parallels_hypervisor, id 0x100000353, registered, matched, active, busy 0 (2 ms), retain 6>
+ | +-o com_parallels_hypervisor_api <class com_parallels_hypervisor_api, id 0x100000354, registered, matched, active, busy 0 (1 ms), retain 5>
+ +-o com_parallels_hid_hook <class com_parallels_hid_hook, id 0x100000355, registered, matched, active, busy 0 (1 ms), retain 4>
+ +-o com_parallels_usb_control <class com_parallels_usb_control, id 0x10000035c, registered, matched, active, busy 0 (14 ms), retain 4>
+ +-o com_parallels_kext_Prlnet <class com_parallels_kext_Prlnet, id 0x10000035d, registered, matched, active, busy 0 (1 ms), retain 7>
+ | +-o com_parallels_kext_PrlnetUserClient <class com_parallels_kext_PrlnetUserClient, id 0x100000385, !registered, !matched, active, busy 0, retain 5>
+ | +-o com_parallels_kext_PrlnetUserClient <class com_parallels_kext_PrlnetUserClient, id 0x100000386, !registered, !matched, active, busy 0, retain 5>
+ | +-o com_parallels_kext_PrlnetUserClient <class com_parallels_kext_PrlnetUserClient, id 0x100000387, !registered, !matched, active, busy 0, retain 5>
+ +-o com_parallels_kext_prl_vnic_bus <class com_parallels_kext_prl_vnic_bus, id 0x10000035e, registered, matched, active, busy 0 (1 ms), retain 4>
+ +-o org_virtualbox_SupDrv <class org_virtualbox_SupDrv, id 0x10000035f, registered, matched, active, busy 0 (1 ms), retain 4>
+ +-o org_virtualbox_VBoxUSB <class org_virtualbox_VBoxUSB, id 0x100000363, registered, matched, active, busy 0 (5 ms), retain 5>
+ | +-o org_virtualbox_VBoxUSBClient <class org_virtualbox_VBoxUSBClient, id 0x10000046f, !registered, !matched, active, busy 0, retain 5>
+ +-o com_vmware_kext_VmmonService <class com_vmware_kext_VmmonService, id 0x100000388, !registered, !matched, active, busy 0, retain 5>
+ +-o com_vmware_kext_UsbPortArbiter <class com_vmware_kext_UsbPortArbiter, id 0x100000395, registered, matched, active, busy 0 (15 ms), retain 4>
+ +-o com_vmware_kext_KeyboardState <class com_vmware_kext_KeyboardState, id 0x100000396, registered, matched, active, busy 0 (16 ms), retain 4>
diff --git a/t/tools/macos.t b/t/tools/macos.t
index 34aefd5..164f94f 100755
--- a/t/tools/macos.t
+++ b/t/tools/macos.t
@@ -2844,170 +2844,333 @@ my %system_profiler_tests = (
}
);
-my %ioreg_tests = (
- IOUSBDevice => [
- {
- 'IOGeneralInterest' => 'IOCommand is not serializable',
- 'USB Address' => '2',
- 'Requested Power' => '20',
- 'idProduct' => '539',
- 'bMaxPacketSize0' => '8',
- 'USB Vendor Name' => 'Apple Computer',
- 'sessionID' => '922879256',
- 'bNumConfigurations' => '1',
- 'bDeviceProtocol' => '0',
- 'Bus Power Available' => '250',
- 'Device Speed' => '1',
- 'USB Product Name' => 'Apple Internal Keyboard / Trackpad',
- 'iProduct' => '2',
- 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
- 'non-removable' => 'yes',
- 'bDeviceClass' => '0',
- 'bDeviceSubClass' => '0',
- 'PortNum' => '2',
- 'bcdDevice' => '24',
- 'locationID' => '488636416',
- 'iManufacturer' => '1',
- 'iSerialNumber' => '0',
- 'idVendor' => '1452'
- },
- {
- 'IOGeneralInterest' => 'IOCommand is not serializable',
- 'USB Address' => '2',
- 'Requested Power' => '50',
- 'idProduct' => '33344',
- 'bMaxPacketSize0' => '8',
- 'USB Vendor Name' => 'Apple Computer, Inc.',
- 'sessionID' => '944991920',
- 'bNumConfigurations' => '1',
- 'bDeviceProtocol' => '0',
- 'Bus Power Available' => '250',
- 'Device Speed' => '1',
- 'USB Product Name' => 'IR Receiver',
- 'iProduct' => '2',
- 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
- 'non-removable' => 'yes',
- 'bDeviceClass' => '0',
- 'bDeviceSubClass' => '0',
- 'PortNum' => '2',
- 'bcdDevice' => '272',
- 'locationID' => '1562378240',
- 'iManufacturer' => '1',
- 'iSerialNumber' => '0',
- 'idVendor' => '1452'
- },
- {
- 'IOGeneralInterest' => 'IOCommand is not serializable',
- 'USB Address' => '2',
- 'Requested Power' => '0',
- 'idProduct' => '33285',
- 'bMaxPacketSize0' => '64',
- 'USB Vendor Name' => 'Apple Inc.',
- 'sessionID' => '3290864968',
- 'bNumConfigurations' => '1',
- 'bDeviceProtocol' => '1',
- 'Bus Power Available' => '250',
- 'Device Speed' => '1',
- 'iProduct' => '0',
- 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
- 'USB Product Name' => 'Bluetooth USB Host Controller',
- 'PortNum' => '1',
- 'bDeviceClass' => '224',
- 'bDeviceSubClass' => '1',
- 'non-removable' => 'yes',
- 'bcdDevice' => '6501',
- 'locationID' => '2098200576',
- 'iManufacturer' => '0',
- 'iSerialNumber' => '0',
- 'idVendor' => '1452'
- },
- {
- 'IOGeneralInterest' => 'IOCommand is not serializable',
- 'USB Address' => '2',
- 'Requested Power' => '50',
- 'idProduct' => '34049',
- 'bMaxPacketSize0' => '64',
- 'USB Vendor Name' => 'Micron',
- 'sessionID' => '2717373407',
- 'bNumConfigurations' => '1',
- 'bDeviceProtocol' => '255',
- 'Bus Power Available' => '250',
- 'Device Speed' => '2',
- 'USB Product Name' => 'Built-in iSight',
- 'iProduct' => '2',
- 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
- 'non-removable' => 'yes',
- 'bDeviceClass' => '255',
- 'bDeviceSubClass' => '255',
- 'PortNum' => '4',
- 'bcdDevice' => '393',
- 'locationID' => '18446744073663414272',
- 'iManufacturer' => '1',
- 'iSerialNumber' => '0',
- 'idVendor' => '1452'
- },
- {
- 'IOGeneralInterest' => 'IOCommand is not serializable',
- 'USB Address' => '3',
- 'Requested Power' => '50',
- 'idProduct' => '24613',
- 'bMaxPacketSize0' => '64',
- 'USB Vendor Name' => 'CBM',
- 'sessionID' => '3995793432240',
- 'bNumConfigurations' => '1',
- 'bDeviceProtocol' => '0',
- 'Bus Power Available' => '250',
- 'uid' => 'USB:197660250078C5C90000',
- 'Device Speed' => '2',
- 'USB Product Name' => 'Flash Disk',
- 'iProduct' => '2',
- 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
- 'bDeviceClass' => '0',
- 'bDeviceSubClass' => '0',
- 'PortNum' => '3',
- 'bcdDevice' => '256',
- 'locationID' => '18446744073662365696',
- 'iManufacturer' => '1',
- 'iSerialNumber' => '3',
- 'idVendor' => '6518',
- 'USB Serial Number' => '16270078C5C90000'
- }
- ],
- IOPlatformExpertDevice => [
- {
- 'IOPlatformUUID' => '00000000-0000-1000-8000-001B633026B1',
- 'IOBusyInterest' => 'IOCommand is not serializable',
- 'IOPlatformSerialNumber' => 'W87305UMYA8',
- 'IOPolledInterface' => 'SMCPolledInterface is not serializable',
- 'compatible' => 'MacBook2,1',
- 'model' => 'MacBook2,1',
- 'serial-number' => '59413800000000000000000000573837333035554',
- 'version' => '1.0',
- 'name' => '/',
- 'board-id' => 'Mac-F4208CAA',
- 'clock-frequency' => '00',
- 'system-type' => '02',
- 'manufacturer' => 'Apple Inc.',
- 'product-name' => 'MacBook2,1',
- 'IOPlatformArgs' => '0030'
- }
- ]
+my @ioreg_tests = (
+ {
+ file => 'IOUSBDevice1',
+ class => 'IOUSBDevice',
+ results => [
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '2',
+ 'Requested Power' => '20',
+ 'idProduct' => '539',
+ 'bMaxPacketSize0' => '8',
+ 'USB Vendor Name' => 'Apple Computer',
+ 'sessionID' => '922879256',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '0',
+ 'Bus Power Available' => '250',
+ 'Device Speed' => '1',
+ 'USB Product Name' => 'Apple Internal Keyboard / Trackpad',
+ 'iProduct' => '2',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'non-removable' => 'yes',
+ 'bDeviceClass' => '0',
+ 'bDeviceSubClass' => '0',
+ 'PortNum' => '2',
+ 'bcdDevice' => '24',
+ 'locationID' => '488636416',
+ 'iManufacturer' => '1',
+ 'iSerialNumber' => '0',
+ 'idVendor' => '1452'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '2',
+ 'Requested Power' => '50',
+ 'idProduct' => '33344',
+ 'bMaxPacketSize0' => '8',
+ 'USB Vendor Name' => 'Apple Computer, Inc.',
+ 'sessionID' => '944991920',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '0',
+ 'Bus Power Available' => '250',
+ 'Device Speed' => '1',
+ 'USB Product Name' => 'IR Receiver',
+ 'iProduct' => '2',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'non-removable' => 'yes',
+ 'bDeviceClass' => '0',
+ 'bDeviceSubClass' => '0',
+ 'PortNum' => '2',
+ 'bcdDevice' => '272',
+ 'locationID' => '1562378240',
+ 'iManufacturer' => '1',
+ 'iSerialNumber' => '0',
+ 'idVendor' => '1452'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '2',
+ 'Requested Power' => '0',
+ 'idProduct' => '33285',
+ 'bMaxPacketSize0' => '64',
+ 'USB Vendor Name' => 'Apple Inc.',
+ 'sessionID' => '3290864968',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '1',
+ 'Bus Power Available' => '250',
+ 'Device Speed' => '1',
+ 'iProduct' => '0',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'USB Product Name' => 'Bluetooth USB Host Controller',
+ 'PortNum' => '1',
+ 'bDeviceClass' => '224',
+ 'bDeviceSubClass' => '1',
+ 'non-removable' => 'yes',
+ 'bcdDevice' => '6501',
+ 'locationID' => '2098200576',
+ 'iManufacturer' => '0',
+ 'iSerialNumber' => '0',
+ 'idVendor' => '1452'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '2',
+ 'Requested Power' => '50',
+ 'idProduct' => '34049',
+ 'bMaxPacketSize0' => '64',
+ 'USB Vendor Name' => 'Micron',
+ 'sessionID' => '2717373407',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '255',
+ 'Bus Power Available' => '250',
+ 'Device Speed' => '2',
+ 'USB Product Name' => 'Built-in iSight',
+ 'iProduct' => '2',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'non-removable' => 'yes',
+ 'bDeviceClass' => '255',
+ 'bDeviceSubClass' => '255',
+ 'PortNum' => '4',
+ 'bcdDevice' => '393',
+ 'locationID' => '18446744073663414272',
+ 'iManufacturer' => '1',
+ 'iSerialNumber' => '0',
+ 'idVendor' => '1452'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '3',
+ 'Requested Power' => '50',
+ 'idProduct' => '24613',
+ 'bMaxPacketSize0' => '64',
+ 'USB Vendor Name' => 'CBM',
+ 'sessionID' => '3995793432240',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '0',
+ 'Bus Power Available' => '250',
+ 'uid' => 'USB:197660250078C5C90000',
+ 'Device Speed' => '2',
+ 'USB Product Name' => 'Flash Disk',
+ 'iProduct' => '2',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'bDeviceClass' => '0',
+ 'bDeviceSubClass' => '0',
+ 'PortNum' => '3',
+ 'bcdDevice' => '256',
+ 'locationID' => '18446744073662365696',
+ 'iManufacturer' => '1',
+ 'iSerialNumber' => '3',
+ 'idVendor' => '6518',
+ 'USB Serial Number' => '16270078C5C90000'
+ }
+ ],
+ },
+ {
+ file => 'IOUSBDevice2',
+ class => 'IOUSBDevice',
+ results => [
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '3',
+ 'Requested Power' => '50',
+ 'idProduct' => '54',
+ 'bMaxPacketSize0' => '8',
+ 'USB Vendor Name' => 'Genius',
+ 'sessionID' => '1035836159',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '0',
+ 'Bus Power Available' => '250',
+ 'Device Speed' => '0',
+ 'USB Product Name' => 'NetScroll + Mini Traveler',
+ 'iProduct' => '1',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'bDeviceClass' => '0',
+ 'bDeviceSubClass' => '0',
+ 'PortNum' => '2',
+ 'bcdDevice' => '272',
+ 'locationID' => '438304768',
+ 'iManufacturer' => '2',
+ 'iSerialNumber' => '0',
+ 'idVendor' => '1112'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '2',
+ 'Requested Power' => '0',
+ 'idProduct' => '33286',
+ 'bMaxPacketSize0' => '64',
+ 'USB Vendor Name' => 'Apple Inc.',
+ 'sessionID' => '3009829809',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '1',
+ 'Bus Power Available' => '250',
+ 'Device Speed' => '1',
+ 'iProduct' => '0',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'USB Product Name' => 'Bluetooth USB Host Controller',
+ 'PortNum' => '1',
+ 'bDeviceClass' => '224',
+ 'bDeviceSubClass' => '1',
+ 'non-removable' => 'yes',
+ 'bcdDevice' => '6501',
+ 'locationID' => '437256192',
+ 'iManufacturer' => '0',
+ 'iSerialNumber' => '0',
+ 'idVendor' => '1452'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '3',
+ 'Requested Power' => '10',
+ 'idProduct' => '545',
+ 'bMaxPacketSize0' => '8',
+ 'USB Vendor Name' => 'Apple, Inc',
+ 'sessionID' => '1018522533',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '0',
+ 'Bus Power Available' => '50',
+ 'Device Speed' => '0',
+ 'USB Product Name' => 'Apple Keyboard',
+ 'iProduct' => '2',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'non-removable' => 'yes',
+ 'bDeviceClass' => '0',
+ 'bDeviceSubClass' => '0',
+ 'PortNum' => '2',
+ 'bcdDevice' => '105',
+ 'locationID' => '18446744073613213696',
+ 'iManufacturer' => '1',
+ 'iSerialNumber' => '0',
+ 'idVendor' => '1452'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '2',
+ 'Requested Power' => '50',
+ 'idProduct' => '33346',
+ 'bMaxPacketSize0' => '8',
+ 'USB Vendor Name' => 'Apple Computer, Inc.',
+ 'sessionID' => '1116620200',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '0',
+ 'Bus Power Available' => '250',
+ 'Device Speed' => '0',
+ 'USB Product Name' => 'IR Receiver',
+ 'iProduct' => '2',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'non-removable' => 'yes',
+ 'bDeviceClass' => '0',
+ 'bDeviceSubClass' => '0',
+ 'PortNum' => '1',
+ 'bcdDevice' => '22',
+ 'locationID' => '1561329664',
+ 'iManufacturer' => '1',
+ 'iSerialNumber' => '0',
+ 'idVendor' => '1452'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '2',
+ 'Requested Power' => '1',
+ 'idProduct' => '4138',
+ 'bMaxPacketSize0' => '64',
+ 'USB Vendor Name' => 'LaCie',
+ 'sessionID' => '637721320',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '0',
+ 'Bus Power Available' => '250',
+ 'uid' => 'USB:059F102A6E7A5FFFFFFF',
+ 'Device Speed' => '2',
+ 'USB Product Name' => 'LaCie Device',
+ 'iProduct' => '11',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'bDeviceClass' => '0',
+ 'bDeviceSubClass' => '0',
+ 'PortNum' => '1',
+ 'bcdDevice' => '256',
+ 'locationID' => '18446744073660268544',
+ 'iManufacturer' => '10',
+ 'iSerialNumber' => '5',
+ 'idVendor' => '1439',
+ 'USB Serial Number' => '6E7A5FFFFFFF'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '3',
+ 'Requested Power' => '250',
+ 'idProduct' => '34050',
+ 'bMaxPacketSize0' => '64',
+ 'USB Vendor Name' => 'Apple Inc.',
+ 'sessionID' => '791376929',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '1',
+ 'Bus Power Available' => '250',
+ 'Device Speed' => '2',
+ 'USB Product Name' => 'Built-in iSight',
+ 'iProduct' => '2',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'non-removable' => 'yes',
+ 'bDeviceClass' => '239',
+ 'bDeviceSubClass' => '2',
+ 'PortNum' => '4',
+ 'bcdDevice' => '341',
+ 'locationID' => '18446744073663414272',
+ 'iManufacturer' => '1',
+ 'iSerialNumber' => '3',
+ 'idVendor' => '1452',
+ 'USB Serial Number' => '6067E773DA9722F4 (03.01)'
+ }
+ ]
+ },
+ {
+ file => 'IOPlatformExpertDevice',
+ class => 'IOPlatformExpertDevice',
+ results => [
+ {
+ 'IOPlatformUUID' => '00000000-0000-1000-8000-001B633026B1',
+ 'IOBusyInterest' => 'IOCommand is not serializable',
+ 'IOPlatformSerialNumber' => 'W87305UMYA8',
+ 'IOPolledInterface' => 'SMCPolledInterface is not serializable',
+ 'compatible' => 'MacBook2,1',
+ 'model' => 'MacBook2,1',
+ 'serial-number' => '59413800000000000000000000573837333035554',
+ 'version' => '1.0',
+ 'name' => '/',
+ 'board-id' => 'Mac-F4208CAA',
+ 'clock-frequency' => '00',
+ 'system-type' => '02',
+ 'manufacturer' => 'Apple Inc.',
+ 'product-name' => 'MacBook2,1',
+ 'IOPlatformArgs' => '0030'
+ }
+ ],
+ }
);
plan tests =>
scalar (keys %system_profiler_tests) +
- scalar (keys %ioreg_tests);
-
+ scalar @ioreg_tests;
foreach my $test (keys %system_profiler_tests) {
my $file = "resources/macos/system_profiler/$test";
my $infos = getSystemProfilerInfos(file => $file);
is_deeply($infos, $system_profiler_tests{$test}, "$test system profiler parsing");
- use Data::Dumper;
}
-foreach my $test (keys %ioreg_tests) {
- my $file = "resources/macos/ioreg/$test";
- my @devices = getIODevices(file => $file, class => $test);
- is_deeply(\@devices, $ioreg_tests{$test}, "$test ioreg parsing");
+foreach my $test (@ioreg_tests) {
+ my $file = "resources/macos/ioreg/$test->{file}";
+ my @devices = getIODevices(file => $file, class => $test->{class});
+ is_deeply(\@devices, $test->{results}, "$test->{file} ioreg parsing");
}
================================================================
Commit: d584d225d8d1ab7fc16fd6c8158644728197c35e
https://github.com/fusinv/fusioninventory-agent/commit/d584d225d8d1ab7fc16fd6c8158644728197c35e
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-15 (Thu, 15 Mar 2012)
Changed paths:
A t/inventory/macos/usb.t
Log Message:
-----------
initial import
diff --git a/t/inventory/macos/usb.t b/t/inventory/macos/usb.t
new file mode 100755
index 0000000..ff2c9d2
--- /dev/null
+++ b/t/inventory/macos/usb.t
@@ -0,0 +1,111 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use FusionInventory::Agent::Task::Inventory::Input::MacOS::USB;
+
+my %tests = (
+ IOUSBDevice1 => [
+ {
+ CLASS => '0',
+ NAME => 'Apple Internal Keyboard / Trackpad',
+ SERIAL => undef,
+ SUBCLASS => '0',
+ VENDORID => '0x5ac',
+ PRODUCTID => '0x21b'
+ },
+ {
+ CLASS => '0',
+ NAME => 'IR Receiver',
+ SERIAL => undef,
+ SUBCLASS => '0',
+ VENDORID => '0x5ac',
+ PRODUCTID => '0x8240'
+ },
+ {
+ CLASS => '224',
+ NAME => 'Bluetooth USB Host Controller',
+ SERIAL => undef,
+ SUBCLASS => '1',
+ VENDORID => '0x5ac',
+ PRODUCTID => '0x8205'
+ },
+ {
+ CLASS => '255',
+ NAME => 'Built-in iSight',
+ SERIAL => undef,
+ SUBCLASS => '255',
+ VENDORID => '0x5ac',
+ PRODUCTID => '0x8501'
+ },
+ {
+ CLASS => '0',
+ NAME => 'Flash Disk',
+ SERIAL => '16270078C5C90000',
+ SUBCLASS => '0',
+ VENDORID => '0x1976',
+ PRODUCTID => '0x6025'
+ }
+ ],
+ IOUSBDevice2 => [
+ {
+ CLASS => '0',
+ NAME => 'NetScroll + Mini Traveler',
+ SERIAL => undef,
+ SUBCLASS => '0',
+ VENDORID => '0x458',
+ PRODUCTID => '0x36'
+ },
+ {
+ CLASS => '224',
+ NAME => 'Bluetooth USB Host Controller',
+ SERIAL => undef,
+ SUBCLASS => '1',
+ VENDORID => '0x5ac',
+ PRODUCTID => '0x8206'
+ },
+ {
+ CLASS => '0',
+ NAME => 'Apple Keyboard',
+ SERIAL => undef,
+ SUBCLASS => '0',
+ VENDORID => '0x5ac',
+ PRODUCTID => '0x221'
+ },
+ {
+ CLASS => '0',
+ NAME => 'IR Receiver',
+ SERIAL => undef,
+ SUBCLASS => '0',
+ VENDORID => '0x5ac',
+ PRODUCTID => '0x8242'
+ },
+ {
+ CLASS => '0',
+ NAME => 'LaCie Device',
+ SERIAL => '6E7A5FFFFFFF',
+ SUBCLASS => '0',
+ VENDORID => '0x59f',
+ PRODUCTID => '0x102a'
+ },
+ {
+ CLASS => '239',
+ NAME => 'Built-in iSight',
+ SERIAL => '6067E773DA9722F4 (03.01)',
+ SUBCLASS => '2',
+ VENDORID => '0x5ac',
+ PRODUCTID => '0x8502'
+ }
+ ]
+);
+
+plan tests => scalar keys %tests;
+
+foreach my $test (keys %tests) {
+ my $file = "resources/macos/ioreg/$test";
+ my @devices = FusionInventory::Agent::Task::Inventory::Input::MacOS::USB::_getDevices(file => $file);
+ is_deeply(\@devices, $tests{$test}, $test);
+}
================================================================
Commit: 71be1d14640de14da80b5277f594f4ae3df31ff9
https://github.com/fusinv/fusioninventory-agent/commit/71be1d14640de14da80b5277f594f4ae3df31ff9
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-15 (Thu, 15 Mar 2012)
Changed paths:
M t/inventory/macos/storages.t
M t/inventory/solaris/networks.t
M t/tools/generic.t
Log Message:
-----------
no need for D::D in released code
diff --git a/t/inventory/macos/storages.t b/t/inventory/macos/storages.t
index 62a3759..63de394 100755
--- a/t/inventory/macos/storages.t
+++ b/t/inventory/macos/storages.t
@@ -93,6 +93,5 @@ plan tests => scalar keys %tests;
foreach my $test (keys %tests) {
my $file = "resources/macos/system_profiler/$test";
my @storages = FusionInventory::Agent::Task::Inventory::Input::MacOS::Storages::_getStorages(file => $file);
- is_deeply(\@storages, $tests{$test}, $test) or print Dumper(\@storages);
- use Data::Dumper;
+ is_deeply(\@storages, $tests{$test}, $test);
}
diff --git a/t/inventory/solaris/networks.t b/t/inventory/solaris/networks.t
index 7a231d6..8c0e1b0 100755
--- a/t/inventory/solaris/networks.t
+++ b/t/inventory/solaris/networks.t
@@ -116,14 +116,12 @@ my %ifconfig_tests = (
plan tests =>
int (1 + keys %ifconfig_tests);
-use Data::Dumper;
foreach my $test (keys %ifconfig_tests) {
my $file = "resources/generic/ifconfig/$test";
my @results = FusionInventory::Agent::Task::Inventory::Input::Solaris::Networks::_getInterfaces(file => $file);
- is_deeply(\@results, $ifconfig_tests{$test}, $test) or print Dumper(\@results);
+ is_deeply(\@results, $ifconfig_tests{$test}, $test);
}
-
my @parsefcinfo = (
{
'FIRMWARE' => '05.03.02',
@@ -150,4 +148,4 @@ my @parsefcinfo = (
);
my $file = "resources/solaris/fcinfo_hba-port/sample-1";
my @result = FusionInventory::Agent::Task::Inventory::Input::Solaris::Networks::_parsefcinfo(file => $file);
-is_deeply(\@result, \@parsefcinfo, "_parsefcinfo") or print Dumper(\@result);
+is_deeply(\@result, \@parsefcinfo, "_parsefcinfo");
diff --git a/t/tools/generic.t b/t/tools/generic.t
index 12090c8..671d570 100755
--- a/t/tools/generic.t
+++ b/t/tools/generic.t
@@ -6188,13 +6188,12 @@ foreach my $test (keys %dmidecode_tests) {
my $file = "resources/generic/dmidecode/$test";
my $infos = getDmidecodeInfos(file => $file);
is_deeply($infos, $dmidecode_tests{$test}, "$test dmidecode parsing");
- use Data::Dumper;
}
foreach my $test (keys %cpu_tests) {
my $file = "resources/generic/dmidecode/$test";
my @cpus = getCpusFromDmidecode(file => $file);
- is_deeply(\@cpus, $cpu_tests{$test}, "$test dmidecode cpu extraction") or print Dumper(\@cpus);
+ is_deeply(\@cpus, $cpu_tests{$test}, "$test dmidecode cpu extraction");
}
foreach my $test (keys %lspci_tests) {
================================================================
Commit: 93e65b2ad522119faa741762c627a08d4d062f48
https://github.com/fusinv/fusioninventory-agent/commit/93e65b2ad522119faa741762c627a08d4d062f48
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-15 (Thu, 15 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm
Log Message:
-----------
avoid warnings for undefined serial (close #1507)
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm
index 4f526d9..fd5e44a 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm
@@ -20,7 +20,7 @@ sub doInventory {
foreach my $device (_getDevices(logger => $logger)) {
# avoid duplicates
- next if $seen->{$device->{SERIAL}}++;
+ next if $device->{SERIAL} && $seen->{$device->{SERIAL}}++;
$inventory->addEntry(
section => 'USBDEVICES',
entry => $device,
================================================================
Commit: 83cef33422469c5198aa074a4501f71507ea4ff1
https://github.com/fusinv/fusioninventory-agent/commit/83cef33422469c5198aa074a4501f71507ea4ff1
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-16 (Fri, 16 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Unix.pm
Log Message:
-----------
typo
diff --git a/lib/FusionInventory/Agent/Tools/Unix.pm b/lib/FusionInventory/Agent/Tools/Unix.pm
index decc968..a4571ca 100644
--- a/lib/FusionInventory/Agent/Tools/Unix.pm
+++ b/lib/FusionInventory/Agent/Tools/Unix.pm
@@ -171,7 +171,7 @@ sub getFilesystemsFromDf {
$free = $infos[4];
$type = $infos[6];
} else {
- $filesystem = $params{type},
+ $filesystem = $params{type};
$total = $infos[1];
$free = $infos[3];
$type = $infos[5];
================================================================
Commit: 03b38f2f1a1b829417a613fbfb0476b420a4649f
https://github.com/fusinv/fusioninventory-agent/commit/03b38f2f1a1b829417a613fbfb0476b420a4649f
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-16 (Fri, 16 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Unix.pm
Log Message:
-----------
cosmetics
diff --git a/lib/FusionInventory/Agent/Tools/Unix.pm b/lib/FusionInventory/Agent/Tools/Unix.pm
index a4571ca..3e5a7c4 100644
--- a/lib/FusionInventory/Agent/Tools/Unix.pm
+++ b/lib/FusionInventory/Agent/Tools/Unix.pm
@@ -172,9 +172,9 @@ sub getFilesystemsFromDf {
$type = $infos[6];
} else {
$filesystem = $params{type};
- $total = $infos[1];
- $free = $infos[3];
- $type = $infos[5];
+ $total = $infos[1];
+ $free = $infos[3];
+ $type = $infos[5];
}
# skip some virtual filesystems
================================================================
Commit: a57a70cc7cf83d58a9782808b5eca575d92f0203
https://github.com/fusinv/fusioninventory-agent/commit/a57a70cc7cf83d58a9782808b5eca575d92f0203
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-16 (Fri, 16 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Protocol/https.pm
M lib/FusionInventory/Agent/Task/Inventory.pm
M lib/FusionInventory/Agent/Tools.pm
M lib/FusionInventory/Agent/Tools/Hostname.pm
Log Message:
-----------
various perlcritic issues aknowledgements
diff --git a/lib/FusionInventory/Agent/HTTP/Protocol/https.pm b/lib/FusionInventory/Agent/HTTP/Protocol/https.pm
index d74a8b1..aa0bf7c 100644
--- a/lib/FusionInventory/Agent/HTTP/Protocol/https.pm
+++ b/lib/FusionInventory/Agent/HTTP/Protocol/https.pm
@@ -27,6 +27,7 @@ sub _extra_sock_opts {
);
}
+## no critic (ProhibitMultiplePackages)
package FusionInventory::Agent::HTTP::Protocol::https::Socket;
use base qw(Net::HTTPS LWP::Protocol::http::SocketMethods);
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index 98984f0..ce3eb4c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -181,7 +181,7 @@ sub _initModulesList {
$self->{modules}->{$module}->{done} = 0;
$self->{modules}->{$module}->{used} = 0;
- no strict 'refs'; ## no critic
+ no strict 'refs'; ## no critic (ProhibitNoStrict)
$self->{modules}->{$module}->{runAfter} = [
$parent ? $parent : (),
${$module . '::runAfter'} ? @${$module . '::runAfter'} : ()
@@ -190,7 +190,8 @@ sub _initModulesList {
# second pass: disable fallback modules
foreach my $module (@modules) {
- no strict 'refs'; ## no critic
+ ## no critic (ProhibitNoStrict ProhibitProlongedStrictureOverride)
+ no strict 'refs';
# skip modules already disabled
next unless $self->{modules}->{$module}->{enabled};
diff --git a/lib/FusionInventory/Agent/Tools.pm b/lib/FusionInventory/Agent/Tools.pm
index bc61bbf..b5c24ba 100644
--- a/lib/FusionInventory/Agent/Tools.pm
+++ b/lib/FusionInventory/Agent/Tools.pm
@@ -446,7 +446,7 @@ sub runFunction {
local $SIG{ALRM} = sub { die "alarm\n" } if $params{timeout};
alarm $params{timeout};
- no strict 'refs'; ## no critic
+ no strict 'refs'; ## no critic (ProhibitNoStrict)
$result = &{$params{module} . '::' . $params{function}}(
ref $params{params} eq 'HASH' ? %{$params{params}} :
ref $params{params} eq 'ARRAY' ? @{$params{params}} :
diff --git a/lib/FusionInventory/Agent/Tools/Hostname.pm b/lib/FusionInventory/Agent/Tools/Hostname.pm
index 16fcfed..7bd4dd7 100644
--- a/lib/FusionInventory/Agent/Tools/Hostname.pm
+++ b/lib/FusionInventory/Agent/Tools/Hostname.pm
@@ -9,7 +9,7 @@ use English qw(-no_match_vars);
BEGIN {
if ($OSNAME eq 'MSWin32') {
- no warnings 'redefine';
+ no warnings 'redefine'; ## no critic (ProhibitNoWarnings)
Win32::API->require();
# Kernel32.dll is used more or less everywhere.
# Without this, Win32::API will release the DLL even
================================================================
Commit: 21e5456bc4b28dbf71481333bcfd59a97bcca376
https://github.com/fusinv/fusioninventory-agent/commit/21e5456bc4b28dbf71481333bcfd59a97bcca376
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-17 (Sat, 17 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
Log Message:
-----------
drop copyright notice
the related code is actually in FusionInventory::Agent::Tools::Screen
package
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 903297d..604bec6 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -1,23 +1,5 @@
package FusionInventory::Agent::Task::Inventory::Input::Generic::Screen;
-# Copyright (C) 2005 Mandriva
-# Copyright (C) 2007 Gonéri Le Bouder <goneri at rulezlan.org>
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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 General Public License for more details.
-
-# You should have received a copy of the GNU 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.
-#
-# Some part come from Mandriva's (great) monitor-edid
-# http://svn.mandriva.com/cgi-bin/viewvc.cgi/soft/monitor-edid/trunk/
-#
+
use strict;
use warnings;
================================================================
Commit: 9fb009650564f0d4e68f40c3f58be5a1cf4ae2f6
https://github.com/fusinv/fusioninventory-agent/commit/9fb009650564f0d4e68f40c3f58be5a1cf4ae2f6
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-17 (Sat, 17 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm
M lib/FusionInventory/Agent/Tools/Screen.pm
Log Message:
-----------
make external code notices consistent
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm
index fdf2227..3866f38 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm
@@ -1,31 +1,10 @@
package FusionInventory::Agent::Task::Inventory::Input::Virtualization::Vmsystem;
-# Initial FusionInventory::Agent::Task::Inventory::Input::Virtualization::Vmsystem version: Nicolas EISEN
-#
-# Code include from imvirt - I'm virtualized?
-# http://micky.ibh.net/~liske/imvirt.html
-#
-# Authors:
-# Thomas Liske <liske at ibh.de>
-#
-# Copyright Holder:
-# 2008 (C) IBH IT-Service GmbH [http://www.ibh.de/]
-#
-# License:
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this package; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-#
+# Contains code from imvirt:
+# URL: http://micky.ibh.net/~liske/imvirt.html
+# Authors: Thomas Liske <liske at ibh.de>
+# Copyright: 2008 IBH IT-Service GmbH [http://www.ibh.de/]
+# License: GPLv2+
##
diff --git a/lib/FusionInventory/Agent/Tools/Screen.pm b/lib/FusionInventory/Agent/Tools/Screen.pm
index f2cd98c..d3dddcb 100644
--- a/lib/FusionInventory/Agent/Tools/Screen.pm
+++ b/lib/FusionInventory/Agent/Tools/Screen.pm
@@ -1,24 +1,9 @@
package FusionInventory::Agent::Tools::Screen;
-# Copyright (C) 2005 Mandriva
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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 General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# Some part come from Mandriva's (great) monitor-edid
-# http://svn.mandriva.com/cgi-bin/viewvc.cgi/soft/monitor-edid/trunk/
-#
-
+# Contains code from monitor-edid:
+# URL: http://svn.mandriva.com/cgi-bin/viewvc.cgi/soft/monitor-edid
+# Copyright: 2005 Mandriva
+# License: GPLv2+
use strict;
use warnings;
================================================================
Commit: ad97794df59855e354466030f5827fd8feb5e376
https://github.com/fusinv/fusioninventory-agent/commit/ad97794df59855e354466030f5827fd8feb5e376
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-17 (Sat, 17 Mar 2012)
Changed paths:
M README
M fusioninventory-agent
Log Message:
-----------
keep man page focused on agent usage
The README file is more suited for generic project informations, such
as contact and licensing informations, or security concerns overview.
diff --git a/README b/README
index c802387..eb1c835 100644
--- a/README
+++ b/README
@@ -88,6 +88,27 @@ privileges. On Windows, tough, running agent with SYSTEM privileges, which is
implicit if running as a service, does sometimes gives less results, especially
for shared printers only visible from a user account.
+Security
+--------
+They are several potential security issues in fusioninventory.
+
+First, the server automatically trust any received message, using the
+identifier found in the message (unfortunatly called DEVICEID) to identify the
+sending agent. If you want to protect your machine inventory from rogue
+reports, you have to restrict access to the plugin location on your GLPI
+server, typically using HTTP authentication. And preferentially over HTTPS,
+to prevent password sniffing.
+
+Second, some messages between the server and the agent may contain sensible
+informations. For instance, NetInventory tasks involves sending SNMP
+credentials from the server to the agent. In this case, HTTPS usage ensures
+proper communication encryption.
+
+Third, some tasks are explicitely designed to make the agent execute arbitrary
+commands on its host. For instance, the Deploy task is used to install
+software on agent side. In this case, HTTPS usage ensures proper server
+authentication.
+
SSL support
-----------
LWP (also known as libwww-perl) is able to use either Crypt::SSLeay or
@@ -118,6 +139,22 @@ The available workaround:
openssl and its perl bindings (Net::SSLeay)
- disable server certificate checking on client
+Contacts
+--------
+
+Project websites:
+* main site: http://www.fusioninventory.org
+* forge: http://forge.fusioninventory.org
+
+Project mailing lists:
+* http://lists.alioth.debian.org/mailman/listinfo/fusioninventory-user
+* http://lists.alioth.debian.org/mailman/listinfo/fusioninventory-devel
+
+Project IRC channel:
+* #FusionInventory on FreeNode IRC Network
+
+Please report any issues on project forge bugtracker.
+
Authors
-------
* Gonéri Le Bouder <goneri at rulezlan.org>>
@@ -130,3 +167,23 @@ License
-------
This software is licensed under the terms of GPLv2+, see LICENSE file for
details.
+
+Additional pieces of software
+-----------------------------
+
+The memconf script:
+url: http://myweb.cableone.net/4schmidts/memconf.html
+author: Tom Schmidt
+copyright: 1996-2009 Tom Schmidt
+
+FusionInventory::Agent::Task::Inventory::Input::Virtualization::Vmsystem
+contains code from imvirt:
+url: http://micky.ibh.net/~liske/imvirt.html
+author: Thomas Liske <liske at ibh.de>
+copyright: 2008 IBH IT-Service GmbH [http://www.ibh.de/]
+License: GPLv2+
+
+FusionInventory::Agent::Tools::Screen contains code from monitor-edid:
+url: http://svn.mandriva.com/cgi-bin/viewvc.cgi/soft/monitor-edid
+copyright: 2005 Mandriva
+license: GPLv2+
diff --git a/fusioninventory-agent b/fusioninventory-agent
index a1ec3bb..172ab60 100755
--- a/fusioninventory-agent
+++ b/fusioninventory-agent
@@ -589,131 +589,3 @@ On Windows, the configuration is loaded from the registry, from an arch-dependan
=item * F<HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FusionInventory-Agent> for 64 bits machines
=back
-
-=head1 SECURITY
-
-Some modules like SNMPQuery needs to sent credential from the agent to the
-agent. We recommend to enable HTTPS support on the OCS or FusionInventory
-For GLPI server. We also recommend to use only trusted machine as agent in
-this case.
-
-=head1 AUTHORS
-
-The FusionInventory project L<fusioninventory-devel at lists.alioth.debian.org>
-
-The maintainer is Goneri LE BOUDER <goneri at rulezlan.org>
-
-Please read the AUTHORS, Changes and THANKS files to see who is behind
-FusionInventory.
-
-=head1 SEE ALSO
-
-=over 4
-
-=item
-
-FusionInventory website: L<http://www.FusionInventory.org/>
-
-=item
-
-project Forge: L<http://Forge.FusionInventory.org>
-
-=item
-
-The source code of the agent is available on:
-
-=over
-
-=item
-
-Gitorious: L<http://gitorious.org/fusioninventory>
-
-=item
-
-Github: L<http://github.com/fusinv/fusioninventory-agent>
-
-=back
-
-=item
-
-The mailing lists:
-
-=over
-
-=item
-
-L<http://lists.alioth.debian.org/mailman/listinfo/fusioninventory-devel>
-
-=item
-
-L<http://lists.alioth.debian.org/mailman/listinfo/fusioninventory-user>
-
-=back
-
-=item
-
-IRC: #FusionInventory on FreeNode IRC Network
-
-=back
-
-=head1 BUGS
-
-Please, use the mailing lists as much as possible. You can also use the bugtracker on
-http://forge.fusionInventory.org
-
-
-=head1 COPYRIGHT
-
-Copyright (C) 2006-2010 OCS Inventory contributors
-Copyright (C) 2010-2012 FusionInventory Team
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 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 General Public License for more details.
-
- You should have received a copy of the GNU 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.
-
-The memconf script is maintained by Tom Schmidt
-http://myweb.cableone.net/4schmidts/memconf.html
-Copyright © 1996-2009 Tom Schmidt
-
-memconf is free software; you can redistribute it and/or modify it under the
-terms of the GNU General Public License as published by the Free Software
-Foundation; either version 2 of the License, or (at your option) any later
-version.
-
-FusionInventory::Agent::Backend::Virtualization::Vmsystem uses code from
-imvirt:
-
- Authors:
- Thomas Liske <liske at ibh.de>
-
- Copyright Holder:
- 2008 (C) IBH IT-Service GmbH [http://www.ibh.de/]
-
- License:
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this package; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
- USA
-
-
-=cut
================================================================
Commit: b42cfd8141de1ebf810decda444e4161c705ca2f
https://github.com/fusinv/fusioninventory-agent/commit/b42cfd8141de1ebf810decda444e4161c705ca2f
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-17 (Sat, 17 Mar 2012)
Changed paths:
M fusioninventory-agent
Log Message:
-----------
update configuration section
diff --git a/fusioninventory-agent b/fusioninventory-agent
index 172ab60..6660684 100755
--- a/fusioninventory-agent
+++ b/fusioninventory-agent
@@ -561,26 +561,19 @@ Print the version and exit.
=back
+=head1 CONFIGURATION
-=head1 CONFIG FILE
+The agent is able to use multiple configuration backends. The registry backend
+is the default on Windows platform, and the file backend is the default
+everywhere else. Another backend can be specified using the B<--config> option.
-The agent initialize its settings from the configuration first.
+The I<file> backend reads configuration directives from a configuration file,
+whose default location is determined at installation time as
+PREFIX/etc/agent.cfg. An alternative location can also be given with
+B<--conf-file> option.
-On Unix, this configuration is loaded from a configuration file, the first
-found among the following locations:
-
-=over
-
-=item * F</etc/fusioninventory/agent.cfg>
-
-=item * F</usr/local/etc/fusioninventory/agent.cfg>
-
-=back
-
-An alternative configuration file can be specified with the B<--conf-file>
-parameter, and will be used instead.
-
-On Windows, the configuration is loaded from the registry, from an arch-dependant location:
+The I<registry> backend reads configuration directives from the Windows
+registry, with an arch-dependant location:
=over
@@ -589,3 +582,6 @@ On Windows, the configuration is loaded from the registry, from an arch-dependan
=item * F<HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FusionInventory-Agent> for 64 bits machines
=back
+
+The I<none> backend doesn't read any configuration directive at all, allowing
+to isolate the agent execution from any installed configuration.
================================================================
Commit: 1753ec1132e6bfd6698fb511cfb26fc6eb389ea9
https://github.com/fusinv/fusioninventory-agent/commit/1753ec1132e6bfd6698fb511cfb26fc6eb389ea9
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-18 (Sun, 18 Mar 2012)
Changed paths:
M Makefile.PL
Log Message:
-----------
Revert "add auto-install support"
This reverts commit 1d1f3cbc63d3be1f2f06c735adf89fedab80560b, as
it breaks test suite files list.
diff --git a/Makefile.PL b/Makefile.PL
index b27ed31..baf80b9 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -59,10 +59,6 @@ makemaker_args(
},
);
-auto_install(
- do_once => 1 # skip previously failed modules
-);
-
WriteAll;
# substitute prefix everywhere
================================================================
Commit: 92fc5e5fb0fb1109636d1213cd40ddd240c6c583
https://github.com/fusinv/fusioninventory-agent/commit/92fc5e5fb0fb1109636d1213cd40ddd240c6c583
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-18 (Sun, 18 Mar 2012)
Changed paths:
M fusioninventory-injector
Log Message:
-----------
make perlcritic happy
diff --git a/fusioninventory-injector b/fusioninventory-injector
index c45f688..db01136 100755
--- a/fusioninventory-injector
+++ b/fusioninventory-injector
@@ -32,6 +32,7 @@ sub loadfile {
print "Loading $file..." if $options{verbose};
open (my $fh, '<', $file) or die "can't open file $file: $ERRNO";
+ ## no critic (ProhibitBitwise)
flock ($fh, LOCK_EX | LOCK_NB) or die "can't lock file $file: $ERRNO";
local $RS;
my $content = <$fh>;
================================================================
Commit: 2ee454dd960fa89d91e5b02d1573dd1907e0d6b3
https://github.com/fusinv/fusioninventory-agent/commit/2ee454dd960fa89d91e5b02d1573dd1907e0d6b3
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-18 (Sun, 18 Mar 2012)
Changed paths:
M t/05var.t
Log Message:
-----------
more exceptions
diff --git a/t/05var.t b/t/05var.t
index 3ede00e..d57ab9a 100644
--- a/t/05var.t
+++ b/t/05var.t
@@ -20,5 +20,11 @@ if ($OSNAME eq 'MSWin32') {
}
all_vars_ok(
- ignore_vars => { '%params' => 1, '$class' => 1 }
+ ignore_vars => {
+ '%params' => 1,
+ '$class' => 1,
+ '$request' => 1, # FusionInventory::Agent::HTTP::Server
+ '$clientIp' => 1, # FusionInventory::Agent::HTTP::Server
+ '$num' => 1 # Task::Inventory::Input::Solaris::Networks
+ }
);
================================================================
Commit: ec16d4e9a0d4f7a28b584aae545084dccb29c908
https://github.com/fusinv/fusioninventory-agent/commit/ec16d4e9a0d4f7a28b584aae545084dccb29c908
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-18 (Sun, 18 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Win32.pm
Log Message:
-----------
accpet \ or / in win32 registry path
diff --git a/lib/FusionInventory/Agent/Tools/Win32.pm b/lib/FusionInventory/Agent/Tools/Win32.pm
index f062ac7..42c854a 100644
--- a/lib/FusionInventory/Agent/Tools/Win32.pm
+++ b/lib/FusionInventory/Agent/Tools/Win32.pm
@@ -97,7 +97,7 @@ sub getRegistryValue {
my (%params) = @_;
my ($root, $keyName, $valueName);
- if ($params{path} =~ /^(HKEY_\S+)\/(.+)\/([^\/]+)/ ) {
+ if ($params{path} =~ /^(HKEY_[^\/\\]+)[\/\\](.+)[\/\\]([^\/]+)/ ) {
$root = $1;
$keyName = $2;
$valueName = $3;
================================================================
Commit: 18a6cd8fcc1e6cb332d26236f004426f1db1675a
https://github.com/fusinv/fusioninventory-agent/commit/18a6cd8fcc1e6cb332d26236f004426f1db1675a
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-18 (Sun, 18 Mar 2012)
Changed paths:
R AUTHORS
M Makefile.PL
M README
M fusioninventory-agent
M fusioninventory-injector
M lib/FusionInventory/Agent/HTTP/Protocol/https.pm
M lib/FusionInventory/Agent/HTTP/Server.pm
M lib/FusionInventory/Agent/Task/Inventory.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
M lib/FusionInventory/Agent/Tools.pm
M lib/FusionInventory/Agent/Tools/Hostname.pm
M lib/FusionInventory/Agent/Tools/Screen.pm
M lib/FusionInventory/Agent/Tools/Unix.pm
R resources/macos/ioreg/IOUSBDevice
A resources/macos/ioreg/IOUSBDevice1
A resources/macos/ioreg/IOUSBDevice2
A resources/win32/wmi/xp-Win32_NetworkAdapter.wmi
A resources/win32/wmi/xp-Win32_NetworkAdapterConfiguration.wmi
M t/02critic.t
M t/03pod.t
M t/04pod-coverage.t
M t/05var.t
A t/06spelling.t
M t/inventory/macos/storages.t
A t/inventory/macos/usb.t
M t/inventory/solaris/networks.t
M t/inventory/windows/networks.t
M t/tools/generic.t
M t/tools/macos.t
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644
index 200d1d5..0000000
--- a/AUTHORS
+++ /dev/null
@@ -1,9 +0,0 @@
-maintainer:
- Gonéri LE BOUDER <goneri at rulezlan.org>
-
-Copyright 2006-2010 OCS Inventory contributors
-Copyright 2010-2012 FusionInventory Team
-
-Website: http://www.fusioninventory.org
-
-Please read THANKS to get the list of the contributors
diff --git a/Makefile.PL b/Makefile.PL
index b27ed31..baf80b9 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -59,10 +59,6 @@ makemaker_args(
},
);
-auto_install(
- do_once => 1 # skip previously failed modules
-);
-
WriteAll;
# substitute prefix everywhere
diff --git a/README b/README
index 27161a1..eb1c835 100644
--- a/README
+++ b/README
@@ -1,6 +1,17 @@
FusionInventory Agent
---------------------
+Description
+-----------
+The fusioinventory agent is a generic agent, running on each managed node. It
+can perform a certain number of actions, called tasks, according to its own
+execution plan, or on behalf of a GLPI server with fusioninventory plugin,
+acting as a control point.
+
+Two of these tasks are included in agent source distribution, local inventory
+and wake on lan. Other tasks are distributed separatly, excepted for binary
+distributions where they are bundled together.
+
Dependencies
------------
@@ -77,6 +88,27 @@ privileges. On Windows, tough, running agent with SYSTEM privileges, which is
implicit if running as a service, does sometimes gives less results, especially
for shared printers only visible from a user account.
+Security
+--------
+They are several potential security issues in fusioninventory.
+
+First, the server automatically trust any received message, using the
+identifier found in the message (unfortunatly called DEVICEID) to identify the
+sending agent. If you want to protect your machine inventory from rogue
+reports, you have to restrict access to the plugin location on your GLPI
+server, typically using HTTP authentication. And preferentially over HTTPS,
+to prevent password sniffing.
+
+Second, some messages between the server and the agent may contain sensible
+informations. For instance, NetInventory tasks involves sending SNMP
+credentials from the server to the agent. In this case, HTTPS usage ensures
+proper communication encryption.
+
+Third, some tasks are explicitely designed to make the agent execute arbitrary
+commands on its host. For instance, the Deploy task is used to install
+software on agent side. In this case, HTTPS usage ensures proper server
+authentication.
+
SSL support
-----------
LWP (also known as libwww-perl) is able to use either Crypt::SSLeay or
@@ -107,3 +139,51 @@ The available workaround:
openssl and its perl bindings (Net::SSLeay)
- disable server certificate checking on client
+Contacts
+--------
+
+Project websites:
+* main site: http://www.fusioninventory.org
+* forge: http://forge.fusioninventory.org
+
+Project mailing lists:
+* http://lists.alioth.debian.org/mailman/listinfo/fusioninventory-user
+* http://lists.alioth.debian.org/mailman/listinfo/fusioninventory-devel
+
+Project IRC channel:
+* #FusionInventory on FreeNode IRC Network
+
+Please report any issues on project forge bugtracker.
+
+Authors
+-------
+* Gonéri Le Bouder <goneri at rulezlan.org>>
+* Guillaume Rousse <guillomovitch at gmail.com>
+
+Copyright 2006-2010 OCS Inventory contributors
+Copyright 2010-2012 FusionInventory Team
+
+License
+-------
+This software is licensed under the terms of GPLv2+, see LICENSE file for
+details.
+
+Additional pieces of software
+-----------------------------
+
+The memconf script:
+url: http://myweb.cableone.net/4schmidts/memconf.html
+author: Tom Schmidt
+copyright: 1996-2009 Tom Schmidt
+
+FusionInventory::Agent::Task::Inventory::Input::Virtualization::Vmsystem
+contains code from imvirt:
+url: http://micky.ibh.net/~liske/imvirt.html
+author: Thomas Liske <liske at ibh.de>
+copyright: 2008 IBH IT-Service GmbH [http://www.ibh.de/]
+License: GPLv2+
+
+FusionInventory::Agent::Tools::Screen contains code from monitor-edid:
+url: http://svn.mandriva.com/cgi-bin/viewvc.cgi/soft/monitor-edid
+copyright: 2005 Mandriva
+license: GPLv2+
diff --git a/fusioninventory-agent b/fusioninventory-agent
index f844aa1..6660684 100755
--- a/fusioninventory-agent
+++ b/fusioninventory-agent
@@ -269,9 +269,9 @@ The agent will launch each modules and pass the list of options found in the
PROLOG RESP as parameter. The module can send information directly to the
server (inventory, SNMP scan result, etc)
-=head2 Windows service or Deamon mode
+=head2 Server mode (Windows service or Unix daemon)
-In deamon mode, the agent wait during a period between the last PROLOG and
+In server mode, the agent wait during a period between the last PROLOG and
PROLOG_FREQ. If PROLOG_FREQ is not set, it will use --delaytime value.
The default value is 3600.
@@ -561,26 +561,19 @@ Print the version and exit.
=back
+=head1 CONFIGURATION
-=head1 CONFIG FILE
+The agent is able to use multiple configuration backends. The registry backend
+is the default on Windows platform, and the file backend is the default
+everywhere else. Another backend can be specified using the B<--config> option.
-The agent initialize its settings from the configuration first.
+The I<file> backend reads configuration directives from a configuration file,
+whose default location is determined at installation time as
+PREFIX/etc/agent.cfg. An alternative location can also be given with
+B<--conf-file> option.
-On Unix, this configuration is loaded from a configuration file, the first
-found among the following locations:
-
-=over
-
-=item * F</etc/fusioninventory/agent.cfg>
-
-=item * F</usr/local/etc/fusioninventory/agent.cfg>
-
-=back
-
-An alternative configuration file can be specified with the B<--conf-file>
-parameter, and will be used instead.
-
-On Windows, the configuration is loaded from the registry, from an arch-dependant location:
+The I<registry> backend reads configuration directives from the Windows
+registry, with an arch-dependant location:
=over
@@ -590,130 +583,5 @@ On Windows, the configuration is loaded from the registry, from an arch-dependan
=back
-=head1 SECURITY
-
-Some modules like SNMPQuery needs to sent credential from the agent to the
-agent. We recommend to enable HTTPS support on the OCS or FusionInventory
-For GLPI server. We also recommend to use only trusted machine as agent in
-this case.
-
-=head1 AUTHORS
-
-The FusionInventory project L<fusioninventory-devel at lists.alioth.debian.org>
-
-The maintainer is Goneri LE BOUDER <goneri at rulezlan.org>
-
-Please read the AUTHORS, Changes and THANKS files to see who is behind
-FusionInventory.
-
-=head1 SEE ALSO
-
-=over 4
-
-=item
-
-FusionInventory website: L<http://www.FusionInventory.org/>
-
-=item
-
-project Forge: L<http://Forge.FusionInventory.org>
-
-=item
-
-The source code of the agent is available on:
-
-=over
-
-=item
-
-Gitorious: L<http://gitorious.org/fusioninventory>
-
-=item
-
-Github: L<http://github.com/fusinv/fusioninventory-agent>
-
-=back
-
-=item
-
-The mailing lists:
-
-=over
-
-=item
-
-L<http://lists.alioth.debian.org/mailman/listinfo/fusioninventory-devel>
-
-=item
-
-L<http://lists.alioth.debian.org/mailman/listinfo/fusioninventory-user>
-
-=back
-
-=item
-
-IRC: #FusionInventory on FreeNode IRC Network
-
-=back
-
-=head1 BUGS
-
-Please, use the mailing lists as much as possible. You can also use the bugtracker on
-http://forge.fusionInventory.org
-
-
-=head1 COPYRIGHT
-
-Copyright (C) 2006-2010 OCS Inventory contributors
-Copyright (C) 2010-2012 FusionInventory Team
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 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 General Public License for more details.
-
- You should have received a copy of the GNU 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.
-
-The memconf script is maintained by Tom Schmidt
-http://myweb.cableone.net/4schmidts/memconf.html
-Copyright © 1996-2009 Tom Schmidt
-
-memconf is free software; you can redistribute it and/or modify it under the
-terms of the GNU General Public License as published by the Free Software
-Foundation; either version 2 of the License, or (at your option) any later
-version.
-
-FusionInventory::Agent::Backend::Virtualization::Vmsystem uses code from
-imvirt:
-
- Authors:
- Thomas Liske <liske at ibh.de>
-
- Copyright Holder:
- 2008 (C) IBH IT-Service GmbH [http://www.ibh.de/]
-
- License:
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this package; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
- USA
-
-
-=cut
+The I<none> backend doesn't read any configuration directive at all, allowing
+to isolate the agent execution from any installed configuration.
diff --git a/fusioninventory-injector b/fusioninventory-injector
index c45f688..db01136 100755
--- a/fusioninventory-injector
+++ b/fusioninventory-injector
@@ -32,6 +32,7 @@ sub loadfile {
print "Loading $file..." if $options{verbose};
open (my $fh, '<', $file) or die "can't open file $file: $ERRNO";
+ ## no critic (ProhibitBitwise)
flock ($fh, LOCK_EX | LOCK_NB) or die "can't lock file $file: $ERRNO";
local $RS;
my $content = <$fh>;
diff --git a/lib/FusionInventory/Agent/HTTP/Protocol/https.pm b/lib/FusionInventory/Agent/HTTP/Protocol/https.pm
index d74a8b1..aa0bf7c 100644
--- a/lib/FusionInventory/Agent/HTTP/Protocol/https.pm
+++ b/lib/FusionInventory/Agent/HTTP/Protocol/https.pm
@@ -27,6 +27,7 @@ sub _extra_sock_opts {
);
}
+## no critic (ProhibitMultiplePackages)
package FusionInventory::Agent::HTTP::Protocol::https::Socket;
use base qw(Net::HTTPS LWP::Protocol::http::SocketMethods);
diff --git a/lib/FusionInventory/Agent/HTTP/Server.pm b/lib/FusionInventory/Agent/HTTP/Server.pm
index 001033e..4ef83c9 100644
--- a/lib/FusionInventory/Agent/HTTP/Server.pm
+++ b/lib/FusionInventory/Agent/HTTP/Server.pm
@@ -362,7 +362,7 @@ the directory where HTML templates and static files are stored
=item I<ip>
-the network adress to listen to (default: all)
+the network address to listen to (default: all)
=item I<port>
@@ -370,7 +370,7 @@ the network port to listen to
=item I<trust>
-an IP adress or an IP adress range from which to trust incoming requests
+an IP address or an IP address range from which to trust incoming requests
without authentication token (default: none)
=back
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index 9c9aac7..ce3eb4c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -181,7 +181,7 @@ sub _initModulesList {
$self->{modules}->{$module}->{done} = 0;
$self->{modules}->{$module}->{used} = 0;
- no strict 'refs'; ## no critic
+ no strict 'refs'; ## no critic (ProhibitNoStrict)
$self->{modules}->{$module}->{runAfter} = [
$parent ? $parent : (),
${$module . '::runAfter'} ? @${$module . '::runAfter'} : ()
@@ -190,7 +190,8 @@ sub _initModulesList {
# second pass: disable fallback modules
foreach my $module (@modules) {
- no strict 'refs'; ## no critic
+ ## no critic (ProhibitNoStrict ProhibitProlongedStrictureOverride)
+ no strict 'refs';
# skip modules already disabled
next unless $self->{modules}->{$module}->{enabled};
@@ -364,4 +365,4 @@ FusionInventory::Agent::Task::Inventory - Inventory task for FusionInventory
=head1 DESCRIPTION
-This task extract various hardware and software informations on the agent host.
+This task extract various hardware and software information on the agent host.
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
index 903297d..604bec6 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm
@@ -1,23 +1,5 @@
package FusionInventory::Agent::Task::Inventory::Input::Generic::Screen;
-# Copyright (C) 2005 Mandriva
-# Copyright (C) 2007 Gonéri Le Bouder <goneri at rulezlan.org>
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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 General Public License for more details.
-
-# You should have received a copy of the GNU 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.
-#
-# Some part come from Mandriva's (great) monitor-edid
-# http://svn.mandriva.com/cgi-bin/viewvc.cgi/soft/monitor-edid/trunk/
-#
+
use strict;
use warnings;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm
index 4f526d9..fd5e44a 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/USB.pm
@@ -20,7 +20,7 @@ sub doInventory {
foreach my $device (_getDevices(logger => $logger)) {
# avoid duplicates
- next if $seen->{$device->{SERIAL}}++;
+ next if $device->{SERIAL} && $seen->{$device->{SERIAL}}++;
$inventory->addEntry(
section => 'USBDEVICES',
entry => $device,
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm
index fdf2227..3866f38 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Vmsystem.pm
@@ -1,31 +1,10 @@
package FusionInventory::Agent::Task::Inventory::Input::Virtualization::Vmsystem;
-# Initial FusionInventory::Agent::Task::Inventory::Input::Virtualization::Vmsystem version: Nicolas EISEN
-#
-# Code include from imvirt - I'm virtualized?
-# http://micky.ibh.net/~liske/imvirt.html
-#
-# Authors:
-# Thomas Liske <liske at ibh.de>
-#
-# Copyright Holder:
-# 2008 (C) IBH IT-Service GmbH [http://www.ibh.de/]
-#
-# License:
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this package; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-#
+# Contains code from imvirt:
+# URL: http://micky.ibh.net/~liske/imvirt.html
+# Authors: Thomas Liske <liske at ibh.de>
+# Copyright: 2008 IBH IT-Service GmbH [http://www.ibh.de/]
+# License: GPLv2+
##
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index 70eb701..58314a7 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -51,16 +51,16 @@ sub doInventory {
sub _getInterfaces {
- my @interfaces;
+ my @configurations;
foreach my $object (getWmiObjects(
class => 'Win32_NetworkAdapterConfiguration',
- properties => [ qw/Index Description IPEnabled DHCPServer MACAddress
+ properties => [ qw/Index Description IPEnabled DHCPServer MACAddress
MTU DefaultIPGateway DNSServerSearchOrder IPAddress
IPSubnet/ ]
)) {
- my $interface = {
+ my $configuration = {
DESCRIPTION => $object->{Description},
STATUS => $object->{IPEnabled} ? "Up" : "Down",
IPDHCP => $object->{DHCPServer},
@@ -69,46 +69,66 @@ sub _getInterfaces {
};
if ($object->{DefaultIPGateway}) {
- $interface->{IPGATEWAY} = $object->{DefaultIPGateway}->[0];
+ $configuration->{IPGATEWAY} = $object->{DefaultIPGateway}->[0];
}
if ($object->{DNSServerSearchOrder}) {
- $interface->{dns} = $object->{DNSServerSearchOrder}->[0];
+ $configuration->{dns} = $object->{DNSServerSearchOrder}->[0];
}
if ($object->{IPAddress}) {
foreach my $address (@{$object->{IPAddress}}) {
my $mask = shift @{$object->{IPSubnet}};
if ($address =~ /$ip_address_pattern/) {
- push @{$interface->{IPADDRESS}}, $address;
- push @{$interface->{IPMASK}}, $mask;
- push @{$interface->{IPSUBNET}},
+ push @{$configuration->{IPADDRESS}}, $address;
+ push @{$configuration->{IPMASK}}, $mask;
+ push @{$configuration->{IPSUBNET}},
getSubnetAddress($address, $mask);
} elsif ($address =~ /\S+/) {
- push @{$interface->{IPADDRESS6}}, $address;
- push @{$interface->{IPMASK6}}, $mask;
- push @{$interface->{IPSUBNET6}},
+ push @{$configuration->{IPADDRESS6}}, $address;
+ push @{$configuration->{IPMASK6}}, $mask;
+ push @{$configuration->{IPSUBNET6}},
getSubnetAddressIPv6($address, $mask);
}
}
}
- $interfaces[$object->{Index}] = $interface;
+ $configurations[$object->{Index}] = $configuration;
}
+ my @interfaces;
+
foreach my $object (getWmiObjects(
class => 'Win32_NetworkAdapter',
- properties => [ qw/Index PNPDeviceID Speed MACAddress PhysicalAdapter
- AdapterType/ ]
+ properties => [ qw/Index PNPDeviceID Speed PhysicalAdapter AdapterType/ ]
)) {
# http://comments.gmane.org/gmane.comp.monitoring.fusion-inventory.devel/34
next unless $object->{PNPDeviceID};
- my $interface = $interfaces[$object->{Index}];
+ my $configuration = $configurations[$object->{Index}];
- $interface->{SPEED} = $object->{Speed};
- $interface->{MACADDR} = $object->{MACAddress};
- $interface->{PNPDEVICEID} = $object->{PNPDeviceID};
+ next unless
+ $configuration->{IPADDRESS} ||
+ $configuration->{IPADDRESS6} ||
+ $configuration->{MACADDR};
+
+ my $interface = {
+ SPEED => $object->{Speed},
+ PNPDEVICEID => $object->{PNPDeviceID},
+ MACADDR => $configuration->{MACADDR},
+ DESCRIPTION => $configuration->{DESCRIPTION},
+ STATUS => $configuration->{STATUS},
+ IPDHCP => $configuration->{IPDHCP},
+ MTU => $configuration->{MTU},
+ IPGATEWAY => $configuration->{IPGATEWAY},
+ IPADDRESS => $configuration->{IPADDRESS},
+ IPMASK => $configuration->{IPMASK},
+ IPSUBNET => $configuration->{IPSUBNET},
+ IPADDRESS6 => $configuration->{IPADDRESS6},
+ IPMASK6 => $configuration->{IPMASK6},
+ IPSUBNET6 => $configuration->{IPSUBNET6},
+ dns => $configuration->{dns},
+ };
# PhysicalAdapter only work on OS > XP
if (defined $object->{PhysicalAdapter}) {
@@ -126,11 +146,11 @@ sub _getInterfaces {
$interface->{TYPE} = $object->{AdapterType};
$interface->{TYPE} =~ s/Ethernet.*/Ethernet/;
}
+
+ push @interfaces, $interface;
}
- # exclude pure virtual interfaces
return
- grep { $_->{IPADDRESS} || $_->{IPADDRESS6} || $_->{MACADDR} }
@interfaces;
}
diff --git a/lib/FusionInventory/Agent/Tools.pm b/lib/FusionInventory/Agent/Tools.pm
index 1a2bee1..2614964 100644
--- a/lib/FusionInventory/Agent/Tools.pm
+++ b/lib/FusionInventory/Agent/Tools.pm
@@ -448,7 +448,7 @@ sub runFunction {
alarm $params{timeout};
}
- no strict 'refs'; ## no critic
+ no strict 'refs'; ## no critic (ProhibitNoStrict)
$result = &{$params{module} . '::' . $params{function}}(
ref $params{params} eq 'HASH' ? %{$params{params}} :
ref $params{params} eq 'ARRAY' ? @{$params{params}} :
diff --git a/lib/FusionInventory/Agent/Tools/Hostname.pm b/lib/FusionInventory/Agent/Tools/Hostname.pm
index 16fcfed..7bd4dd7 100644
--- a/lib/FusionInventory/Agent/Tools/Hostname.pm
+++ b/lib/FusionInventory/Agent/Tools/Hostname.pm
@@ -9,7 +9,7 @@ use English qw(-no_match_vars);
BEGIN {
if ($OSNAME eq 'MSWin32') {
- no warnings 'redefine';
+ no warnings 'redefine'; ## no critic (ProhibitNoWarnings)
Win32::API->require();
# Kernel32.dll is used more or less everywhere.
# Without this, Win32::API will release the DLL even
diff --git a/lib/FusionInventory/Agent/Tools/Screen.pm b/lib/FusionInventory/Agent/Tools/Screen.pm
index f2cd98c..d3dddcb 100644
--- a/lib/FusionInventory/Agent/Tools/Screen.pm
+++ b/lib/FusionInventory/Agent/Tools/Screen.pm
@@ -1,24 +1,9 @@
package FusionInventory::Agent::Tools::Screen;
-# Copyright (C) 2005 Mandriva
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 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 General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# Some part come from Mandriva's (great) monitor-edid
-# http://svn.mandriva.com/cgi-bin/viewvc.cgi/soft/monitor-edid/trunk/
-#
-
+# Contains code from monitor-edid:
+# URL: http://svn.mandriva.com/cgi-bin/viewvc.cgi/soft/monitor-edid
+# Copyright: 2005 Mandriva
+# License: GPLv2+
use strict;
use warnings;
diff --git a/lib/FusionInventory/Agent/Tools/Unix.pm b/lib/FusionInventory/Agent/Tools/Unix.pm
index decc968..3e5a7c4 100644
--- a/lib/FusionInventory/Agent/Tools/Unix.pm
+++ b/lib/FusionInventory/Agent/Tools/Unix.pm
@@ -171,10 +171,10 @@ sub getFilesystemsFromDf {
$free = $infos[4];
$type = $infos[6];
} else {
- $filesystem = $params{type},
- $total = $infos[1];
- $free = $infos[3];
- $type = $infos[5];
+ $filesystem = $params{type};
+ $total = $infos[1];
+ $free = $infos[3];
+ $type = $infos[5];
}
# skip some virtual filesystems
diff --git a/resources/macos/ioreg/IOUSBDevice b/resources/macos/ioreg/IOUSBDevice
deleted file mode 100644
index 3d58b39..0000000
--- a/resources/macos/ioreg/IOUSBDevice
+++ /dev/null
@@ -1,748 +0,0 @@
-+-o Root <class IORegistryEntry, id 0x100000100, retain 13>
- +-o MacBook2,1 <class IOPlatformExpertDevice, id 0x100000110, registered, matched, active, busy 0 (16937 ms), retain 25>
- +-o AppleACPIPlatformExpert <class AppleACPIPlatformExpert, id 0x100000111, registered, matched, active, busy 0 (15867 ms), retain 38>
- | +-o IOPMrootDomain <class IOPMrootDomain, id 0x100000114, registered, matched, active, busy 0 (12 ms), retain 48>
- | | +-o IORootParent <class IORootParent, id 0x100000115, !registered, !matched, active, busy 0, retain 7>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000267, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000268, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000026d, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000026e, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000271, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000272, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000002ed, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000319, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000329, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000032f, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000332, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000363, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000364, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000036d, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000036e, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000036f, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000371, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000392, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000393, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003a1, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003a2, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003a3, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003b9, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003bc, !registered, !matched, active, busy 0, retain 5>
- | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000041e, !registered, !matched, active, busy 0, retain 5>
- | +-o cpus <class IOPlatformDevice, id 0x100000117, registered, matched, active, busy 0 (4 ms), retain 7>
- | +-o CPU0 at 0 <class IOACPIPlatformDevice, id 0x100000118, registered, matched, active, busy 0 (418 ms), retain 7>
- | | +-o AppleACPICPU <class AppleACPICPU, id 0x10000011d, registered, matched, active, busy 0 (406 ms), retain 9>
- | | +-o AppleACPICPUInterruptController <class AppleACPICPUInterruptController, id 0x10000011f, registered, matched, active, busy 0 (1 ms), retain 5>
- | | +-o ACPI_SMC_PlatformPlugin <class ACPI_SMC_PlatformPlugin, id 0x10000027b, registered, matched, active, busy 0 (8 ms), retain 9>
- | | +-o AppleIntelMeromPerformanceMonitor <class AppleIntelMeromPerformanceMonitor, id 0x10000027c, !registered, !matched, active, busy 0 (145 ms), retain 9>
- | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002ce, registered, matched, active, busy 0 (125 ms), retain 7>
- | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002cf, registered, matched, active, busy 0 (126 ms), retain 7>
- | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002d0, registered, matched, active, busy 0 (133 ms), retain 7>
- | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002d1, registered, matched, active, busy 0 (145 ms), retain 7>
- | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002d2, registered, matched, active, busy 0 (133 ms), retain 7>
- | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | +-o AppleIntelMeromSPR <class AppleIntelMeromSPR, id 0x1000002b4, registered, matched, active, busy 0 (135 ms), retain 4>
- | +-o CPU1 at 1 <class IOACPIPlatformDevice, id 0x100000119, registered, matched, active, busy 0 (392 ms), retain 7>
- | | +-o AppleACPICPU <class AppleACPICPU, id 0x10000011e, registered, matched, active, busy 0 (374 ms), retain 7>
- | | +-o AppleIntelMeromPerformanceMonitor <class AppleIntelMeromPerformanceMonitor, id 0x1000002ba, !registered, !matched, active, busy 0 (124 ms), retain 9>
- | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002c2, registered, matched, active, busy 0 (3 ms), retain 7>
- | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002c4, registered, matched, active, busy 0 (6 ms), retain 7>
- | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002c5, registered, matched, active, busy 0 (120 ms), retain 7>
- | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002c6, registered, matched, active, busy 0 (122 ms), retain 7>
- | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002c7, registered, matched, active, busy 0 (124 ms), retain 7>
- | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | +-o AppleIntelMeromSPR <class AppleIntelMeromSPR, id 0x1000002bb, registered, matched, active, busy 0 (125 ms), retain 4>
- | +-o io-apic at fec00000 <class IOACPIPlatformDevice, id 0x10000011a, registered, matched, active, busy 0 (4 ms), retain 6>
- | | +-o AppleAPICInterruptController <class AppleAPICInterruptController, id 0x100000121, registered, matched, active, busy 0 (1 ms), retain 11>
- | +-o AppleACPIEventController <class AppleACPIEventController, id 0x100000122, !registered, !matched, active, busy 0, retain 6>
- | +-o boot-ec <class IOACPIPlatformDevice, id 0x100000123, registered, matched, active, busy 0 (3 ms), retain 6>
- | | +-o AppleACPIEC <class AppleACPIEC, id 0x100000124, !registered, !matched, active, busy 0, retain 6>
- | +-o bios <class IOPlatformDevice, id 0x100000125, registered, matched, active, busy 0 (4 ms), retain 5>
- | | +-o AppleSMBIOS <class AppleSMBIOS, id 0x100000126, registered, matched, active, busy 0 (1 ms), retain 4>
- | +-o ADP1 <class IOACPIPlatformDevice, id 0x10000012a, registered, matched, active, busy 0 (2 ms), retain 7>
- | | +-o AppleACPIACAdapter <class AppleACPIACAdapter, id 0x1000001a2, !registered, !matched, active, busy 0, retain 4>
- | +-o LID0 <class IOACPIPlatformDevice, id 0x10000012b, registered, matched, active, busy 0 (3 ms), retain 9>
- | | +-o AppleACPILid <class AppleACPILid, id 0x1000001a3, !registered, !matched, active, busy 0, retain 5>
- | +-o PNLF <class IOACPIPlatformDevice, id 0x10000012c, registered, matched, active, busy 0 (13 ms), retain 7>
- | | +-o AppleIntelPanelA <class AppleIntelPanelA, id 0x100000273, !registered, !matched, active, busy 0, retain 5>
- | +-o PWRB <class IOACPIPlatformDevice, id 0x10000012d, registered, matched, active, busy 0 (5 ms), retain 8>
- | | +-o AppleACPIButton <class AppleACPIButton, id 0x1000001a4, !registered, !matched, active, busy 0, retain 4>
- | +-o SLPB <class IOACPIPlatformDevice, id 0x10000012e, registered, matched, active, busy 0 (6 ms), retain 7>
- | | +-o AppleACPIButton <class AppleACPIButton, id 0x1000001a5, !registered, !matched, active, busy 0, retain 4>
- | +-o PCI0 at 0 <class IOACPIPlatformDevice, id 0x10000012f, registered, matched, active, busy 0 (15786 ms), retain 43>
- | | +-o AppleACPIPCI <class AppleACPIPCI, id 0x1000001a6, registered, matched, active, busy 0 (15772 ms), retain 40>
- | | +-o pci8086,27a0 at 0 <class IOPCIDevice, id 0x1000001a8, registered, matched, active, busy 0 (5445 ms), retain 8>
- | | | +-o AppleSMCPDRC <class AppleSMCPDRC, id 0x1000002a9, registered, matched, active, busy 0 (1 ms), retain 4>
- | | +-o GFX0 at 2 <class IOPCIDevice, id 0x100000174, registered, matched, active, busy 0 (551 ms), retain 17>
- | | | +-o AppleIntelIntegratedFramebuffer <class AppleIntelIntegratedFramebuffer, id 0x1000002b5, !registered, !matched, active, busy 0, retain 6>
- | | | +-o AppleIntelFramebuffer <class AppleIntelFramebuffer, id 0x1000002d8, registered, matched, active, busy 0 (239 ms), retain 14>
- | | | | +-o AppleMCCSControlModule <class AppleMCCSControlModule, id 0x1000002e2, registered, matched, active, busy 0 (79 ms), retain 5>
- | | | | | +-o AppleMCCSParameterHandler <class AppleMCCSParameterHandler, id 0x1000002eb, registered, matched, active, busy 0 (6 ms), retain 4>
- | | | | +-o AppleUpstreamUserClientDriver <class AppleUpstreamUserClientDriver, id 0x1000002e3, registered, matched, active, busy 0 (3 ms), retain 4>
- | | | | +-o IOFramebufferI2CInterface <class IOFramebufferI2CInterface, id 0x10000031c, registered, matched, active, busy 0 (3 ms), retain 5>
- | | | | +-o display0 <class IODisplayConnect, id 0x10000031d, registered, matched, active, busy 0 (28 ms), retain 5>
- | | | | | +-o AppleBacklightDisplay <class AppleBacklightDisplay, id 0x10000031e, registered, matched, active, busy 0 (2 ms), retain 8>
- | | | | +-o IOFramebufferUserClient <class IOFramebufferUserClient, id 0x100000325, !registered, !matched, active, busy 0, retain 5>
- | | | +-o AppleIntelFramebuffer <class AppleIntelFramebuffer, id 0x1000002da, registered, matched, active, busy 0 (212 ms), retain 12>
- | | | | +-o AppleMCCSControlModule <class AppleMCCSControlModule, id 0x1000002e5, registered, matched, active, busy 0 (8 ms), retain 5>
- | | | | | +-o AppleMCCSParameterHandler <class AppleMCCSParameterHandler, id 0x1000002e9, registered, matched, active, busy 0 (6 ms), retain 4>
- | | | | +-o AppleUpstreamUserClientDriver <class AppleUpstreamUserClientDriver, id 0x1000002e6, registered, matched, active, busy 0 (5 ms), retain 4>
- | | | | +-o IOFramebufferI2CInterface <class IOFramebufferI2CInterface, id 0x100000324, registered, matched, active, busy 0 (3 ms), retain 5>
- | | | | +-o IOFramebufferUserClient <class IOFramebufferUserClient, id 0x100000327, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915 <class Intel915, id 0x1000002b7, registered, matched, active, busy 0 (2 ms), retain 18>
- | | | +-o Intel9152DContext <class Intel9152DContext, id 0x100000326, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel9152DContext <class Intel9152DContext, id 0x100000328, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915Device <class Intel915Device, id 0x10000032d, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915GLContext <class Intel915GLContext, id 0x10000032e, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915Surface <class Intel915Surface, id 0x10000035e, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915Surface <class Intel915Surface, id 0x100000372, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915GLContext <class Intel915GLContext, id 0x100000373, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915Surface <class Intel915Surface, id 0x100000384, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915Surface <class Intel915Surface, id 0x100000385, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915Surface <class Intel915Surface, id 0x100000391, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915Device <class Intel915Device, id 0x1000003be, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915GLContext <class Intel915GLContext, id 0x1000003bf, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915GLContext <class Intel915GLContext, id 0x1000003c0, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Intel915Surface <class Intel915Surface, id 0x1000003c1, !registered, !matched, active, busy 0, retain 5>
- | | +-o display at 2,1 <class IOPCIDevice, id 0x1000001a9, registered, matched, active, busy 0 (637 ms), retain 9>
- | | | +-o IONDRVFramebuffer <class IONDRVFramebuffer, id 0x100000277, registered, matched, active, busy 0 (458 ms), retain 7>
- | | | +-o AppleMCCSControlModule <class AppleMCCSControlModule, id 0x1000002ac, registered, matched, active, busy 0 (125 ms), retain 5>
- | | | | +-o AppleMCCSParameterHandler <class AppleMCCSParameterHandler, id 0x1000002dd, registered, matched, active, busy 0 (4 ms), retain 4>
- | | | +-o AppleUpstreamUserClientDriver <class AppleUpstreamUserClientDriver, id 0x1000002ad, registered, matched, active, busy 0 (107 ms), retain 4>
- | | +-o pci8086,27a3 at 7 <class IOPCIDevice, id 0x1000001aa, registered, matched, active, busy 0 (32 ms), retain 7>
- | | +-o HDEF at 1B <class IOPCIDevice, id 0x100000178, registered, matched, active, busy 0 (739 ms), retain 10>
- | | | +-o AppleHDAController at 1B <class AppleHDAController, id 0x100000280, registered, matched, active, busy 0 (348 ms), retain 7>
- | | | +-o IOHDACodecDevice at 1B,0 <class IOHDACodecDevice, id 0x1000002a8, registered, matched, active, busy 0 (348 ms), retain 6>
- | | | +-o IOHDACodecDriver <class IOHDACodecDriver, id 0x1000002d6, !registered, !matched, active, busy 0 (261 ms), retain 5>
- | | | +-o IOHDACodecFunction at 1B,0,1 <class IOHDACodecFunction, id 0x1000002d7, registered, matched, active, busy 0 (261 ms), retain 6>
- | | | +-o AppleHDACodecGeneric <class AppleHDACodecGeneric, id 0x1000002e1, registered, matched, active, busy 0 (101 ms), retain 5>
- | | | +-o AppleHDADriver <class AppleHDADriver, id 0x1000002ec, registered, matched, active, busy 0 (21 ms), retain 8>
- | | | +-o AppleHDAEngineOutput at 1B,0,1,2 <class AppleHDAEngineOutput, id 0x100000302, registered, matched, active, busy 0 (9 ms), retain 28>
- | | | | +-o AppleHDAStream <class AppleHDAStream, id 0x100000303, registered, matched, active, busy 0 (5 ms), retain 8>
- | | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x100000304, !registered, !matched, active, busy 0 (0 ms), retain 12>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033f, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039c, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b4, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000305, !registered, !matched, active, busy 0 (0 ms), retain 12>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000340, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039d, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b5, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000306, !registered, !matched, active, busy 0 (0 ms), retain 12>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000341, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039e, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b6, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000307, !registered, !matched, active, busy 0 (0 ms), retain 12>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000342, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039f, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b7, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000308, !registered, !matched, active, busy 0 (0 ms), retain 12>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000343, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a0, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b8, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o AudioAUUCDriver <class AudioAUUCDriver, id 0x10000030a, registered, matched, active, busy 0 (4 ms), retain 4>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000336, !registered, !matched, active, busy 0, retain 7>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000347, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000368, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000036c, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000397, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000039b, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a7, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003ab, !registered, !matched, active, busy 0, retain 6>
- | | | +-o AppleHDAEngineInput at 1B,0,1,0 <class AppleHDAEngineInput, id 0x100000309, registered, matched, active, busy 0 (6 ms), retain 24>
- | | | | +-o AppleHDAStream <class AppleHDAStream, id 0x10000030b, registered, matched, active, busy 0 (5 ms), retain 7>
- | | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x10000030c, !registered, !matched, active, busy 0 (0 ms), retain 10>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033b, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ac, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x10000030d, !registered, !matched, active, busy 0 (0 ms), retain 10>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033c, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ad, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x10000030e, !registered, !matched, active, busy 0 (0 ms), retain 10>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033d, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ae, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x10000030f, !registered, !matched, active, busy 0 (0 ms), retain 18>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033e, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000345, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000399, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a9, !registered, !matched, active, busy 0, retain 6>
- | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003af, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000335, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000346, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000367, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000396, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000039a, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a6, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003aa, !registered, !matched, active, busy 0, retain 6>
- | | | +-o AppleHDAEngineInput at 1B,0,1,1 <class AppleHDAEngineInput, id 0x100000310, registered, matched, active, busy 0 (6 ms), retain 24>
- | | | +-o AppleHDAStream <class AppleHDAStream, id 0x100000311, registered, matched, active, busy 0 (5 ms), retain 7>
- | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x100000313, !registered, !matched, active, busy 0 (0 ms), retain 10>
- | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000337, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b0, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000314, !registered, !matched, active, busy 0 (0 ms), retain 10>
- | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000338, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b1, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000315, !registered, !matched, active, busy 0 (0 ms), retain 10>
- | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000339, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b2, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000316, !registered, !matched, active, busy 0 (0 ms), retain 10>
- | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033a, !registered, !matched, active, busy 0, retain 6>
- | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b3, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000334, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000344, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000366, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000369, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000395, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000398, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a5, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a8, !registered, !matched, active, busy 0, retain 6>
- | | +-o RP01 at 1C <class IOPCIDevice, id 0x100000179, registered, matched, active, busy 0 (6297 ms), retain 11>
- | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001c2, registered, matched, active, busy 0 (6262 ms), retain 7>
- | | | +-o PXS1 at 0 <class IOPCIDevice, id 0x10000017a, registered, matched, active, busy 0 (6262 ms), retain 10>
- | | | +-o yukon2osx <class yukon2osx, id 0x1000001c6, !registered, !matched, active, busy 0 (2 ms), retain 7>
- | | | +-o yukon <class yukon, id 0x100000260, !registered, !matched, active, busy 0 (2 ms), retain 8>
- | | | +-o IOEthernetInterface <class IOEthernetInterface, id 0x100000261, registered, matched, active, busy 0 (2 ms), retain 11>
- | | | +-o IONetworkStack <class IONetworkStack, id 0x1000001de, registered, matched, active, busy 0 (2 ms), retain 11>
- | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x100000266, !registered, !matched, active, busy 0, retain 5>
- | | +-o RP02 at 1C,1 <class IOPCIDevice, id 0x10000017b, registered, matched, active, busy 0 (509 ms), retain 11>
- | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001e3, registered, matched, active, busy 0 (299 ms), retain 7>
- | | | +-o PXS2 at 0 <class IOPCIDevice, id 0x10000017c, registered, matched, active, busy 0 (288 ms), retain 12>
- | | | +-o AirPort_AthrFusion21 <class AirPort_AthrFusion21, id 0x10000027d, registered, matched, active, busy 0 (100 ms), retain 8>
- | | | +-o AtherosFusion21Interface <class AtherosFusion21Interface, id 0x1000002ab, registered, matched, active, busy 0 (99 ms), retain 10>
- | | | +-o IONetworkStack <class IONetworkStack, id 0x1000001de, registered, matched, active, busy 0 (2 ms), retain 11>
- | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x100000266, !registered, !matched, active, busy 0, retain 5>
- | | +-o USB1 at 1D <class IOPCIDevice, id 0x10000017d, registered, matched, active, busy 0 (967 ms), retain 11>
- | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001e1, registered, matched, active, busy 0 (634 ms), retain 9>
- | | | +-o UHCI Root Hub Simulation at 1D <class IOUSBRootHubDevice, id 0x1000001fe, registered, matched, active, busy 0 (8 ms), retain 10>
- | | | | | {
- | | | | | "sessionID" = 555462596
- | | | | | "iManufacturer" = 2
- | | | | | "bNumConfigurations" = 1
- | | | | | "idProduct" = 32773
- | | | | | "bcdDevice" = 272
- | | | | | "Bus Power Available" = 250
- | | | | | "bMaxPacketSize0" = 8
- | | | | | "USB Product Name" = "UHCI Root Hub Simulation"
- | | | | | "iProduct" = 1
- | | | | | "iSerialNumber" = 0
- | | | | | "USB Address" = 1
- | | | | | "bDeviceClass" = 9
- | | | | | "locationID" = 486539264
- | | | | | "bDeviceSubClass" = 0
- | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | | "Ports" = 2
- | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | | "bDeviceProtocol" = 0
- | | | | | "USB Vendor Name" = "Apple Inc."
- | | | | | "Device Speed" = 1
- | | | | | "idVendor" = 1452
- | | | | | "AAPL,current-in-sleep" = 1000
- | | | | | "Requested Power" = 0
- | | | | | "AAPL,port-current-in-sleep" = 500
- | | | | | "Low Power Displayed" = No
- | | | | | }
- | | | | |
- | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000200, !registered, !matched, active, busy 0, retain 8>
- | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000202, !registered, !matched, active, busy 0, retain 7>
- | | | +-o Apple Internal Keyboard / Trackpad at 1d200000 <class IOUSBDevice, id 0x100000227, registered, matched, active, busy 0 (625 ms), retain 12>
- | | | | {
- | | | | "sessionID" = 922879256
- | | | | "iManufacturer" = 1
- | | | | "bNumConfigurations" = 1
- | | | | "idProduct" = 539
- | | | | "bcdDevice" = 24
- | | | | "Bus Power Available" = 250
- | | | | "bMaxPacketSize0" = 8
- | | | | "USB Product Name" = "Apple Internal Keyboard / Trackpad"
- | | | | "iProduct" = 2
- | | | | "iSerialNumber" = 0
- | | | | "USB Address" = 2
- | | | | "bDeviceClass" = 0
- | | | | "locationID" = 488636416
- | | | | "bDeviceSubClass" = 0
- | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | "PortNum" = 2
- | | | | "non-removable" = "yes"
- | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | "bDeviceProtocol" = 0
- | | | | "Need contiguous memory for isoch" = Yes
- | | | | "USB Vendor Name" = "Apple Computer"
- | | | | "Device Speed" = 1
- | | | | "idVendor" = 1452
- | | | | "Requested Power" = 20
- | | | | "IOGeneralInterest" = "IOCommand is not serializable"
- | | | | "Low Power Displayed" = No
- | | | | }
- | | | |
- | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x100000229, !registered, !matched, active, busy 0, retain 4>
- | | | +-o Apple Internal Keyboard at 0 <class IOUSBInterface, id 0x10000022b, registered, matched, active, busy 0 (520 ms), retain 8>
- | | | | +-o AppleUSBTCKeyboard <class AppleUSBTCKeyboard, id 0x100000232, registered, matched, active, busy 0 (101 ms), retain 8>
- | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000238, registered, matched, active, busy 0 (6 ms), retain 6>
- | | | | +-o AppleUSBTCKeyEventDriver <class AppleUSBTCKeyEventDriver, id 0x100000239, registered, matched, active, busy 0 (1 ms), retain 8>
- | | | | +-o IOHIDKeyboard <class IOHIDKeyboard, id 0x10000023b, registered, matched, active, busy 0 (0 ms), retain 8>
- | | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 16>
- | | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
- | | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
- | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
- | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 15>
- | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
- | | | +-o Touchpad at 1 <class IOUSBInterface, id 0x10000022c, registered, matched, active, busy 0 (382 ms), retain 7>
- | | | | +-o AppleUSBGrIIITrackpad <class AppleUSBGrIIITrackpad, id 0x10000023d, registered, matched, active, busy 0 (117 ms), retain 16>
- | | | | +-o RawDataReporter <class RawDataReporter, id 0x10000023e, registered, matched, active, busy 0 (105 ms), retain 6>
- | | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x10000023f, registered, matched, active, busy 0 (3 ms), retain 5>
- | | | | +-o IOHIDPointingDevice <class IOHIDPointingDevice, id 0x100000241, registered, matched, active, busy 0 (107 ms), retain 6>
- | | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000242, registered, matched, active, busy 0 (3 ms), retain 5>
- | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 15>
- | | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
- | | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
- | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
- | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o BaselineReporter <class BaselineReporter, id 0x100000244, registered, matched, active, busy 0 (108 ms), retain 6>
- | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000245, registered, matched, active, busy 0 (3 ms), retain 5>
- | | | +-o Apple Internal Keyboard at 2 <class IOUSBInterface, id 0x10000022d, registered, matched, active, busy 0 (202 ms), retain 8>
- | | | +-o AppleUSBTCKeyboard <class AppleUSBTCKeyboard, id 0x100000247, registered, matched, active, busy 0 (110 ms), retain 8>
- | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000248, registered, matched, active, busy 0 (103 ms), retain 6>
- | | | +-o IOHIDEventDriver <class IOHIDEventDriver, id 0x1000002a1, registered, matched, active, busy 0 (3 ms), retain 8>
- | | | +-o IOHIDConsumer <class IOHIDConsumer, id 0x1000002a2, registered, matched, active, busy 0 (1 ms), retain 8>
- | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 16>
- | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
- | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 15>
- | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
- | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
- | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
- | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
- | | +-o USB2 at 1D,1 <class IOPCIDevice, id 0x100000181, registered, matched, active, busy 0 (352 ms), retain 11>
- | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001f3, registered, matched, active, busy 0 (13 ms), retain 8>
- | | | +-o UHCI Root Hub Simulation at 1D,1 <class IOUSBRootHubDevice, id 0x100000206, registered, matched, active, busy 0 (10 ms), retain 8>
- | | | | {
- | | | | "sessionID" = 564210044
- | | | | "iManufacturer" = 2
- | | | | "bNumConfigurations" = 1
- | | | | "idProduct" = 32773
- | | | | "bcdDevice" = 272
- | | | | "Bus Power Available" = 250
- | | | | "bMaxPacketSize0" = 8
- | | | | "USB Product Name" = "UHCI Root Hub Simulation"
- | | | | "iProduct" = 1
- | | | | "iSerialNumber" = 0
- | | | | "USB Address" = 1
- | | | | "bDeviceClass" = 9
- | | | | "locationID" = 1023410176
- | | | | "bDeviceSubClass" = 0
- | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | "Ports" = 2
- | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | "bDeviceProtocol" = 0
- | | | | "USB Vendor Name" = "Apple Inc."
- | | | | "Device Speed" = 1
- | | | | "idVendor" = 1452
- | | | | "AAPL,current-in-sleep" = 1000
- | | | | "Requested Power" = 0
- | | | | "AAPL,port-current-in-sleep" = 500
- | | | | "Low Power Displayed" = No
- | | | | }
- | | | |
- | | | +-o AppleUSBHub <class AppleUSBHub, id 0x10000020b, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000020d, !registered, !matched, active, busy 0, retain 7>
- | | +-o USB3 at 1D,2 <class IOPCIDevice, id 0x100000185, registered, matched, active, busy 0 (647 ms), retain 11>
- | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001c8, registered, matched, active, busy 0 (297 ms), retain 9>
- | | | +-o UHCI Root Hub Simulation at 1D,2 <class IOUSBRootHubDevice, id 0x100000209, registered, matched, active, busy 0 (20 ms), retain 10>
- | | | | | {
- | | | | | "sessionID" = 572462640
- | | | | | "iManufacturer" = 2
- | | | | | "bNumConfigurations" = 1
- | | | | | "idProduct" = 32773
- | | | | | "bcdDevice" = 272
- | | | | | "Bus Power Available" = 250
- | | | | | "bMaxPacketSize0" = 8
- | | | | | "USB Product Name" = "UHCI Root Hub Simulation"
- | | | | | "iProduct" = 1
- | | | | | "iSerialNumber" = 0
- | | | | | "USB Address" = 1
- | | | | | "bDeviceClass" = 9
- | | | | | "locationID" = 1560281088
- | | | | | "bDeviceSubClass" = 0
- | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | | "Ports" = 2
- | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | | "bDeviceProtocol" = 0
- | | | | | "USB Vendor Name" = "Apple Inc."
- | | | | | "Device Speed" = 1
- | | | | | "idVendor" = 1452
- | | | | | "AAPL,current-in-sleep" = 1000
- | | | | | "Requested Power" = 0
- | | | | | "AAPL,port-current-in-sleep" = 500
- | | | | | "Low Power Displayed" = No
- | | | | | }
- | | | | |
- | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000218, !registered, !matched, active, busy 0, retain 8>
- | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000021a, !registered, !matched, active, busy 0, retain 7>
- | | | +-o IR Receiver at 5d200000 <class IOUSBDevice, id 0x10000022a, registered, matched, active, busy 0 (276 ms), retain 9>
- | | | | {
- | | | | "sessionID" = 944991920
- | | | | "iManufacturer" = 1
- | | | | "bNumConfigurations" = 1
- | | | | "idProduct" = 33344
- | | | | "bcdDevice" = 272
- | | | | "Bus Power Available" = 250
- | | | | "bMaxPacketSize0" = 8
- | | | | "USB Product Name" = "IR Receiver"
- | | | | "iProduct" = 2
- | | | | "iSerialNumber" = 0
- | | | | "USB Address" = 2
- | | | | "bDeviceClass" = 0
- | | | | "locationID" = 1562378240
- | | | | "bDeviceSubClass" = 0
- | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | "PortNum" = 2
- | | | | "non-removable" = "yes"
- | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | "bDeviceProtocol" = 0
- | | | | "Need contiguous memory for isoch" = Yes
- | | | | "USB Vendor Name" = "Apple Computer, Inc."
- | | | | "Device Speed" = 1
- | | | | "idVendor" = 1452
- | | | | "Requested Power" = 50
- | | | | "IOGeneralInterest" = "IOCommand is not serializable"
- | | | | "Low Power Displayed" = No
- | | | | }
- | | | |
- | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x10000022f, !registered, !matched, active, busy 0, retain 4>
- | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000230, registered, matched, active, busy 0 (261 ms), retain 8>
- | | | +-o AppleIRController <class AppleIRController, id 0x100000235, registered, matched, active, busy 0 (112 ms), retain 8>
- | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000236, registered, matched, active, busy 0 (3 ms), retain 5>
- | | | +-o IOHIDLibUserClient <class IOHIDLibUserClient, id 0x10000035d, !registered, !matched, active, busy 0, retain 6>
- | | +-o USB4 at 1D,3 <class IOPCIDevice, id 0x100000189, registered, matched, active, busy 0 (2390 ms), retain 11>
- | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001c9, registered, matched, active, busy 0 (2038 ms), retain 9>
- | | | +-o UHCI Root Hub Simulation at 1D,3 <class IOUSBRootHubDevice, id 0x10000020e, registered, matched, active, busy 0 (8 ms), retain 10>
- | | | | | {
- | | | | | "sessionID" = 575818003
- | | | | | "iManufacturer" = 2
- | | | | | "bNumConfigurations" = 1
- | | | | | "idProduct" = 32773
- | | | | | "bcdDevice" = 272
- | | | | | "Bus Power Available" = 250
- | | | | | "bMaxPacketSize0" = 8
- | | | | | "USB Product Name" = "UHCI Root Hub Simulation"
- | | | | | "iProduct" = 1
- | | | | | "iSerialNumber" = 0
- | | | | | "USB Address" = 1
- | | | | | "bDeviceClass" = 9
- | | | | | "locationID" = 2097152000
- | | | | | "bDeviceSubClass" = 0
- | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | | "Ports" = 2
- | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | | "bDeviceProtocol" = 0
- | | | | | "USB Vendor Name" = "Apple Inc."
- | | | | | "Device Speed" = 1
- | | | | | "idVendor" = 1452
- | | | | | "AAPL,current-in-sleep" = 1000
- | | | | | "Requested Power" = 0
- | | | | | "AAPL,port-current-in-sleep" = 500
- | | | | | "Low Power Displayed" = No
- | | | | | }
- | | | | |
- | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000212, !registered, !matched, active, busy 0, retain 8>
- | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000215, !registered, !matched, active, busy 0, retain 7>
- | | | +-o WirelessControllerDevice at 7d100000 <class IOUSBDevice, id 0x100000256, registered, matched, active, busy 0 (250 ms), retain 10>
- | | | | {
- | | | | "sessionID" = 3290864968
- | | | | "iManufacturer" = 0
- | | | | "idProduct" = 33285
- | | | | "bDeviceClass" = 224
- | | | | "bcdDevice" = 6501
- | | | | "Bus Power Available" = 250
- | | | | "bMaxPacketSize0" = 64
- | | | | "iProduct" = 0
- | | | | "iSerialNumber" = 0
- | | | | "USB Address" = 2
- | | | | "bNumConfigurations" = 1
- | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | "locationID" = 2098200576
- | | | | "bDeviceSubClass" = 1
- | | | | "USB Product Name" = "Bluetooth USB Host Controller"
- | | | | "non-removable" = "yes"
- | | | | "PortNum" = 1
- | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | "bDeviceProtocol" = 1
- | | | | "Need contiguous memory for isoch" = Yes
- | | | | "Device Speed" = 1
- | | | | "USB Vendor Name" = "Apple Inc."
- | | | | "idVendor" = 1452
- | | | | "Requested Power" = 0
- | | | | "IOGeneralInterest" = "IOCommand is not serializable"
- | | | | "Low Power Displayed" = No
- | | | | }
- | | | |
- | | | +-o CSRUSBBluetoothHCIController <class CSRUSBBluetoothHCIController, id 0x100000258, registered, matched, active, busy 0 (0 ms), retain 10>
- | | | | +-o IOBluetoothHCIUserClient <class IOBluetoothHCIUserClient, id 0x100000270, !registered, !matched, active, busy 0, retain 5>
- | | | | +-o IOBluetoothHCIUserClient <class IOBluetoothHCIUserClient, id 0x1000003ba, !registered, !matched, active, busy 0, retain 5>
- | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000025a, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOUSBInterface at 1 <class IOUSBInterface, id 0x10000025b, !registered, !matched, active, busy 0, retain 6>
- | | | +-o IOUSBInterface at 2 <class IOUSBInterface, id 0x10000025c, !registered, !matched, active, busy 0, retain 6>
- | | +-o USB7 at 1D,7 <class IOPCIDevice, id 0x10000018d, registered, matched, active, busy 0 (2564 ms), retain 13>
- | | | +-o IOService <class IOService, id 0x1000001ca, !registered, !matched, active, busy 0, retain 4>
- | | | +-o AppleUSBEHCI <class AppleUSBEHCI, id 0x1000001cb, registered, matched, active, busy 0 (2383 ms), retain 14>
- | | | +-o EHCI Root Hub Simulation at 1D,7 <class IOUSBRootHubDevice, id 0x1000001d7, registered, matched, active, busy 0 (32 ms), retain 12>
- | | | | | {
- | | | | | "sessionID" = 410970048
- | | | | | "iManufacturer" = 2
- | | | | | "bNumConfigurations" = 1
- | | | | | "idProduct" = 32774
- | | | | | "bcdDevice" = 512
- | | | | | "Bus Power Available" = 250
- | | | | | "bMaxPacketSize0" = 64
- | | | | | "USB Product Name" = "EHCI Root Hub Simulation"
- | | | | | "iProduct" = 1
- | | | | | "iSerialNumber" = 0
- | | | | | "USB Address" = 1
- | | | | | "bDeviceClass" = 9
- | | | | | "locationID" = 18446744073659219968
- | | | | | "bDeviceSubClass" = 0
- | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | | "Ports" = 8
- | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | | "bDeviceProtocol" = 1
- | | | | | "USB Vendor Name" = "Apple Inc."
- | | | | | "Device Speed" = 2
- | | | | | "idVendor" = 1452
- | | | | | "AAPL,current-in-sleep" = 4000
- | | | | | "Requested Power" = 0
- | | | | | "AAPL,port-current-in-sleep" = 500
- | | | | | "Low Power Displayed" = No
- | | | | | }
- | | | | |
- | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x1000001e8, registered, matched, active, busy 0 (0 ms), retain 9>
- | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x1000001ea, !registered, !matched, active, busy 0, retain 7>
- | | | +-o Built-in iSight at fd400000 <class IOUSBDevice, id 0x10000024e, registered, matched, active, busy 0 (50 ms), retain 9>
- | | | | | {
- | | | | | "sessionID" = 2717373407
- | | | | | "iManufacturer" = 1
- | | | | | "bNumConfigurations" = 1
- | | | | | "idProduct" = 34049
- | | | | | "bcdDevice" = 393
- | | | | | "Bus Power Available" = 250
- | | | | | "bMaxPacketSize0" = 64
- | | | | | "USB Product Name" = "Built-in iSight"
- | | | | | "iProduct" = 2
- | | | | | "iSerialNumber" = 0
- | | | | | "USB Address" = 2
- | | | | | "bDeviceClass" = 255
- | | | | | "locationID" = 18446744073663414272
- | | | | | "bDeviceSubClass" = 255
- | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | | "PortNum" = 4
- | | | | | "non-removable" = "yes"
- | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | | "bDeviceProtocol" = 255
- | | | | | "USB Vendor Name" = "Micron"
- | | | | | "Device Speed" = 2
- | | | | | "idVendor" = 1452
- | | | | | "Requested Power" = 50
- | | | | | "IOGeneralInterest" = "IOCommand is not serializable"
- | | | | | "kSuspendPort" = Yes
- | | | | | "Low Power Displayed" = No
- | | | | | }
- | | | | |
- | | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x100000250, !registered, !matched, active, busy 0, retain 4>
- | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000252, registered, matched, active, busy 0 (15 ms), retain 6>
- | | | | +-o IOUSBInterface at 1 <class IOUSBInterface, id 0x100000253, registered, matched, active, busy 0 (15 ms), retain 6>
- | | | +-o Flash Disk at fd300000 <class IOUSBDevice, id 0x100000408, registered, matched, active, busy 0 (499 ms), retain 8>
- | | | | {
- | | | | "sessionID" = 3995793432240
- | | | | "iManufacturer" = 1
- | | | | "bNumConfigurations" = 1
- | | | | "idProduct" = 24613
- | | | | "bcdDevice" = 256
- | | | | "Bus Power Available" = 250
- | | | | "bMaxPacketSize0" = 64
- | | | | "USB Product Name" = "Flash Disk"
- | | | | "iProduct" = 2
- | | | | "iSerialNumber" = 3
- | | | | "USB Address" = 3
- | | | | "bDeviceClass" = 0
- | | | | "bDeviceSubClass" = 0
- | | | | "locationID" = 18446744073662365696
- | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
- | | | | "kHasMSCInterface" = Yes
- | | | | "PortNum" = 3
- | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
- | | | | "bDeviceProtocol" = 0
- | | | | "uid" = "USB:197660250078C5C90000"
- | | | | "USB Vendor Name" = "CBM"
- | | | | "Device Speed" = 2
- | | | | "idVendor" = 6518
- | | | | "USB Serial Number" = "16270078C5C90000"
- | | | | "Requested Power" = 50
- | | | | "IOGeneralInterest" = "IOCommand is not serializable"
- | | | | "Low Power Displayed" = No
- | | | | }
- | | | |
- | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x10000040a, !registered, !matched, active, busy 0, retain 4>
- | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000040b, registered, matched, active, busy 0 (482 ms), retain 7>
- | | | +-o IOUSBMassStorageClass <class IOUSBMassStorageClass, id 0x10000040d, registered, matched, active, busy 0 (177 ms), retain 8>
- | | | +-o IOSCSIPeripheralDeviceNub <class IOSCSIPeripheralDeviceNub, id 0x10000040f, registered, matched, active, busy 0 (74 ms), retain 6>
- | | | +-o IOSCSIPeripheralDeviceType00 <class IOSCSIPeripheralDeviceType00, id 0x100000410, !registered, !matched, active, busy 0 (20 ms), retain 7>
- | | | +-o IOBlockStorageServices <class IOBlockStorageServices, id 0x100000413, registered, matched, active, busy 0 (20 ms), retain 5>
- | | | +-o IOBlockStorageDriver <class IOBlockStorageDriver, id 0x100000414, registered, matched, active, busy 0 (18 ms), retain 7>
- | | | +-o CBM Flash Disk Media <class IOMedia, id 0x100000415, registered, matched, active, busy 0 (16 ms), retain 10>
- | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000416, registered, matched, active, busy 0 (2 ms), retain 5>
- | | | +-o IOFDiskPartitionScheme <class IOFDiskPartitionScheme, id 0x100000419, !registered, !matched, active, busy 0 (10 ms), retain 6>
- | | | +-o Untitled 1 at 1 <class IOMedia, id 0x10000041b, registered, matched, active, busy 0 (10 ms), retain 9>
- | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000041c, registered, matched, active, busy 0 (2 ms), retain 6>
- | | +-o PCIB at 1E <class IOPCIDevice, id 0x100000197, registered, matched, active, busy 0 (712 ms), retain 11>
- | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001cd, registered, matched, active, busy 0 (542 ms), retain 7>
- | | | +-o FRWR at 3 <class IOPCIDevice, id 0x100000198, registered, matched, active, busy 0 (494 ms), retain 10>
- | | | +-o AppleFWOHCI <class AppleFWOHCI, id 0x1000001d8, !registered, !matched, active, busy 0 (476 ms), retain 6>
- | | | +-o IOFireWireController <class IOFireWireController, id 0x1000001da, registered, matched, active, busy 0 (476 ms), retain 9>
- | | | +-o IOFireWireLocalNode <class IOFireWireLocalNode, id 0x100000214, registered, matched, active, busy 0 (476 ms), retain 12>
- | | | +-o IOFireWireUserClientIniter <class IOFireWireUserClientIniter, id 0x100000216, !registered, !matched, active, busy 0, retain 4>
- | | | +-o IOFireWireUserClientIniter <class IOFireWireUserClientIniter, id 0x1000002b0, !registered, !matched, active, busy 0, retain 4>
- | | | +-o IOFireWireIP <class IOFireWireIP, id 0x1000002b1, registered, matched, active, busy 0 (224 ms), retain 5>
- | | | +-o IOFWInterface <class IOFWInterface, id 0x1000002b9, registered, matched, active, busy 0 (224 ms), retain 10>
- | | | +-o IONetworkStack <class IONetworkStack, id 0x1000001de, registered, matched, active, busy 0 (2 ms), retain 11>
- | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x100000266, !registered, !matched, active, busy 0, retain 5>
- | | +-o LPCB at 1F <class IOPCIDevice, id 0x100000199, registered, matched, active, busy 0 (5615 ms), retain 28>
- | | | +-o AppleLPC <class AppleLPC, id 0x100000275, registered, matched, active, busy 0 (3 ms), retain 5>
- | | +-o PATA at 1F,1 <class IOPCIDevice, id 0x10000019a, registered, matched, active, busy 0 (10462 ms), retain 13>
- | | | +-o AppleIntelPIIXATARoot <class AppleIntelPIIXATARoot, id 0x1000001d1, !registered, !matched, active, busy 0 (10287 ms), retain 6>
- | | | +-o PRID at 0 <class AppleIntelPIIXATAChannel, id 0x10000019b, registered, matched, active, busy 0 (10287 ms), retain 14>
- | | | | +-o AppleIntelPIIXPATA <class AppleIntelPIIXPATA, id 0x1000001e2, registered, matched, active, busy 0 (10231 ms), retain 7>
- | | | | +-o ATADeviceNub at 0 <class ATADeviceNub, id 0x1000001f5, registered, matched, active, busy 0 (10230 ms), retain 6>
- | | | | +-o IOATAPIProtocolTransport <class IOATAPIProtocolTransport, id 0x1000001f8, registered, matched, active, busy 0 (10221 ms), retain 8>
- | | | | +-o IOSCSIPeripheralDeviceNub <class IOSCSIPeripheralDeviceNub, id 0x1000001fb, registered, matched, active, busy 0 (10013 ms), retain 6>
- | | | | +-o IOSCSIPeripheralDeviceType05 <class IOSCSIPeripheralDeviceType05, id 0x100000222, !registered, !matched, active, busy 0 (3701 ms), retain 7>
- | | | | +-o IODVDServices <class IODVDServices, id 0x100000263, registered, matched, active, busy 0 (3701 ms), retain 6>
- | | | | +-o IODVDBlockStorageDriver <class IODVDBlockStorageDriver, id 0x100000264, registered, matched, active, busy 0 (3699 ms), retain 7>
- | | | | | +-o HL-DT-ST DVDRW GSA-S10N Media <class IODVDMedia, id 0x100000269, registered, matched, active, busy 0 (3698 ms), retain 10>
- | | | | | +-o IODVDMediaBSDClient <class IODVDMediaBSDClient, id 0x10000026a, registered, matched, active, busy 0 (2 ms), retain 5>
- | | | | | +-o IOApplePartitionScheme <class IOApplePartitionScheme, id 0x1000002f4, !registered, !matched, active, busy 0 (14 ms), retain 8>
- | | | | | +-o Apple at 1 <class IOMedia, id 0x1000002f5, registered, matched, active, busy 0 (11 ms), retain 8>
- | | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x1000002f8, registered, matched, active, busy 0 (5 ms), retain 5>
- | | | | | +-o Macintosh at 2 <class IOMedia, id 0x1000002f6, registered, matched, active, busy 0 (12 ms), retain 8>
- | | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x1000002f9, registered, matched, active, busy 0 (5 ms), retain 5>
- | | | | | +-o Mac_OS_X at 3 <class IOMedia, id 0x1000002f7, registered, matched, active, busy 0 (14 ms), retain 9>
- | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x1000002fa, registered, matched, active, busy 0 (5 ms), retain 6>
- | | | | +-o SCSITaskUserClientIniter <class SCSITaskUserClientIniter, id 0x100000265, !registered, !matched, active, busy 0, retain 4>
- | | | +-o CHN1 at 1 <class AppleIntelPIIXATAChannel, id 0x1000001d2, registered, matched, active, busy 0 (75 ms), retain 6>
- | | +-o SATA at 1F,2 <class IOPCIDevice, id 0x10000019e, registered, matched, active, busy 0 (387 ms), retain 13>
- | | | +-o AppleAHCI <class AppleAHCI, id 0x1000001d3, registered, matched, active, busy 0 (208 ms), retain 7>
- | | | +-o PRT2 at 2 <class AppleAHCIPort, id 0x1000001a0, registered, matched, active, busy 0 (170 ms), retain 10>
- | | | +-o IOAHCIDevice at 0 <class IOAHCIDevice, id 0x1000001eb, registered, matched, active, busy 0 (170 ms), retain 11>
- | | | +-o AppleAHCIDiskDriver <class AppleAHCIDiskDriver, id 0x1000001ec, registered, matched, active, busy 0 (51 ms), retain 6>
- | | | +-o IOAHCIBlockStorageDevice <class IOAHCIBlockStorageDevice, id 0x100000203, registered, matched, active, busy 0 (51 ms), retain 6>
- | | | +-o IOBlockStorageDriver <class IOBlockStorageDriver, id 0x100000207, registered, matched, active, busy 0 (49 ms), retain 7>
- | | | +-o FUJITSU MHY2120BH Media <class IOMedia, id 0x100000208, registered, matched, active, busy 0 (49 ms), retain 10>
- | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000020f, registered, matched, active, busy 0 (0 ms), retain 5>
- | | | +-o IOGUIDPartitionScheme <class IOGUIDPartitionScheme, id 0x10000021b, !registered, !matched, active, busy 0 (13 ms), retain 7>
- | | | +-o EFI System Partition at 1 <class IOMedia, id 0x10000021e, registered, matched, active, busy 0 (3 ms), retain 8>
- | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000220, registered, matched, active, busy 0 (1 ms), retain 5>
- | | | +-o Untitled at 2 <class IOMedia, id 0x10000021f, registered, matched, active, busy 0 (13 ms), retain 10>
- | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000221, registered, matched, active, busy 0 (1 ms), retain 6>
- | | +-o SBUS at 1F,3 <class IOPCIDevice, id 0x1000001a1, registered, matched, active, busy 0 (203 ms), retain 8>
- | +-o PDRC <class IOACPIPlatformDevice, id 0x100000130, registered, matched, active, busy 0 (9 ms), retain 6>
- | +-o SMC <class IOACPIPlatformDevice, id 0x10000015f, registered, matched, active, busy 0 (451 ms), retain 9>
- | | +-o AppleSMC <class AppleSMC, id 0x1000002ae, registered, matched, active, busy 0 (191 ms), retain 6>
- | | +-o SMCWatchDogTimer <class SMCWatchDogTimer, id 0x1000002b3, registered, matched, active, busy 0 (129 ms), retain 5>
- | +-o SMS0 <class IOACPIPlatformDevice, id 0x100000160, registered, matched, active, busy 0 (377 ms), retain 7>
- | | +-o SMCMotionSensor <class SMCMotionSensor, id 0x1000002dc, registered, matched, active, busy 0 (2 ms), retain 5>
- | +-o EC <class IOACPIPlatformDevice, id 0x100000161, registered, matched, active, busy 0 (245 ms), retain 10>
- | | +-o AppleACPIEC <class AppleACPIEC, id 0x100000124, !registered, !matched, active, busy 0, retain 6>
- | +-o SMB0 <class IOACPIPlatformDevice, id 0x100000162, registered, matched, active, busy 0 (34 ms), retain 9>
- | | +-o AppleECSMBusController <class AppleECSMBusController, id 0x1000001ed, registered, matched, active, busy 0 (16 ms), retain 5>
- | | +-o AppleSmartBatteryManager <class AppleSmartBatteryManager, id 0x1000001ee, registered, matched, active, busy 0 (3 ms), retain 6>
- | | +-o AppleSmartBattery <class AppleSmartBattery, id 0x1000001f0, registered, matched, active, busy 0 (0 ms), retain 5>
- | +-o SBS0 <class IOACPIPlatformDevice, id 0x100000163, registered, matched, active, busy 0 (19 ms), retain 6>
- | +-o DMAC <class IOACPIPlatformDevice, id 0x100000164, registered, matched, active, busy 0 (21 ms), retain 6>
- | +-o FWHD <class IOACPIPlatformDevice, id 0x100000165, registered, matched, active, busy 0 (22 ms), retain 6>
- | +-o HPET <class IOACPIPlatformDevice, id 0x100000166, registered, matched, active, busy 0 (24 ms), retain 7>
- | | +-o AppleHPET <class AppleHPET, id 0x1000001bc, !registered, !matched, active, busy 0, retain 4>
- | +-o IPIC <class IOACPIPlatformDevice, id 0x100000167, registered, matched, active, busy 0 (25 ms), retain 6>
- | +-o MATH <class IOACPIPlatformDevice, id 0x100000168, registered, matched, active, busy 0 (26 ms), retain 6>
- | +-o LDRC <class IOACPIPlatformDevice, id 0x100000169, registered, matched, active, busy 0 (27 ms), retain 6>
- | +-o RTC <class IOACPIPlatformDevice, id 0x10000016a, registered, matched, active, busy 0 (38 ms), retain 8>
- | | +-o AppleRTC <class AppleRTC, id 0x1000001bd, registered, matched, active, busy 0 (1 ms), retain 6>
- | +-o TIMR <class IOACPIPlatformDevice, id 0x10000016b, registered, matched, active, busy 0 (29 ms), retain 6>
- | +-o AppleEFIRuntime <class AppleEFIRuntime, id 0x1000001be, registered, matched, active, busy 0 (297 ms), retain 7>
- | | +-o AppleEFINVRAM <class AppleEFINVRAM, id 0x1000001bf, registered, matched, active, busy 0 (1 ms), retain 7>
- | +-o IOPCIMessagedInterruptController <class IOPCIMessagedInterruptController, id 0x1000001c1, registered, matched, active, busy 0 (2 ms), retain 6>
- | +-o AppleRawIOAddressSpace <class AppleRawIOAddressSpace, id 0x10000028a, registered, matched, active, busy 0 (2 ms), retain 4>
- | +-o AppleRawPhysicalMemoryAddressSpace <class AppleRawPhysicalMemoryAddressSpace, id 0x10000028b, registered, matched, active, busy 0 (4 ms), retain 4>
- +-o IOResources <class IOResources, id 0x100000113, registered, matched, active, busy 0 (824 ms), retain 24>
- +-o AppleIntelCPUPowerManagement <class AppleIntelCPUPowerManagement, id 0x10000011b, registered, matched, active, busy 0 (252 ms), retain 5>
- | +-o AppleIntelCPUPowerManagementClient <class AppleIntelCPUPowerManagementClient, id 0x100000120, !registered, !matched, active, busy 0, retain 4>
- +-o IOHDIXController <class IOHDIXController, id 0x10000011c, registered, matched, active, busy 0 (2 ms), retain 4>
- +-o com_apple_AppleFSCompression_AppleFSCompressionTypeZlib <class com_apple_AppleFSCompression_AppleFSCompressionTypeZlib, id 0x1000001dc, !registered, !matched, active, busy 0, retain 4>
- +-o com_apple_BootCache <class com_apple_BootCache, id 0x1000001dd, !registered, !matched, active, busy 0, retain 4>
- +-o IONetworkStack <class IONetworkStack, id 0x1000001de, registered, matched, active, busy 0 (2 ms), retain 11>
- | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x100000266, !registered, !matched, active, busy 0, retain 5>
- +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 15>
- | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
- | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
- | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
- | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
- +-o AppleProfileOSHooks <class AppleProfileOSHooks, id 0x100000281, registered, matched, active, busy 0 (187 ms), retain 15>
- | +-o AppleProfileTimeTrigger <class AppleProfileTimeTrigger, id 0x10000028f, registered, matched, active, busy 0 (168 ms), retain 6>
- | +-o AppleProfilePMITrigger <class AppleProfilePMITrigger, id 0x100000290, registered, matched, active, busy 0 (168 ms), retain 6>
- | +-o AppleOSXPerformanceMonitor <class AppleOSXPerformanceMonitor, id 0x100000291, !registered, !matched, active, busy 0 (173 ms), retain 6>
- | | +-o AppleOSXPerformanceCounter <class AppleOSXPerformanceCounter, id 0x10000029c, registered, matched, active, busy 0 (170 ms), retain 6>
- | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 18>
- | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | | +-o AppleOSXPerformanceCounter <class AppleOSXPerformanceCounter, id 0x10000029d, registered, matched, active, busy 0 (173 ms), retain 6>
- | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 18>
- | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
- | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
- | +-o AppleProfileKEventTrigger <class AppleProfileKEventTrigger, id 0x100000293, registered, matched, active, busy 0 (175 ms), retain 6>
- | +-o AppleProfileManualTrigger <class AppleProfileManualTrigger, id 0x100000294, registered, matched, active, busy 0 (2 ms), retain 6>
- | +-o AppleProfileCallstackAction <class AppleProfileCallstackAction, id 0x100000295, !registered, !matched, active, busy 0, retain 5>
- | +-o AppleProfileKEventAction <class AppleProfileKEventAction, id 0x100000296, !registered, !matched, active, busy 0, retain 5>
- | +-o AppleProfileRegisterStateAction <class AppleProfileRegisterStateAction, id 0x100000297, !registered, !matched, active, busy 0, retain 5>
- | +-o AppleProfileThreadInfoAction <class AppleProfileThreadInfoAction, id 0x100000298, !registered, !matched, active, busy 0, retain 5>
- | +-o AppleProfileTimestampAction <class AppleProfileTimestampAction, id 0x100000299, !registered, !matched, active, busy 0, retain 5>
- +-o com_apple_driver_AudioIPCDevice <class com_apple_driver_AudioIPCDevice, id 0x100000282, registered, matched, active, busy 0 (165 ms), retain 6>
- | +-o com_apple_driver_AudioIPCEngine <class com_apple_driver_AudioIPCEngine, id 0x10000028c, registered, matched, active, busy 0 (164 ms), retain 9>
- | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000333, !registered, !matched, active, busy 0, retain 6>
- | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000365, !registered, !matched, active, busy 0, retain 6>
- | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000394, !registered, !matched, active, busy 0, retain 6>
- | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a4, !registered, !matched, active, busy 0, retain 6>
- +-o CHUDKernLib <class CHUDKernLib, id 0x100000283, registered, matched, active, busy 0 (170 ms), retain 4>
- +-o CHUDProf <class CHUDProf, id 0x100000284, registered, matched, active, busy 0 (307 ms), retain 4>
- +-o CHUDUtils <class CHUDUtils, id 0x100000285, registered, matched, active, busy 0 (310 ms), retain 4>
- +-o Dont_Steal_Mac_OS_X <class Dont_Steal_Mac_OS_X, id 0x100000286, !registered, !matched, active, busy 0, retain 5>
- +-o IOBluetoothSerialManager <class IOBluetoothSerialManager, id 0x100000287, registered, matched, active, busy 0 (376 ms), retain 7>
- | +-o IOBluetoothSerialClient <class IOBluetoothSerialClient, id 0x1000002d3, !registered, !matched, active, busy 0 (133 ms), retain 5>
- | | +-o IOBluetoothSerialClientSerialStreamSync <class IOBluetoothSerialClientSerialStreamSync, id 0x1000002d5, registered, matched, active, busy 0 (133 ms), retain 5>
- | | +-o IOSerialBSDClient <class IOSerialBSDClient, id 0x1000002df, registered, matched, active, busy 0 (6 ms), retain 4>
- | +-o IOBluetoothSerialClient <class IOBluetoothSerialClient, id 0x1000002de, !registered, !matched, active, busy 0 (76 ms), retain 5>
- | +-o IOBluetoothSerialClientModemStreamSync <class IOBluetoothSerialClientModemStreamSync, id 0x1000002e0, registered, matched, active, busy 0 (76 ms), retain 5>
- | +-o IOSerialBSDClient <class IOSerialBSDClient, id 0x1000002e8, registered, matched, active, busy 0 (6 ms), retain 4>
- +-o IODisplayWrangler <class IODisplayWrangler, id 0x100000288, registered, matched, active, busy 0 (169 ms), retain 7>
- | +-o IOAccelerationUserClient <class IOAccelerationUserClient, id 0x100000370, !registered, !matched, active, busy 0, retain 5>
- +-o IOSurfaceRoot <class IOSurfaceRoot, id 0x100000289, registered, matched, active, busy 0 (171 ms), retain 5>
- +-o AppleSCSISubsystemGlobals <class AppleSCSISubsystemGlobals, id 0x1000002fd, registered, matched, active, busy 0 (1 ms), retain 5>
diff --git a/resources/macos/ioreg/IOUSBDevice1 b/resources/macos/ioreg/IOUSBDevice1
new file mode 100644
index 0000000..3d58b39
--- /dev/null
+++ b/resources/macos/ioreg/IOUSBDevice1
@@ -0,0 +1,748 @@
++-o Root <class IORegistryEntry, id 0x100000100, retain 13>
+ +-o MacBook2,1 <class IOPlatformExpertDevice, id 0x100000110, registered, matched, active, busy 0 (16937 ms), retain 25>
+ +-o AppleACPIPlatformExpert <class AppleACPIPlatformExpert, id 0x100000111, registered, matched, active, busy 0 (15867 ms), retain 38>
+ | +-o IOPMrootDomain <class IOPMrootDomain, id 0x100000114, registered, matched, active, busy 0 (12 ms), retain 48>
+ | | +-o IORootParent <class IORootParent, id 0x100000115, !registered, !matched, active, busy 0, retain 7>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000267, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000268, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000026d, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000026e, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000271, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000272, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000002ed, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000319, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000329, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000032f, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000332, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000363, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000364, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000036d, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000036e, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000036f, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000371, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000392, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000393, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003a1, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003a2, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003a3, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003b9, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003bc, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000041e, !registered, !matched, active, busy 0, retain 5>
+ | +-o cpus <class IOPlatformDevice, id 0x100000117, registered, matched, active, busy 0 (4 ms), retain 7>
+ | +-o CPU0 at 0 <class IOACPIPlatformDevice, id 0x100000118, registered, matched, active, busy 0 (418 ms), retain 7>
+ | | +-o AppleACPICPU <class AppleACPICPU, id 0x10000011d, registered, matched, active, busy 0 (406 ms), retain 9>
+ | | +-o AppleACPICPUInterruptController <class AppleACPICPUInterruptController, id 0x10000011f, registered, matched, active, busy 0 (1 ms), retain 5>
+ | | +-o ACPI_SMC_PlatformPlugin <class ACPI_SMC_PlatformPlugin, id 0x10000027b, registered, matched, active, busy 0 (8 ms), retain 9>
+ | | +-o AppleIntelMeromPerformanceMonitor <class AppleIntelMeromPerformanceMonitor, id 0x10000027c, !registered, !matched, active, busy 0 (145 ms), retain 9>
+ | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002ce, registered, matched, active, busy 0 (125 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002cf, registered, matched, active, busy 0 (126 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002d0, registered, matched, active, busy 0 (133 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002d1, registered, matched, active, busy 0 (145 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002d2, registered, matched, active, busy 0 (133 ms), retain 7>
+ | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | +-o AppleIntelMeromSPR <class AppleIntelMeromSPR, id 0x1000002b4, registered, matched, active, busy 0 (135 ms), retain 4>
+ | +-o CPU1 at 1 <class IOACPIPlatformDevice, id 0x100000119, registered, matched, active, busy 0 (392 ms), retain 7>
+ | | +-o AppleACPICPU <class AppleACPICPU, id 0x10000011e, registered, matched, active, busy 0 (374 ms), retain 7>
+ | | +-o AppleIntelMeromPerformanceMonitor <class AppleIntelMeromPerformanceMonitor, id 0x1000002ba, !registered, !matched, active, busy 0 (124 ms), retain 9>
+ | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002c2, registered, matched, active, busy 0 (3 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002c4, registered, matched, active, busy 0 (6 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002c5, registered, matched, active, busy 0 (120 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002c6, registered, matched, active, busy 0 (122 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002c7, registered, matched, active, busy 0 (124 ms), retain 7>
+ | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | +-o AppleIntelMeromSPR <class AppleIntelMeromSPR, id 0x1000002bb, registered, matched, active, busy 0 (125 ms), retain 4>
+ | +-o io-apic at fec00000 <class IOACPIPlatformDevice, id 0x10000011a, registered, matched, active, busy 0 (4 ms), retain 6>
+ | | +-o AppleAPICInterruptController <class AppleAPICInterruptController, id 0x100000121, registered, matched, active, busy 0 (1 ms), retain 11>
+ | +-o AppleACPIEventController <class AppleACPIEventController, id 0x100000122, !registered, !matched, active, busy 0, retain 6>
+ | +-o boot-ec <class IOACPIPlatformDevice, id 0x100000123, registered, matched, active, busy 0 (3 ms), retain 6>
+ | | +-o AppleACPIEC <class AppleACPIEC, id 0x100000124, !registered, !matched, active, busy 0, retain 6>
+ | +-o bios <class IOPlatformDevice, id 0x100000125, registered, matched, active, busy 0 (4 ms), retain 5>
+ | | +-o AppleSMBIOS <class AppleSMBIOS, id 0x100000126, registered, matched, active, busy 0 (1 ms), retain 4>
+ | +-o ADP1 <class IOACPIPlatformDevice, id 0x10000012a, registered, matched, active, busy 0 (2 ms), retain 7>
+ | | +-o AppleACPIACAdapter <class AppleACPIACAdapter, id 0x1000001a2, !registered, !matched, active, busy 0, retain 4>
+ | +-o LID0 <class IOACPIPlatformDevice, id 0x10000012b, registered, matched, active, busy 0 (3 ms), retain 9>
+ | | +-o AppleACPILid <class AppleACPILid, id 0x1000001a3, !registered, !matched, active, busy 0, retain 5>
+ | +-o PNLF <class IOACPIPlatformDevice, id 0x10000012c, registered, matched, active, busy 0 (13 ms), retain 7>
+ | | +-o AppleIntelPanelA <class AppleIntelPanelA, id 0x100000273, !registered, !matched, active, busy 0, retain 5>
+ | +-o PWRB <class IOACPIPlatformDevice, id 0x10000012d, registered, matched, active, busy 0 (5 ms), retain 8>
+ | | +-o AppleACPIButton <class AppleACPIButton, id 0x1000001a4, !registered, !matched, active, busy 0, retain 4>
+ | +-o SLPB <class IOACPIPlatformDevice, id 0x10000012e, registered, matched, active, busy 0 (6 ms), retain 7>
+ | | +-o AppleACPIButton <class AppleACPIButton, id 0x1000001a5, !registered, !matched, active, busy 0, retain 4>
+ | +-o PCI0 at 0 <class IOACPIPlatformDevice, id 0x10000012f, registered, matched, active, busy 0 (15786 ms), retain 43>
+ | | +-o AppleACPIPCI <class AppleACPIPCI, id 0x1000001a6, registered, matched, active, busy 0 (15772 ms), retain 40>
+ | | +-o pci8086,27a0 at 0 <class IOPCIDevice, id 0x1000001a8, registered, matched, active, busy 0 (5445 ms), retain 8>
+ | | | +-o AppleSMCPDRC <class AppleSMCPDRC, id 0x1000002a9, registered, matched, active, busy 0 (1 ms), retain 4>
+ | | +-o GFX0 at 2 <class IOPCIDevice, id 0x100000174, registered, matched, active, busy 0 (551 ms), retain 17>
+ | | | +-o AppleIntelIntegratedFramebuffer <class AppleIntelIntegratedFramebuffer, id 0x1000002b5, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o AppleIntelFramebuffer <class AppleIntelFramebuffer, id 0x1000002d8, registered, matched, active, busy 0 (239 ms), retain 14>
+ | | | | +-o AppleMCCSControlModule <class AppleMCCSControlModule, id 0x1000002e2, registered, matched, active, busy 0 (79 ms), retain 5>
+ | | | | | +-o AppleMCCSParameterHandler <class AppleMCCSParameterHandler, id 0x1000002eb, registered, matched, active, busy 0 (6 ms), retain 4>
+ | | | | +-o AppleUpstreamUserClientDriver <class AppleUpstreamUserClientDriver, id 0x1000002e3, registered, matched, active, busy 0 (3 ms), retain 4>
+ | | | | +-o IOFramebufferI2CInterface <class IOFramebufferI2CInterface, id 0x10000031c, registered, matched, active, busy 0 (3 ms), retain 5>
+ | | | | +-o display0 <class IODisplayConnect, id 0x10000031d, registered, matched, active, busy 0 (28 ms), retain 5>
+ | | | | | +-o AppleBacklightDisplay <class AppleBacklightDisplay, id 0x10000031e, registered, matched, active, busy 0 (2 ms), retain 8>
+ | | | | +-o IOFramebufferUserClient <class IOFramebufferUserClient, id 0x100000325, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelFramebuffer <class AppleIntelFramebuffer, id 0x1000002da, registered, matched, active, busy 0 (212 ms), retain 12>
+ | | | | +-o AppleMCCSControlModule <class AppleMCCSControlModule, id 0x1000002e5, registered, matched, active, busy 0 (8 ms), retain 5>
+ | | | | | +-o AppleMCCSParameterHandler <class AppleMCCSParameterHandler, id 0x1000002e9, registered, matched, active, busy 0 (6 ms), retain 4>
+ | | | | +-o AppleUpstreamUserClientDriver <class AppleUpstreamUserClientDriver, id 0x1000002e6, registered, matched, active, busy 0 (5 ms), retain 4>
+ | | | | +-o IOFramebufferI2CInterface <class IOFramebufferI2CInterface, id 0x100000324, registered, matched, active, busy 0 (3 ms), retain 5>
+ | | | | +-o IOFramebufferUserClient <class IOFramebufferUserClient, id 0x100000327, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915 <class Intel915, id 0x1000002b7, registered, matched, active, busy 0 (2 ms), retain 18>
+ | | | +-o Intel9152DContext <class Intel9152DContext, id 0x100000326, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel9152DContext <class Intel9152DContext, id 0x100000328, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915Device <class Intel915Device, id 0x10000032d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915GLContext <class Intel915GLContext, id 0x10000032e, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915Surface <class Intel915Surface, id 0x10000035e, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915Surface <class Intel915Surface, id 0x100000372, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915GLContext <class Intel915GLContext, id 0x100000373, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915Surface <class Intel915Surface, id 0x100000384, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915Surface <class Intel915Surface, id 0x100000385, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915Surface <class Intel915Surface, id 0x100000391, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915Device <class Intel915Device, id 0x1000003be, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915GLContext <class Intel915GLContext, id 0x1000003bf, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915GLContext <class Intel915GLContext, id 0x1000003c0, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Intel915Surface <class Intel915Surface, id 0x1000003c1, !registered, !matched, active, busy 0, retain 5>
+ | | +-o display at 2,1 <class IOPCIDevice, id 0x1000001a9, registered, matched, active, busy 0 (637 ms), retain 9>
+ | | | +-o IONDRVFramebuffer <class IONDRVFramebuffer, id 0x100000277, registered, matched, active, busy 0 (458 ms), retain 7>
+ | | | +-o AppleMCCSControlModule <class AppleMCCSControlModule, id 0x1000002ac, registered, matched, active, busy 0 (125 ms), retain 5>
+ | | | | +-o AppleMCCSParameterHandler <class AppleMCCSParameterHandler, id 0x1000002dd, registered, matched, active, busy 0 (4 ms), retain 4>
+ | | | +-o AppleUpstreamUserClientDriver <class AppleUpstreamUserClientDriver, id 0x1000002ad, registered, matched, active, busy 0 (107 ms), retain 4>
+ | | +-o pci8086,27a3 at 7 <class IOPCIDevice, id 0x1000001aa, registered, matched, active, busy 0 (32 ms), retain 7>
+ | | +-o HDEF at 1B <class IOPCIDevice, id 0x100000178, registered, matched, active, busy 0 (739 ms), retain 10>
+ | | | +-o AppleHDAController at 1B <class AppleHDAController, id 0x100000280, registered, matched, active, busy 0 (348 ms), retain 7>
+ | | | +-o IOHDACodecDevice at 1B,0 <class IOHDACodecDevice, id 0x1000002a8, registered, matched, active, busy 0 (348 ms), retain 6>
+ | | | +-o IOHDACodecDriver <class IOHDACodecDriver, id 0x1000002d6, !registered, !matched, active, busy 0 (261 ms), retain 5>
+ | | | +-o IOHDACodecFunction at 1B,0,1 <class IOHDACodecFunction, id 0x1000002d7, registered, matched, active, busy 0 (261 ms), retain 6>
+ | | | +-o AppleHDACodecGeneric <class AppleHDACodecGeneric, id 0x1000002e1, registered, matched, active, busy 0 (101 ms), retain 5>
+ | | | +-o AppleHDADriver <class AppleHDADriver, id 0x1000002ec, registered, matched, active, busy 0 (21 ms), retain 8>
+ | | | +-o AppleHDAEngineOutput at 1B,0,1,2 <class AppleHDAEngineOutput, id 0x100000302, registered, matched, active, busy 0 (9 ms), retain 28>
+ | | | | +-o AppleHDAStream <class AppleHDAStream, id 0x100000303, registered, matched, active, busy 0 (5 ms), retain 8>
+ | | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x100000304, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033f, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039c, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b4, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000305, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000340, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039d, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b5, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000306, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000341, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039e, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b6, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000307, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000342, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039f, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b7, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000308, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000343, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a0, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b8, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o AudioAUUCDriver <class AudioAUUCDriver, id 0x10000030a, registered, matched, active, busy 0 (4 ms), retain 4>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000336, !registered, !matched, active, busy 0, retain 7>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000347, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000368, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000036c, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000397, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000039b, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a7, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003ab, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o AppleHDAEngineInput at 1B,0,1,0 <class AppleHDAEngineInput, id 0x100000309, registered, matched, active, busy 0 (6 ms), retain 24>
+ | | | | +-o AppleHDAStream <class AppleHDAStream, id 0x10000030b, registered, matched, active, busy 0 (5 ms), retain 7>
+ | | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x10000030c, !registered, !matched, active, busy 0 (0 ms), retain 10>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033b, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ac, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x10000030d, !registered, !matched, active, busy 0 (0 ms), retain 10>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033c, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ad, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x10000030e, !registered, !matched, active, busy 0 (0 ms), retain 10>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033d, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ae, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x10000030f, !registered, !matched, active, busy 0 (0 ms), retain 18>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033e, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000345, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000399, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a9, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003af, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000335, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000346, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000367, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000396, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000039a, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a6, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003aa, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o AppleHDAEngineInput at 1B,0,1,1 <class AppleHDAEngineInput, id 0x100000310, registered, matched, active, busy 0 (6 ms), retain 24>
+ | | | +-o AppleHDAStream <class AppleHDAStream, id 0x100000311, registered, matched, active, busy 0 (5 ms), retain 7>
+ | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x100000313, !registered, !matched, active, busy 0 (0 ms), retain 10>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000337, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b0, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000314, !registered, !matched, active, busy 0 (0 ms), retain 10>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000338, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b1, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000315, !registered, !matched, active, busy 0 (0 ms), retain 10>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000339, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b2, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000316, !registered, !matched, active, busy 0 (0 ms), retain 10>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000033a, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b3, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000334, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000344, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000366, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000369, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000395, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000398, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a5, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a8, !registered, !matched, active, busy 0, retain 6>
+ | | +-o RP01 at 1C <class IOPCIDevice, id 0x100000179, registered, matched, active, busy 0 (6297 ms), retain 11>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001c2, registered, matched, active, busy 0 (6262 ms), retain 7>
+ | | | +-o PXS1 at 0 <class IOPCIDevice, id 0x10000017a, registered, matched, active, busy 0 (6262 ms), retain 10>
+ | | | +-o yukon2osx <class yukon2osx, id 0x1000001c6, !registered, !matched, active, busy 0 (2 ms), retain 7>
+ | | | +-o yukon <class yukon, id 0x100000260, !registered, !matched, active, busy 0 (2 ms), retain 8>
+ | | | +-o IOEthernetInterface <class IOEthernetInterface, id 0x100000261, registered, matched, active, busy 0 (2 ms), retain 11>
+ | | | +-o IONetworkStack <class IONetworkStack, id 0x1000001de, registered, matched, active, busy 0 (2 ms), retain 11>
+ | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x100000266, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RP02 at 1C,1 <class IOPCIDevice, id 0x10000017b, registered, matched, active, busy 0 (509 ms), retain 11>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001e3, registered, matched, active, busy 0 (299 ms), retain 7>
+ | | | +-o PXS2 at 0 <class IOPCIDevice, id 0x10000017c, registered, matched, active, busy 0 (288 ms), retain 12>
+ | | | +-o AirPort_AthrFusion21 <class AirPort_AthrFusion21, id 0x10000027d, registered, matched, active, busy 0 (100 ms), retain 8>
+ | | | +-o AtherosFusion21Interface <class AtherosFusion21Interface, id 0x1000002ab, registered, matched, active, busy 0 (99 ms), retain 10>
+ | | | +-o IONetworkStack <class IONetworkStack, id 0x1000001de, registered, matched, active, busy 0 (2 ms), retain 11>
+ | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x100000266, !registered, !matched, active, busy 0, retain 5>
+ | | +-o USB1 at 1D <class IOPCIDevice, id 0x10000017d, registered, matched, active, busy 0 (967 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001e1, registered, matched, active, busy 0 (634 ms), retain 9>
+ | | | +-o UHCI Root Hub Simulation at 1D <class IOUSBRootHubDevice, id 0x1000001fe, registered, matched, active, busy 0 (8 ms), retain 10>
+ | | | | | {
+ | | | | | "sessionID" = 555462596
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 32773
+ | | | | | "bcdDevice" = 272
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 8
+ | | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 1
+ | | | | | "bDeviceClass" = 9
+ | | | | | "locationID" = 486539264
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 2
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "bDeviceProtocol" = 0
+ | | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | | "Device Speed" = 1
+ | | | | | "idVendor" = 1452
+ | | | | | "AAPL,current-in-sleep" = 1000
+ | | | | | "Requested Power" = 0
+ | | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000200, !registered, !matched, active, busy 0, retain 8>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000202, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o Apple Internal Keyboard / Trackpad at 1d200000 <class IOUSBDevice, id 0x100000227, registered, matched, active, busy 0 (625 ms), retain 12>
+ | | | | {
+ | | | | "sessionID" = 922879256
+ | | | | "iManufacturer" = 1
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 539
+ | | | | "bcdDevice" = 24
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 8
+ | | | | "USB Product Name" = "Apple Internal Keyboard / Trackpad"
+ | | | | "iProduct" = 2
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 2
+ | | | | "bDeviceClass" = 0
+ | | | | "locationID" = 488636416
+ | | | | "bDeviceSubClass" = 0
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "PortNum" = 2
+ | | | | "non-removable" = "yes"
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 0
+ | | | | "Need contiguous memory for isoch" = Yes
+ | | | | "USB Vendor Name" = "Apple Computer"
+ | | | | "Device Speed" = 1
+ | | | | "idVendor" = 1452
+ | | | | "Requested Power" = 20
+ | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x100000229, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o Apple Internal Keyboard at 0 <class IOUSBInterface, id 0x10000022b, registered, matched, active, busy 0 (520 ms), retain 8>
+ | | | | +-o AppleUSBTCKeyboard <class AppleUSBTCKeyboard, id 0x100000232, registered, matched, active, busy 0 (101 ms), retain 8>
+ | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000238, registered, matched, active, busy 0 (6 ms), retain 6>
+ | | | | +-o AppleUSBTCKeyEventDriver <class AppleUSBTCKeyEventDriver, id 0x100000239, registered, matched, active, busy 0 (1 ms), retain 8>
+ | | | | +-o IOHIDKeyboard <class IOHIDKeyboard, id 0x10000023b, registered, matched, active, busy 0 (0 ms), retain 8>
+ | | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 16>
+ | | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 15>
+ | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o Touchpad at 1 <class IOUSBInterface, id 0x10000022c, registered, matched, active, busy 0 (382 ms), retain 7>
+ | | | | +-o AppleUSBGrIIITrackpad <class AppleUSBGrIIITrackpad, id 0x10000023d, registered, matched, active, busy 0 (117 ms), retain 16>
+ | | | | +-o RawDataReporter <class RawDataReporter, id 0x10000023e, registered, matched, active, busy 0 (105 ms), retain 6>
+ | | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x10000023f, registered, matched, active, busy 0 (3 ms), retain 5>
+ | | | | +-o IOHIDPointingDevice <class IOHIDPointingDevice, id 0x100000241, registered, matched, active, busy 0 (107 ms), retain 6>
+ | | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000242, registered, matched, active, busy 0 (3 ms), retain 5>
+ | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 15>
+ | | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o BaselineReporter <class BaselineReporter, id 0x100000244, registered, matched, active, busy 0 (108 ms), retain 6>
+ | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000245, registered, matched, active, busy 0 (3 ms), retain 5>
+ | | | +-o Apple Internal Keyboard at 2 <class IOUSBInterface, id 0x10000022d, registered, matched, active, busy 0 (202 ms), retain 8>
+ | | | +-o AppleUSBTCKeyboard <class AppleUSBTCKeyboard, id 0x100000247, registered, matched, active, busy 0 (110 ms), retain 8>
+ | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000248, registered, matched, active, busy 0 (103 ms), retain 6>
+ | | | +-o IOHIDEventDriver <class IOHIDEventDriver, id 0x1000002a1, registered, matched, active, busy 0 (3 ms), retain 8>
+ | | | +-o IOHIDConsumer <class IOHIDConsumer, id 0x1000002a2, registered, matched, active, busy 0 (1 ms), retain 8>
+ | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 16>
+ | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 15>
+ | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
+ | | +-o USB2 at 1D,1 <class IOPCIDevice, id 0x100000181, registered, matched, active, busy 0 (352 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001f3, registered, matched, active, busy 0 (13 ms), retain 8>
+ | | | +-o UHCI Root Hub Simulation at 1D,1 <class IOUSBRootHubDevice, id 0x100000206, registered, matched, active, busy 0 (10 ms), retain 8>
+ | | | | {
+ | | | | "sessionID" = 564210044
+ | | | | "iManufacturer" = 2
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 32773
+ | | | | "bcdDevice" = 272
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 8
+ | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | "iProduct" = 1
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 1
+ | | | | "bDeviceClass" = 9
+ | | | | "locationID" = 1023410176
+ | | | | "bDeviceSubClass" = 0
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "Ports" = 2
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 0
+ | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | "Device Speed" = 1
+ | | | | "idVendor" = 1452
+ | | | | "AAPL,current-in-sleep" = 1000
+ | | | | "Requested Power" = 0
+ | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o AppleUSBHub <class AppleUSBHub, id 0x10000020b, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000020d, !registered, !matched, active, busy 0, retain 7>
+ | | +-o USB3 at 1D,2 <class IOPCIDevice, id 0x100000185, registered, matched, active, busy 0 (647 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001c8, registered, matched, active, busy 0 (297 ms), retain 9>
+ | | | +-o UHCI Root Hub Simulation at 1D,2 <class IOUSBRootHubDevice, id 0x100000209, registered, matched, active, busy 0 (20 ms), retain 10>
+ | | | | | {
+ | | | | | "sessionID" = 572462640
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 32773
+ | | | | | "bcdDevice" = 272
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 8
+ | | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 1
+ | | | | | "bDeviceClass" = 9
+ | | | | | "locationID" = 1560281088
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 2
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "bDeviceProtocol" = 0
+ | | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | | "Device Speed" = 1
+ | | | | | "idVendor" = 1452
+ | | | | | "AAPL,current-in-sleep" = 1000
+ | | | | | "Requested Power" = 0
+ | | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000218, !registered, !matched, active, busy 0, retain 8>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000021a, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o IR Receiver at 5d200000 <class IOUSBDevice, id 0x10000022a, registered, matched, active, busy 0 (276 ms), retain 9>
+ | | | | {
+ | | | | "sessionID" = 944991920
+ | | | | "iManufacturer" = 1
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 33344
+ | | | | "bcdDevice" = 272
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 8
+ | | | | "USB Product Name" = "IR Receiver"
+ | | | | "iProduct" = 2
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 2
+ | | | | "bDeviceClass" = 0
+ | | | | "locationID" = 1562378240
+ | | | | "bDeviceSubClass" = 0
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "PortNum" = 2
+ | | | | "non-removable" = "yes"
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 0
+ | | | | "Need contiguous memory for isoch" = Yes
+ | | | | "USB Vendor Name" = "Apple Computer, Inc."
+ | | | | "Device Speed" = 1
+ | | | | "idVendor" = 1452
+ | | | | "Requested Power" = 50
+ | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x10000022f, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000230, registered, matched, active, busy 0 (261 ms), retain 8>
+ | | | +-o AppleIRController <class AppleIRController, id 0x100000235, registered, matched, active, busy 0 (112 ms), retain 8>
+ | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000236, registered, matched, active, busy 0 (3 ms), retain 5>
+ | | | +-o IOHIDLibUserClient <class IOHIDLibUserClient, id 0x10000035d, !registered, !matched, active, busy 0, retain 6>
+ | | +-o USB4 at 1D,3 <class IOPCIDevice, id 0x100000189, registered, matched, active, busy 0 (2390 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001c9, registered, matched, active, busy 0 (2038 ms), retain 9>
+ | | | +-o UHCI Root Hub Simulation at 1D,3 <class IOUSBRootHubDevice, id 0x10000020e, registered, matched, active, busy 0 (8 ms), retain 10>
+ | | | | | {
+ | | | | | "sessionID" = 575818003
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 32773
+ | | | | | "bcdDevice" = 272
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 8
+ | | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 1
+ | | | | | "bDeviceClass" = 9
+ | | | | | "locationID" = 2097152000
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 2
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "bDeviceProtocol" = 0
+ | | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | | "Device Speed" = 1
+ | | | | | "idVendor" = 1452
+ | | | | | "AAPL,current-in-sleep" = 1000
+ | | | | | "Requested Power" = 0
+ | | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000212, !registered, !matched, active, busy 0, retain 8>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000215, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o WirelessControllerDevice at 7d100000 <class IOUSBDevice, id 0x100000256, registered, matched, active, busy 0 (250 ms), retain 10>
+ | | | | {
+ | | | | "sessionID" = 3290864968
+ | | | | "iManufacturer" = 0
+ | | | | "idProduct" = 33285
+ | | | | "bDeviceClass" = 224
+ | | | | "bcdDevice" = 6501
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 64
+ | | | | "iProduct" = 0
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 2
+ | | | | "bNumConfigurations" = 1
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "locationID" = 2098200576
+ | | | | "bDeviceSubClass" = 1
+ | | | | "USB Product Name" = "Bluetooth USB Host Controller"
+ | | | | "non-removable" = "yes"
+ | | | | "PortNum" = 1
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 1
+ | | | | "Need contiguous memory for isoch" = Yes
+ | | | | "Device Speed" = 1
+ | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | "idVendor" = 1452
+ | | | | "Requested Power" = 0
+ | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o CSRUSBBluetoothHCIController <class CSRUSBBluetoothHCIController, id 0x100000258, registered, matched, active, busy 0 (0 ms), retain 10>
+ | | | | +-o IOBluetoothHCIUserClient <class IOBluetoothHCIUserClient, id 0x100000270, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOBluetoothHCIUserClient <class IOBluetoothHCIUserClient, id 0x1000003ba, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000025a, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOUSBInterface at 1 <class IOUSBInterface, id 0x10000025b, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOUSBInterface at 2 <class IOUSBInterface, id 0x10000025c, !registered, !matched, active, busy 0, retain 6>
+ | | +-o USB7 at 1D,7 <class IOPCIDevice, id 0x10000018d, registered, matched, active, busy 0 (2564 ms), retain 13>
+ | | | +-o IOService <class IOService, id 0x1000001ca, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o AppleUSBEHCI <class AppleUSBEHCI, id 0x1000001cb, registered, matched, active, busy 0 (2383 ms), retain 14>
+ | | | +-o EHCI Root Hub Simulation at 1D,7 <class IOUSBRootHubDevice, id 0x1000001d7, registered, matched, active, busy 0 (32 ms), retain 12>
+ | | | | | {
+ | | | | | "sessionID" = 410970048
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 32774
+ | | | | | "bcdDevice" = 512
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 64
+ | | | | | "USB Product Name" = "EHCI Root Hub Simulation"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 1
+ | | | | | "bDeviceClass" = 9
+ | | | | | "locationID" = 18446744073659219968
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 8
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "bDeviceProtocol" = 1
+ | | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | | "Device Speed" = 2
+ | | | | | "idVendor" = 1452
+ | | | | | "AAPL,current-in-sleep" = 4000
+ | | | | | "Requested Power" = 0
+ | | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x1000001e8, registered, matched, active, busy 0 (0 ms), retain 9>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x1000001ea, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o Built-in iSight at fd400000 <class IOUSBDevice, id 0x10000024e, registered, matched, active, busy 0 (50 ms), retain 9>
+ | | | | | {
+ | | | | | "sessionID" = 2717373407
+ | | | | | "iManufacturer" = 1
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 34049
+ | | | | | "bcdDevice" = 393
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 64
+ | | | | | "USB Product Name" = "Built-in iSight"
+ | | | | | "iProduct" = 2
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 2
+ | | | | | "bDeviceClass" = 255
+ | | | | | "locationID" = 18446744073663414272
+ | | | | | "bDeviceSubClass" = 255
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "PortNum" = 4
+ | | | | | "non-removable" = "yes"
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "bDeviceProtocol" = 255
+ | | | | | "USB Vendor Name" = "Micron"
+ | | | | | "Device Speed" = 2
+ | | | | | "idVendor" = 1452
+ | | | | | "Requested Power" = 50
+ | | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | | "kSuspendPort" = Yes
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x100000250, !registered, !matched, active, busy 0, retain 4>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000252, registered, matched, active, busy 0 (15 ms), retain 6>
+ | | | | +-o IOUSBInterface at 1 <class IOUSBInterface, id 0x100000253, registered, matched, active, busy 0 (15 ms), retain 6>
+ | | | +-o Flash Disk at fd300000 <class IOUSBDevice, id 0x100000408, registered, matched, active, busy 0 (499 ms), retain 8>
+ | | | | {
+ | | | | "sessionID" = 3995793432240
+ | | | | "iManufacturer" = 1
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 24613
+ | | | | "bcdDevice" = 256
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 64
+ | | | | "USB Product Name" = "Flash Disk"
+ | | | | "iProduct" = 2
+ | | | | "iSerialNumber" = 3
+ | | | | "USB Address" = 3
+ | | | | "bDeviceClass" = 0
+ | | | | "bDeviceSubClass" = 0
+ | | | | "locationID" = 18446744073662365696
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "kHasMSCInterface" = Yes
+ | | | | "PortNum" = 3
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 0
+ | | | | "uid" = "USB:197660250078C5C90000"
+ | | | | "USB Vendor Name" = "CBM"
+ | | | | "Device Speed" = 2
+ | | | | "idVendor" = 6518
+ | | | | "USB Serial Number" = "16270078C5C90000"
+ | | | | "Requested Power" = 50
+ | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x10000040a, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000040b, registered, matched, active, busy 0 (482 ms), retain 7>
+ | | | +-o IOUSBMassStorageClass <class IOUSBMassStorageClass, id 0x10000040d, registered, matched, active, busy 0 (177 ms), retain 8>
+ | | | +-o IOSCSIPeripheralDeviceNub <class IOSCSIPeripheralDeviceNub, id 0x10000040f, registered, matched, active, busy 0 (74 ms), retain 6>
+ | | | +-o IOSCSIPeripheralDeviceType00 <class IOSCSIPeripheralDeviceType00, id 0x100000410, !registered, !matched, active, busy 0 (20 ms), retain 7>
+ | | | +-o IOBlockStorageServices <class IOBlockStorageServices, id 0x100000413, registered, matched, active, busy 0 (20 ms), retain 5>
+ | | | +-o IOBlockStorageDriver <class IOBlockStorageDriver, id 0x100000414, registered, matched, active, busy 0 (18 ms), retain 7>
+ | | | +-o CBM Flash Disk Media <class IOMedia, id 0x100000415, registered, matched, active, busy 0 (16 ms), retain 10>
+ | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000416, registered, matched, active, busy 0 (2 ms), retain 5>
+ | | | +-o IOFDiskPartitionScheme <class IOFDiskPartitionScheme, id 0x100000419, !registered, !matched, active, busy 0 (10 ms), retain 6>
+ | | | +-o Untitled 1 at 1 <class IOMedia, id 0x10000041b, registered, matched, active, busy 0 (10 ms), retain 9>
+ | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000041c, registered, matched, active, busy 0 (2 ms), retain 6>
+ | | +-o PCIB at 1E <class IOPCIDevice, id 0x100000197, registered, matched, active, busy 0 (712 ms), retain 11>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001cd, registered, matched, active, busy 0 (542 ms), retain 7>
+ | | | +-o FRWR at 3 <class IOPCIDevice, id 0x100000198, registered, matched, active, busy 0 (494 ms), retain 10>
+ | | | +-o AppleFWOHCI <class AppleFWOHCI, id 0x1000001d8, !registered, !matched, active, busy 0 (476 ms), retain 6>
+ | | | +-o IOFireWireController <class IOFireWireController, id 0x1000001da, registered, matched, active, busy 0 (476 ms), retain 9>
+ | | | +-o IOFireWireLocalNode <class IOFireWireLocalNode, id 0x100000214, registered, matched, active, busy 0 (476 ms), retain 12>
+ | | | +-o IOFireWireUserClientIniter <class IOFireWireUserClientIniter, id 0x100000216, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOFireWireUserClientIniter <class IOFireWireUserClientIniter, id 0x1000002b0, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOFireWireIP <class IOFireWireIP, id 0x1000002b1, registered, matched, active, busy 0 (224 ms), retain 5>
+ | | | +-o IOFWInterface <class IOFWInterface, id 0x1000002b9, registered, matched, active, busy 0 (224 ms), retain 10>
+ | | | +-o IONetworkStack <class IONetworkStack, id 0x1000001de, registered, matched, active, busy 0 (2 ms), retain 11>
+ | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x100000266, !registered, !matched, active, busy 0, retain 5>
+ | | +-o LPCB at 1F <class IOPCIDevice, id 0x100000199, registered, matched, active, busy 0 (5615 ms), retain 28>
+ | | | +-o AppleLPC <class AppleLPC, id 0x100000275, registered, matched, active, busy 0 (3 ms), retain 5>
+ | | +-o PATA at 1F,1 <class IOPCIDevice, id 0x10000019a, registered, matched, active, busy 0 (10462 ms), retain 13>
+ | | | +-o AppleIntelPIIXATARoot <class AppleIntelPIIXATARoot, id 0x1000001d1, !registered, !matched, active, busy 0 (10287 ms), retain 6>
+ | | | +-o PRID at 0 <class AppleIntelPIIXATAChannel, id 0x10000019b, registered, matched, active, busy 0 (10287 ms), retain 14>
+ | | | | +-o AppleIntelPIIXPATA <class AppleIntelPIIXPATA, id 0x1000001e2, registered, matched, active, busy 0 (10231 ms), retain 7>
+ | | | | +-o ATADeviceNub at 0 <class ATADeviceNub, id 0x1000001f5, registered, matched, active, busy 0 (10230 ms), retain 6>
+ | | | | +-o IOATAPIProtocolTransport <class IOATAPIProtocolTransport, id 0x1000001f8, registered, matched, active, busy 0 (10221 ms), retain 8>
+ | | | | +-o IOSCSIPeripheralDeviceNub <class IOSCSIPeripheralDeviceNub, id 0x1000001fb, registered, matched, active, busy 0 (10013 ms), retain 6>
+ | | | | +-o IOSCSIPeripheralDeviceType05 <class IOSCSIPeripheralDeviceType05, id 0x100000222, !registered, !matched, active, busy 0 (3701 ms), retain 7>
+ | | | | +-o IODVDServices <class IODVDServices, id 0x100000263, registered, matched, active, busy 0 (3701 ms), retain 6>
+ | | | | +-o IODVDBlockStorageDriver <class IODVDBlockStorageDriver, id 0x100000264, registered, matched, active, busy 0 (3699 ms), retain 7>
+ | | | | | +-o HL-DT-ST DVDRW GSA-S10N Media <class IODVDMedia, id 0x100000269, registered, matched, active, busy 0 (3698 ms), retain 10>
+ | | | | | +-o IODVDMediaBSDClient <class IODVDMediaBSDClient, id 0x10000026a, registered, matched, active, busy 0 (2 ms), retain 5>
+ | | | | | +-o IOApplePartitionScheme <class IOApplePartitionScheme, id 0x1000002f4, !registered, !matched, active, busy 0 (14 ms), retain 8>
+ | | | | | +-o Apple at 1 <class IOMedia, id 0x1000002f5, registered, matched, active, busy 0 (11 ms), retain 8>
+ | | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x1000002f8, registered, matched, active, busy 0 (5 ms), retain 5>
+ | | | | | +-o Macintosh at 2 <class IOMedia, id 0x1000002f6, registered, matched, active, busy 0 (12 ms), retain 8>
+ | | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x1000002f9, registered, matched, active, busy 0 (5 ms), retain 5>
+ | | | | | +-o Mac_OS_X at 3 <class IOMedia, id 0x1000002f7, registered, matched, active, busy 0 (14 ms), retain 9>
+ | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x1000002fa, registered, matched, active, busy 0 (5 ms), retain 6>
+ | | | | +-o SCSITaskUserClientIniter <class SCSITaskUserClientIniter, id 0x100000265, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o CHN1 at 1 <class AppleIntelPIIXATAChannel, id 0x1000001d2, registered, matched, active, busy 0 (75 ms), retain 6>
+ | | +-o SATA at 1F,2 <class IOPCIDevice, id 0x10000019e, registered, matched, active, busy 0 (387 ms), retain 13>
+ | | | +-o AppleAHCI <class AppleAHCI, id 0x1000001d3, registered, matched, active, busy 0 (208 ms), retain 7>
+ | | | +-o PRT2 at 2 <class AppleAHCIPort, id 0x1000001a0, registered, matched, active, busy 0 (170 ms), retain 10>
+ | | | +-o IOAHCIDevice at 0 <class IOAHCIDevice, id 0x1000001eb, registered, matched, active, busy 0 (170 ms), retain 11>
+ | | | +-o AppleAHCIDiskDriver <class AppleAHCIDiskDriver, id 0x1000001ec, registered, matched, active, busy 0 (51 ms), retain 6>
+ | | | +-o IOAHCIBlockStorageDevice <class IOAHCIBlockStorageDevice, id 0x100000203, registered, matched, active, busy 0 (51 ms), retain 6>
+ | | | +-o IOBlockStorageDriver <class IOBlockStorageDriver, id 0x100000207, registered, matched, active, busy 0 (49 ms), retain 7>
+ | | | +-o FUJITSU MHY2120BH Media <class IOMedia, id 0x100000208, registered, matched, active, busy 0 (49 ms), retain 10>
+ | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000020f, registered, matched, active, busy 0 (0 ms), retain 5>
+ | | | +-o IOGUIDPartitionScheme <class IOGUIDPartitionScheme, id 0x10000021b, !registered, !matched, active, busy 0 (13 ms), retain 7>
+ | | | +-o EFI System Partition at 1 <class IOMedia, id 0x10000021e, registered, matched, active, busy 0 (3 ms), retain 8>
+ | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000220, registered, matched, active, busy 0 (1 ms), retain 5>
+ | | | +-o Untitled at 2 <class IOMedia, id 0x10000021f, registered, matched, active, busy 0 (13 ms), retain 10>
+ | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000221, registered, matched, active, busy 0 (1 ms), retain 6>
+ | | +-o SBUS at 1F,3 <class IOPCIDevice, id 0x1000001a1, registered, matched, active, busy 0 (203 ms), retain 8>
+ | +-o PDRC <class IOACPIPlatformDevice, id 0x100000130, registered, matched, active, busy 0 (9 ms), retain 6>
+ | +-o SMC <class IOACPIPlatformDevice, id 0x10000015f, registered, matched, active, busy 0 (451 ms), retain 9>
+ | | +-o AppleSMC <class AppleSMC, id 0x1000002ae, registered, matched, active, busy 0 (191 ms), retain 6>
+ | | +-o SMCWatchDogTimer <class SMCWatchDogTimer, id 0x1000002b3, registered, matched, active, busy 0 (129 ms), retain 5>
+ | +-o SMS0 <class IOACPIPlatformDevice, id 0x100000160, registered, matched, active, busy 0 (377 ms), retain 7>
+ | | +-o SMCMotionSensor <class SMCMotionSensor, id 0x1000002dc, registered, matched, active, busy 0 (2 ms), retain 5>
+ | +-o EC <class IOACPIPlatformDevice, id 0x100000161, registered, matched, active, busy 0 (245 ms), retain 10>
+ | | +-o AppleACPIEC <class AppleACPIEC, id 0x100000124, !registered, !matched, active, busy 0, retain 6>
+ | +-o SMB0 <class IOACPIPlatformDevice, id 0x100000162, registered, matched, active, busy 0 (34 ms), retain 9>
+ | | +-o AppleECSMBusController <class AppleECSMBusController, id 0x1000001ed, registered, matched, active, busy 0 (16 ms), retain 5>
+ | | +-o AppleSmartBatteryManager <class AppleSmartBatteryManager, id 0x1000001ee, registered, matched, active, busy 0 (3 ms), retain 6>
+ | | +-o AppleSmartBattery <class AppleSmartBattery, id 0x1000001f0, registered, matched, active, busy 0 (0 ms), retain 5>
+ | +-o SBS0 <class IOACPIPlatformDevice, id 0x100000163, registered, matched, active, busy 0 (19 ms), retain 6>
+ | +-o DMAC <class IOACPIPlatformDevice, id 0x100000164, registered, matched, active, busy 0 (21 ms), retain 6>
+ | +-o FWHD <class IOACPIPlatformDevice, id 0x100000165, registered, matched, active, busy 0 (22 ms), retain 6>
+ | +-o HPET <class IOACPIPlatformDevice, id 0x100000166, registered, matched, active, busy 0 (24 ms), retain 7>
+ | | +-o AppleHPET <class AppleHPET, id 0x1000001bc, !registered, !matched, active, busy 0, retain 4>
+ | +-o IPIC <class IOACPIPlatformDevice, id 0x100000167, registered, matched, active, busy 0 (25 ms), retain 6>
+ | +-o MATH <class IOACPIPlatformDevice, id 0x100000168, registered, matched, active, busy 0 (26 ms), retain 6>
+ | +-o LDRC <class IOACPIPlatformDevice, id 0x100000169, registered, matched, active, busy 0 (27 ms), retain 6>
+ | +-o RTC <class IOACPIPlatformDevice, id 0x10000016a, registered, matched, active, busy 0 (38 ms), retain 8>
+ | | +-o AppleRTC <class AppleRTC, id 0x1000001bd, registered, matched, active, busy 0 (1 ms), retain 6>
+ | +-o TIMR <class IOACPIPlatformDevice, id 0x10000016b, registered, matched, active, busy 0 (29 ms), retain 6>
+ | +-o AppleEFIRuntime <class AppleEFIRuntime, id 0x1000001be, registered, matched, active, busy 0 (297 ms), retain 7>
+ | | +-o AppleEFINVRAM <class AppleEFINVRAM, id 0x1000001bf, registered, matched, active, busy 0 (1 ms), retain 7>
+ | +-o IOPCIMessagedInterruptController <class IOPCIMessagedInterruptController, id 0x1000001c1, registered, matched, active, busy 0 (2 ms), retain 6>
+ | +-o AppleRawIOAddressSpace <class AppleRawIOAddressSpace, id 0x10000028a, registered, matched, active, busy 0 (2 ms), retain 4>
+ | +-o AppleRawPhysicalMemoryAddressSpace <class AppleRawPhysicalMemoryAddressSpace, id 0x10000028b, registered, matched, active, busy 0 (4 ms), retain 4>
+ +-o IOResources <class IOResources, id 0x100000113, registered, matched, active, busy 0 (824 ms), retain 24>
+ +-o AppleIntelCPUPowerManagement <class AppleIntelCPUPowerManagement, id 0x10000011b, registered, matched, active, busy 0 (252 ms), retain 5>
+ | +-o AppleIntelCPUPowerManagementClient <class AppleIntelCPUPowerManagementClient, id 0x100000120, !registered, !matched, active, busy 0, retain 4>
+ +-o IOHDIXController <class IOHDIXController, id 0x10000011c, registered, matched, active, busy 0 (2 ms), retain 4>
+ +-o com_apple_AppleFSCompression_AppleFSCompressionTypeZlib <class com_apple_AppleFSCompression_AppleFSCompressionTypeZlib, id 0x1000001dc, !registered, !matched, active, busy 0, retain 4>
+ +-o com_apple_BootCache <class com_apple_BootCache, id 0x1000001dd, !registered, !matched, active, busy 0, retain 4>
+ +-o IONetworkStack <class IONetworkStack, id 0x1000001de, registered, matched, active, busy 0 (2 ms), retain 11>
+ | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x100000266, !registered, !matched, active, busy 0, retain 5>
+ +-o IOHIDSystem <class IOHIDSystem, id 0x1000001df, registered, matched, active, busy 0 (3 ms), retain 15>
+ | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000031a, !registered, !matched, active, busy 0, retain 5>
+ | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000031b, !registered, !matched, active, busy 0, retain 5>
+ | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
+ | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000032b, !registered, !matched, active, busy 0, retain 5>
+ +-o AppleProfileOSHooks <class AppleProfileOSHooks, id 0x100000281, registered, matched, active, busy 0 (187 ms), retain 15>
+ | +-o AppleProfileTimeTrigger <class AppleProfileTimeTrigger, id 0x10000028f, registered, matched, active, busy 0 (168 ms), retain 6>
+ | +-o AppleProfilePMITrigger <class AppleProfilePMITrigger, id 0x100000290, registered, matched, active, busy 0 (168 ms), retain 6>
+ | +-o AppleOSXPerformanceMonitor <class AppleOSXPerformanceMonitor, id 0x100000291, !registered, !matched, active, busy 0 (173 ms), retain 6>
+ | | +-o AppleOSXPerformanceCounter <class AppleOSXPerformanceCounter, id 0x10000029c, registered, matched, active, busy 0 (170 ms), retain 6>
+ | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 18>
+ | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | | +-o AppleOSXPerformanceCounter <class AppleOSXPerformanceCounter, id 0x10000029d, registered, matched, active, busy 0 (173 ms), retain 6>
+ | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 18>
+ | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x100000292, registered, matched, active, busy 0 (175 ms), retain 17>
+ | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x1000002d4, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileKEventTrigger <class AppleProfileKEventTrigger, id 0x100000293, registered, matched, active, busy 0 (175 ms), retain 6>
+ | +-o AppleProfileManualTrigger <class AppleProfileManualTrigger, id 0x100000294, registered, matched, active, busy 0 (2 ms), retain 6>
+ | +-o AppleProfileCallstackAction <class AppleProfileCallstackAction, id 0x100000295, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileKEventAction <class AppleProfileKEventAction, id 0x100000296, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileRegisterStateAction <class AppleProfileRegisterStateAction, id 0x100000297, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileThreadInfoAction <class AppleProfileThreadInfoAction, id 0x100000298, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileTimestampAction <class AppleProfileTimestampAction, id 0x100000299, !registered, !matched, active, busy 0, retain 5>
+ +-o com_apple_driver_AudioIPCDevice <class com_apple_driver_AudioIPCDevice, id 0x100000282, registered, matched, active, busy 0 (165 ms), retain 6>
+ | +-o com_apple_driver_AudioIPCEngine <class com_apple_driver_AudioIPCEngine, id 0x10000028c, registered, matched, active, busy 0 (164 ms), retain 9>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000333, !registered, !matched, active, busy 0, retain 6>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000365, !registered, !matched, active, busy 0, retain 6>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000394, !registered, !matched, active, busy 0, retain 6>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003a4, !registered, !matched, active, busy 0, retain 6>
+ +-o CHUDKernLib <class CHUDKernLib, id 0x100000283, registered, matched, active, busy 0 (170 ms), retain 4>
+ +-o CHUDProf <class CHUDProf, id 0x100000284, registered, matched, active, busy 0 (307 ms), retain 4>
+ +-o CHUDUtils <class CHUDUtils, id 0x100000285, registered, matched, active, busy 0 (310 ms), retain 4>
+ +-o Dont_Steal_Mac_OS_X <class Dont_Steal_Mac_OS_X, id 0x100000286, !registered, !matched, active, busy 0, retain 5>
+ +-o IOBluetoothSerialManager <class IOBluetoothSerialManager, id 0x100000287, registered, matched, active, busy 0 (376 ms), retain 7>
+ | +-o IOBluetoothSerialClient <class IOBluetoothSerialClient, id 0x1000002d3, !registered, !matched, active, busy 0 (133 ms), retain 5>
+ | | +-o IOBluetoothSerialClientSerialStreamSync <class IOBluetoothSerialClientSerialStreamSync, id 0x1000002d5, registered, matched, active, busy 0 (133 ms), retain 5>
+ | | +-o IOSerialBSDClient <class IOSerialBSDClient, id 0x1000002df, registered, matched, active, busy 0 (6 ms), retain 4>
+ | +-o IOBluetoothSerialClient <class IOBluetoothSerialClient, id 0x1000002de, !registered, !matched, active, busy 0 (76 ms), retain 5>
+ | +-o IOBluetoothSerialClientModemStreamSync <class IOBluetoothSerialClientModemStreamSync, id 0x1000002e0, registered, matched, active, busy 0 (76 ms), retain 5>
+ | +-o IOSerialBSDClient <class IOSerialBSDClient, id 0x1000002e8, registered, matched, active, busy 0 (6 ms), retain 4>
+ +-o IODisplayWrangler <class IODisplayWrangler, id 0x100000288, registered, matched, active, busy 0 (169 ms), retain 7>
+ | +-o IOAccelerationUserClient <class IOAccelerationUserClient, id 0x100000370, !registered, !matched, active, busy 0, retain 5>
+ +-o IOSurfaceRoot <class IOSurfaceRoot, id 0x100000289, registered, matched, active, busy 0 (171 ms), retain 5>
+ +-o AppleSCSISubsystemGlobals <class AppleSCSISubsystemGlobals, id 0x1000002fd, registered, matched, active, busy 0 (1 ms), retain 5>
diff --git a/resources/macos/ioreg/IOUSBDevice2 b/resources/macos/ioreg/IOUSBDevice2
new file mode 100644
index 0000000..7381f42
--- /dev/null
+++ b/resources/macos/ioreg/IOUSBDevice2
@@ -0,0 +1,976 @@
++-o Root <class IORegistryEntry, id 0x100000100, retain 15>
+ +-o iMac7,1 <class IOPlatformExpertDevice, id 0x100000110, registered, matched, active, busy 0 (12850 ms), retain 23>
+ +-o AppleACPIPlatformExpert <class AppleACPIPlatformExpert, id 0x100000111, registered, matched, active, busy 0 (10089 ms), retain 33>
+ | +-o IOPMrootDomain <class IOPMrootDomain, id 0x100000114, registered, matched, active, busy 0 (10 ms), retain 54>
+ | | +-o IORootParent <class IORootParent, id 0x100000115, !registered, !matched, active, busy 0, retain 7>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000002ab, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000002ac, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000002ad, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000002ae, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000002b0, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000030c, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000037a, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000384, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000398, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003d5, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003d8, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003e9, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003ea, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003f3, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003f4, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003f5, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x1000003f9, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000410, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000412, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000413, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000414, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000432, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000434, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000438, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000459, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000046e, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000470, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000476, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000478, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x100000479, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000047a, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000047b, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RootDomainUserClient <class RootDomainUserClient, id 0x10000047d, !registered, !matched, active, busy 0, retain 5>
+ | +-o cpus <class IOPlatformDevice, id 0x100000117, registered, matched, active, busy 0 (3 ms), retain 7>
+ | +-o CPU0 at 0 <class IOACPIPlatformDevice, id 0x100000118, registered, matched, active, busy 0 (173 ms), retain 7>
+ | | +-o AppleACPICPU <class AppleACPICPU, id 0x10000011d, registered, matched, active, busy 0 (165 ms), retain 9>
+ | | +-o AppleACPICPUInterruptController <class AppleACPICPUInterruptController, id 0x10000011f, registered, matched, active, busy 0 (0 ms), retain 5>
+ | | +-o ACPI_SMC_PlatformPlugin <class ACPI_SMC_PlatformPlugin, id 0x1000002ba, registered, matched, active, busy 0 (13 ms), retain 9>
+ | | +-o AppleIntelMeromPerformanceMonitor <class AppleIntelMeromPerformanceMonitor, id 0x1000002bb, !registered, !matched, active, busy 0 (83 ms), retain 9>
+ | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002f5, registered, matched, active, busy 0 (62 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x1000002f6, registered, matched, active, busy 0 (64 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002f7, registered, matched, active, busy 0 (66 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002f8, registered, matched, active, busy 0 (65 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x1000002f9, registered, matched, active, busy 0 (83 ms), retain 7>
+ | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | +-o AppleIntelMeromSPR <class AppleIntelMeromSPR, id 0x1000002ee, registered, matched, active, busy 0 (67 ms), retain 4>
+ | +-o CPU1 at 1 <class IOACPIPlatformDevice, id 0x100000119, registered, matched, active, busy 0 (169 ms), retain 7>
+ | | +-o AppleACPICPU <class AppleACPICPU, id 0x10000011e, registered, matched, active, busy 0 (155 ms), retain 7>
+ | | +-o AppleIntelMeromPerformanceMonitor <class AppleIntelMeromPerformanceMonitor, id 0x1000002ce, !registered, !matched, active, busy 0 (75 ms), retain 9>
+ | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x100000301, registered, matched, active, busy 0 (68 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromGeneralPurposeCounter <class AppleIntelMeromGeneralPurposeCounter, id 0x100000302, registered, matched, active, busy 0 (69 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x100000303, registered, matched, active, busy 0 (72 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x100000304, registered, matched, active, busy 0 (73 ms), retain 7>
+ | | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o AppleIntelMeromFixedCounter <class AppleIntelMeromFixedCounter, id 0x100000305, registered, matched, active, busy 0 (75 ms), retain 7>
+ | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | +-o AppleIntelMeromSPR <class AppleIntelMeromSPR, id 0x1000002fa, registered, matched, active, busy 0 (75 ms), retain 4>
+ | +-o io-apic at fec00000 <class IOACPIPlatformDevice, id 0x10000011a, registered, matched, active, busy 0 (3 ms), retain 6>
+ | | +-o AppleAPICInterruptController <class AppleAPICInterruptController, id 0x100000121, registered, matched, active, busy 0 (0 ms), retain 11>
+ | +-o AppleACPIEventController <class AppleACPIEventController, id 0x100000122, !registered, !matched, active, busy 0, retain 6>
+ | +-o boot-ec <class IOACPIPlatformDevice, id 0x100000123, registered, matched, active, busy 0 (1 ms), retain 6>
+ | | +-o AppleACPIEC <class AppleACPIEC, id 0x100000124, !registered, !matched, active, busy 0, retain 6>
+ | +-o bios <class IOPlatformDevice, id 0x100000125, registered, matched, active, busy 0 (4 ms), retain 5>
+ | | +-o AppleSMBIOS <class AppleSMBIOS, id 0x100000126, registered, matched, active, busy 0 (1 ms), retain 4>
+ | +-o PNLF <class IOACPIPlatformDevice, id 0x10000012a, registered, matched, active, busy 0 (34 ms), retain 7>
+ | | +-o AppleIntelPanelA <class AppleIntelPanelA, id 0x1000002c5, !registered, !matched, active, busy 0, retain 5>
+ | +-o PWRB <class IOACPIPlatformDevice, id 0x10000012b, registered, matched, active, busy 0 (2 ms), retain 8>
+ | | +-o AppleACPIButton <class AppleACPIButton, id 0x1000001af, !registered, !matched, active, busy 0, retain 4>
+ | +-o SLPB <class IOACPIPlatformDevice, id 0x10000012c, registered, matched, active, busy 0 (3 ms), retain 7>
+ | | +-o AppleACPIButton <class AppleACPIButton, id 0x1000001b0, !registered, !matched, active, busy 0, retain 4>
+ | +-o PCI0 <class IOACPIPlatformDevice, id 0x10000012d, registered, matched, active, busy 0 (10058 ms), retain 45>
+ | | +-o AppleACPIPCI <class AppleACPIPCI, id 0x1000001b1, registered, matched, active, busy 0 (10050 ms), retain 44>
+ | | +-o MCHC at 0 <class IOPCIDevice, id 0x100000178, registered, matched, active, busy 0 (164 ms), retain 8>
+ | | +-o PEGP at 1 <class IOPCIDevice, id 0x100000179, registered, matched, active, busy 0 (292 ms), retain 11>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001ce, registered, matched, active, busy 0 (272 ms), retain 7>
+ | | | +-o GFX0 at 0 <class IOPCIDevice, id 0x10000017a, registered, matched, active, busy 0 (271 ms), retain 21>
+ | | | +-o ATI2600Controller <class ATI2600Controller, id 0x1000002b1, registered, matched, active, busy 0 (61 ms), retain 4>
+ | | | +-o ATY,Hypoprion at 0 <class AtiFbStub, id 0x1000002b5, registered, matched, active, busy 0 (159 ms), retain 7>
+ | | | | +-o ATY_Hypoprion <class ATIFramebuffer, id 0x100000306, registered, matched, active, busy 0 (87 ms), retain 15>
+ | | | | +-o AppleMCCSControlModule <class AppleMCCSControlModule, id 0x100000312, registered, matched, active, busy 0 (5 ms), retain 5>
+ | | | | | +-o AppleMCCSParameterHandler <class AppleMCCSParameterHandler, id 0x100000314, registered, matched, active, busy 0 (4 ms), retain 4>
+ | | | | +-o AppleUpstreamUserClientDriver <class AppleUpstreamUserClientDriver, id 0x100000313, registered, matched, active, busy 0 (1 ms), retain 4>
+ | | | | +-o AMDNDRVService <class AtiAppServices, id 0x10000036e, registered, matched, active, busy 0 (1 ms), retain 5>
+ | | | | +-o IOFramebufferI2CInterface <class IOFramebufferI2CInterface, id 0x10000036f, registered, matched, active, busy 0 (1 ms), retain 5>
+ | | | | +-o display0 <class IODisplayConnect, id 0x100000370, registered, matched, active, busy 0 (2 ms), retain 5>
+ | | | | | +-o AppleBacklightDisplay <class AppleBacklightDisplay, id 0x100000371, registered, matched, active, busy 0 (1 ms), retain 8>
+ | | | | +-o IOFramebufferUserClient <class IOFramebufferUserClient, id 0x100000376, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOFramebufferSharedUserClient <class IOFramebufferSharedUserClient, id 0x100000483, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATY,Hypoprion at 1 <class AtiFbStub, id 0x1000002b6, registered, matched, active, busy 0 (13 ms), retain 7>
+ | | | | +-o ATY_Hypoprion <class ATIFramebuffer, id 0x100000318, registered, matched, active, busy 0 (11 ms), retain 12>
+ | | | | +-o AppleMCCSControlModule <class AppleMCCSControlModule, id 0x10000031b, registered, matched, active, busy 0 (4 ms), retain 5>
+ | | | | | +-o AppleMCCSParameterHandler <class AppleMCCSParameterHandler, id 0x10000031d, registered, matched, active, busy 0 (1 ms), retain 4>
+ | | | | +-o AppleUpstreamUserClientDriver <class AppleUpstreamUserClientDriver, id 0x10000031c, registered, matched, active, busy 0 (3 ms), retain 4>
+ | | | | +-o AMDNDRVService <class AtiAppServices, id 0x100000374, registered, matched, active, busy 0 (0 ms), retain 5>
+ | | | | +-o IOFramebufferI2CInterface <class IOFramebufferI2CInterface, id 0x100000375, registered, matched, active, busy 0 (1 ms), retain 5>
+ | | | | +-o IOFramebufferUserClient <class IOFramebufferUserClient, id 0x100000378, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATISupport <class ATISupport, id 0x1000002b2, registered, matched, active, busy 0 (1 ms), retain 4>
+ | | | +-o ATIRadeonX2000 <class ATIRadeonX2000, id 0x1000002b3, registered, matched, active, busy 0 (4 ms), retain 16>
+ | | | +-o IOService <class IOService, id 0x100000322, registered, matched, active, busy 0 (4 ms), retain 6>
+ | | | | +-o IOHWSensor <class IOHWSensor, id 0x100000323, registered, matched, active, busy 0 (1 ms), retain 7>
+ | | | +-o ATIR6002DContext <class ATIR6002DContext, id 0x100000377, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR6002DContext <class ATIR6002DContext, id 0x100000379, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR600Device <class ATIR600Device, id 0x10000037f, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR600GLContext <class ATIR600GLContext, id 0x100000380, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR600Surface <class ATIR600Surface, id 0x1000003f6, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR600Surface <class ATIR600Surface, id 0x1000003fa, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR600GLContext <class ATIR600GLContext, id 0x1000003fb, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR600Surface <class ATIR600Surface, id 0x100000408, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR600Surface <class ATIR600Surface, id 0x100000409, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o ATIR600Surface <class ATIR600Surface, id 0x100000411, !registered, !matched, active, busy 0, retain 5>
+ | | +-o UHC4 at 1A <class IOPCIDevice, id 0x100000191, registered, matched, active, busy 0 (2874 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001d2, registered, matched, active, busy 0 (2688 ms), retain 10>
+ | | | +-o UHCI Root Hub Simulation at 1A <class IOUSBRootHubDevice, id 0x100000216, registered, matched, active, busy 0 (338 ms), retain 12>
+ | | | | | {
+ | | | | | "sessionID" = 372634795
+ | | | | | "AAPL,current-extra-in-sleep" = 500
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 32773
+ | | | | | "bcdDevice" = 272
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 8
+ | | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 1
+ | | | | | "bDeviceClass" = 9
+ | | | | | "locationID" = 436207616
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 2
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "AAPL,max-port-current-in-sleep" = 1000
+ | | | | | "bDeviceProtocol" = 0
+ | | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | | "Device Speed" = 1
+ | | | | | "idVendor" = 1452
+ | | | | | "AAPL,current-in-sleep" = 1000
+ | | | | | "Requested Power" = 0
+ | | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000218, !registered, !matched, active, busy 0, retain 10>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000021a, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o NetScroll + Mini Traveler at 1a200000 <class IOUSBDevice, id 0x100000270, registered, matched, active, busy 0 (730 ms), retain 9>
+ | | | | | {
+ | | | | | "sessionID" = 1035836159
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 54
+ | | | | | "bcdDevice" = 272
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 8
+ | | | | | "USB Product Name" = "NetScroll + Mini Traveler"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 3
+ | | | | | "bDeviceClass" = 0
+ | | | | | "locationID" = 438304768
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "PortNum" = 2
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "bDeviceProtocol" = 0
+ | | | | | "Need contiguous memory for isoch" = Yes
+ | | | | | "USB Vendor Name" = "Genius"
+ | | | | | "Device Speed" = 0
+ | | | | | "idVendor" = 1112
+ | | | | | "Requested Power" = 50
+ | | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x10000027a, !registered, !matched, active, busy 0, retain 4>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000280, registered, matched, active, busy 0 (706 ms), retain 8>
+ | | | | +-o IOUSBHIDDriver <class IOUSBHIDDriver, id 0x10000030a, registered, matched, active, busy 0 (20 ms), retain 7>
+ | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000316, registered, matched, active, busy 0 (13 ms), retain 6>
+ | | | | +-o IOHIDEventDriver <class IOHIDEventDriver, id 0x10000031e, registered, matched, active, busy 0 (3 ms), retain 8>
+ | | | | +-o IOHIDPointing <class IOHIDPointing, id 0x10000031f, registered, matched, active, busy 0 (1 ms), retain 7>
+ | | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x100000220, registered, matched, active, busy 0 (2 ms), retain 17>
+ | | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037c, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037d, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x100000220, registered, matched, active, busy 0 (2 ms), retain 16>
+ | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037c, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o WirelessControllerDevice at 1a100000 <class IOUSBDevice, id 0x10000029e, registered, matched, active, busy 0 (564 ms), retain 10>
+ | | | | {
+ | | | | "sessionID" = 3009829809
+ | | | | "iManufacturer" = 0
+ | | | | "idProduct" = 33286
+ | | | | "bDeviceClass" = 224
+ | | | | "bcdDevice" = 6501
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 64
+ | | | | "iProduct" = 0
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 2
+ | | | | "bNumConfigurations" = 1
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "locationID" = 437256192
+ | | | | "bDeviceSubClass" = 1
+ | | | | "USB Product Name" = "Bluetooth USB Host Controller"
+ | | | | "non-removable" = "yes"
+ | | | | "PortNum" = 1
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 1
+ | | | | "Need contiguous memory for isoch" = Yes
+ | | | | "Device Speed" = 1
+ | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | "idVendor" = 1452
+ | | | | "Requested Power" = 0
+ | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o CSRUSBBluetoothHCIController <class CSRUSBBluetoothHCIController, id 0x1000002a0, registered, matched, active, busy 0 (0 ms), retain 10>
+ | | | | +-o IOBluetoothHCIUserClient <class IOBluetoothHCIUserClient, id 0x10000032a, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOBluetoothHCIUserClient <class IOBluetoothHCIUserClient, id 0x100000433, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x1000002a2, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOUSBInterface at 1 <class IOUSBInterface, id 0x1000002a3, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOUSBInterface at 2 <class IOUSBInterface, id 0x1000002a4, !registered, !matched, active, busy 0, retain 6>
+ | | +-o UHC5 at 1A,1 <class IOPCIDevice, id 0x100000195, registered, matched, active, busy 0 (570 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001d3, registered, matched, active, busy 0 (377 ms), retain 8>
+ | | | +-o UHCI Root Hub Simulation at 1A,1 <class IOUSBRootHubDevice, id 0x10000021c, registered, matched, active, busy 0 (377 ms), retain 8>
+ | | | | {
+ | | | | "sessionID" = 380960109
+ | | | | "AAPL,current-extra-in-sleep" = 500
+ | | | | "iManufacturer" = 2
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 32773
+ | | | | "bcdDevice" = 272
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 8
+ | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | "iProduct" = 1
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 1
+ | | | | "bDeviceClass" = 9
+ | | | | "locationID" = 973078528
+ | | | | "bDeviceSubClass" = 0
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "Ports" = 2
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "AAPL,max-port-current-in-sleep" = 1000
+ | | | | "bDeviceProtocol" = 0
+ | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | "Device Speed" = 1
+ | | | | "idVendor" = 1452
+ | | | | "AAPL,current-in-sleep" = 1000
+ | | | | "Requested Power" = 0
+ | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000224, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000226, !registered, !matched, active, busy 0, retain 7>
+ | | +-o EHC2 at 1A,7 <class IOPCIDevice, id 0x1000001a1, registered, matched, active, busy 0 (671 ms), retain 12>
+ | | | +-o IOService <class IOService, id 0x1000001d4, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o AppleUSBEHCI <class AppleUSBEHCI, id 0x1000001d5, registered, matched, active, busy 0 (629 ms), retain 12>
+ | | | +-o EHCI Root Hub Simulation at 1A,7 <class IOUSBRootHubDevice, id 0x1000001e9, registered, matched, active, busy 0 (382 ms), retain 10>
+ | | | | | {
+ | | | | | "sessionID" = 228913729
+ | | | | | "AAPL,current-extra-in-sleep" = 500
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 32774
+ | | | | | "bcdDevice" = 512
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 64
+ | | | | | "USB Product Name" = "EHCI Root Hub Simulation"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 1
+ | | | | | "bDeviceClass" = 9
+ | | | | | "locationID" = 18446744073608888320
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "AAPL,current-extra" = 1000
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 4
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "AAPL,current-available" = 1500
+ | | | | | "bDeviceProtocol" = 1
+ | | | | | "AAPL,max-port-current-in-sleep" = 1000
+ | | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | | "Device Speed" = 2
+ | | | | | "idVendor" = 1452
+ | | | | | "AAPL,current-in-sleep" = 2000
+ | | | | | "Requested Power" = 0
+ | | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x1000001eb, registered, matched, active, busy 0 (0 ms), retain 8>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x1000001ed, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o Keyboard Hub at fa400000 <class IOUSBHubDevice, id 0x100000243, registered, matched, active, busy 0 (273 ms), retain 10>
+ | | | | | {
+ | | | | | "sessionID" = 565166469
+ | | | | | "iManufacturer" = 1
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 4102
+ | | | | | "bcdDevice" = 37909
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 64
+ | | | | | "USB Product Name" = "Keyboard Hub"
+ | | | | | "iProduct" = 2
+ | | | | | "iSerialNumber" = 3
+ | | | | | "USB Address" = 2
+ | | | | | "bDeviceClass" = 9
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "locationID" = 18446744073613082624
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 3
+ | | | | | "PortNum" = 4
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "ExtraPowerRequest" = 600
+ | | | | | "bDeviceProtocol" = 1
+ | | | | | "USB Vendor Name" = "Apple, Inc."
+ | | | | | "Device Speed" = 2
+ | | | | | "idVendor" = 1452
+ | | | | | "ExtraPowerForPorts" = 400
+ | | | | | "USB Serial Number" = "000000000000"
+ | | | | | "kHubPowerSequencingDelay" = Yes
+ | | | | | "Requested Power" = 150
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x10000024a, registered, matched, active, busy 0 (0 ms), retain 9>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000024c, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o Apple Keyboard at fa420000 <class IOUSBDevice, id 0x100000271, registered, matched, active, busy 0 (578 ms), retain 11>
+ | | | | {
+ | | | | "sessionID" = 1018522533
+ | | | | "iManufacturer" = 1
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 545
+ | | | | "bcdDevice" = 105
+ | | | | "Bus Power Available" = 50
+ | | | | "bMaxPacketSize0" = 8
+ | | | | "USB Product Name" = "Apple Keyboard"
+ | | | | "iProduct" = 2
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 3
+ | | | | "bDeviceClass" = 0
+ | | | | "locationID" = 18446744073613213696
+ | | | | "bDeviceSubClass" = 0
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "PortNum" = 2
+ | | | | "non-removable" = "yes"
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 0
+ | | | | "USB Vendor Name" = "Apple, Inc"
+ | | | | "Device Speed" = 0
+ | | | | "idVendor" = 1452
+ | | | | "Requested Power" = 10
+ | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x100000273, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000274, registered, matched, active, busy 0 (215 ms), retain 8>
+ | | | | +-o AppleUSBHIDKeyboard <class AppleUSBHIDKeyboard, id 0x100000277, registered, matched, active, busy 0 (39 ms), retain 7>
+ | | | | +-o IOHIDInterface <class IOHIDInterface, id 0x10000027b, registered, matched, active, busy 0 (4 ms), retain 6>
+ | | | | +-o AppleHIDKeyboardEventDriver <class AppleHIDKeyboardEventDriver, id 0x10000027c, registered, matched, active, busy 0 (1 ms), retain 8>
+ | | | | +-o IOHIDKeyboard <class IOHIDKeyboard, id 0x10000027e, registered, matched, active, busy 0 (0 ms), retain 8>
+ | | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x100000220, registered, matched, active, busy 0 (2 ms), retain 17>
+ | | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037c, !registered, !matched, active, busy 0, retain 5>
+ | | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037d, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x100000220, registered, matched, active, busy 0 (2 ms), retain 16>
+ | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037c, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOUSBInterface at 1 <class IOUSBInterface, id 0x100000275, registered, matched, active, busy 0 (196 ms), retain 8>
+ | | | +-o AppleUSBHIDKeyboard <class AppleUSBHIDKeyboard, id 0x100000282, registered, matched, active, busy 0 (50 ms), retain 7>
+ | | | +-o IOHIDInterface <class IOHIDInterface, id 0x100000283, registered, matched, active, busy 0 (41 ms), retain 6>
+ | | | +-o IOHIDEventDriver <class IOHIDEventDriver, id 0x1000002c8, registered, matched, active, busy 0 (3 ms), retain 8>
+ | | | +-o IOHIDConsumer <class IOHIDConsumer, id 0x1000002c9, registered, matched, active, busy 0 (1 ms), retain 8>
+ | | | | +-o IOHIDSystem <class IOHIDSystem, id 0x100000220, registered, matched, active, busy 0 (2 ms), retain 17>
+ | | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037c, !registered, !matched, active, busy 0, retain 5>
+ | | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037d, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOHIDSystem <class IOHIDSystem, id 0x100000220, registered, matched, active, busy 0 (2 ms), retain 16>
+ | | | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037c, !registered, !matched, active, busy 0, retain 5>
+ | | | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037d, !registered, !matched, active, busy 0, retain 5>
+ | | +-o HDEF at 1B <class IOPCIDevice, id 0x10000017e, registered, matched, active, busy 0 (2793 ms), retain 10>
+ | | | +-o AppleHDAController at 1B <class AppleHDAController, id 0x1000002bc, registered, matched, active, busy 0 (2689 ms), retain 7>
+ | | | +-o IOHDACodecDevice at 1B,0 <class IOHDACodecDevice, id 0x1000002d8, registered, matched, active, busy 0 (2689 ms), retain 6>
+ | | | +-o IOHDACodecDriver <class IOHDACodecDriver, id 0x1000002ec, !registered, !matched, active, busy 0 (2688 ms), retain 5>
+ | | | +-o IOHDACodecFunction at 1B,0,1 <class IOHDACodecFunction, id 0x1000002ed, registered, matched, active, busy 0 (2688 ms), retain 6>
+ | | | +-o AppleHDACodecGeneric <class AppleHDACodecGeneric, id 0x10000030e, registered, matched, active, busy 0 (26 ms), retain 5>
+ | | | +-o AppleHDADriver <class AppleHDADriver, id 0x100000328, registered, matched, active, busy 0 (9 ms), retain 8>
+ | | | +-o AppleHDAEngineOutput at 1B,0,1,2 <class AppleHDAEngineOutput, id 0x100000333, registered, matched, active, busy 0 (4 ms), retain 35>
+ | | | | +-o AppleHDAStream <class AppleHDAStream, id 0x100000334, registered, matched, active, busy 0 (2 ms), retain 7>
+ | | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x100000335, !registered, !matched, active, busy 0 (0 ms), retain 14>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ab, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000042b, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000452, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000462, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000336, !registered, !matched, active, busy 0 (0 ms), retain 14>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ac, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000042c, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000453, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000463, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000337, !registered, !matched, active, busy 0 (0 ms), retain 14>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ad, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000042d, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000454, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000464, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000338, !registered, !matched, active, busy 0 (0 ms), retain 14>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003ae, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000042e, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000455, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000465, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000339, !registered, !matched, active, busy 0 (0 ms), retain 14>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003af, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000042f, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000456, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000466, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x10000033a, !registered, !matched, active, busy 0 (0 ms), retain 14>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b0, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000430, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000457, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000467, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x10000033b, !registered, !matched, active, busy 0 (0 ms), retain 14>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b1, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000431, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000458, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000468, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o AudioAUUCDriver <class AudioAUUCDriver, id 0x10000033d, registered, matched, active, busy 0 (1 ms), retain 4>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000039c, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003b5, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003dc, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003e0, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003ee, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003f2, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000418, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000041c, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000043c, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000441, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000045d, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000461, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o AppleHDAEngineInput at 1B,0,1,0 <class AppleHDAEngineInput, id 0x10000033c, registered, matched, active, busy 0 (3 ms), retain 34>
+ | | | | +-o AppleHDAStream <class AppleHDAStream, id 0x10000033e, registered, matched, active, busy 0 (2 ms), retain 7>
+ | | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x10000033f, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a4, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000041d, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000444, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000340, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a5, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000041e, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000445, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x100000341, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a6, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000041f, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000446, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000342, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a7, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000420, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000447, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000343, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a8, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000421, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000448, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000344, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a9, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000422, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000449, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x100000345, !registered, !matched, active, busy 0 (0 ms), retain 24>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003aa, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003b3, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003de, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003f0, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000041a, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000423, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000043e, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000044a, !registered, !matched, active, busy 0, retain 6>
+ | | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000045f, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000039b, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003b4, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003db, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003df, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003ed, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003f1, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000417, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000041b, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000043b, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000440, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000045c, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000460, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o AppleHDAEngineInput at 1B,0,1,1 <class AppleHDAEngineInput, id 0x100000346, registered, matched, active, busy 0 (2 ms), retain 34>
+ | | | +-o AppleHDAStream <class AppleHDAStream, id 0x100000348, registered, matched, active, busy 0 (1 ms), retain 7>
+ | | | +-o IOAudioSelectorControl <class IOAudioSelectorControl, id 0x100000349, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039d, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000424, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000044b, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x10000034a, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039e, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000425, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000044c, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioLevelControl <class IOAudioLevelControl, id 0x10000034b, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000039f, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000426, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000044d, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x10000034c, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a0, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000427, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000044e, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x10000034d, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a1, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000428, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000044f, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x10000034e, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a2, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000429, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000450, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioToggleControl <class IOAudioToggleControl, id 0x10000034f, !registered, !matched, active, busy 0 (0 ms), retain 12>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x1000003a3, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x10000042a, !registered, !matched, active, busy 0, retain 6>
+ | | | | +-o IOAudioControlUserClient <class IOAudioControlUserClient, id 0x100000451, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000039a, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003b2, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003da, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003dd, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003ec, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003ef, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000416, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000419, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000043a, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000043d, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000045b, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000045e, !registered, !matched, active, busy 0, retain 6>
+ | | +-o pci-bridge at 1C <class IOPCIDevice, id 0x1000001b3, registered, matched, active, busy 0 (60 ms), retain 9>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001d7, registered, matched, active, busy 0 (30 ms), retain 5>
+ | | +-o RP04 at 1C,3 <class IOPCIDevice, id 0x10000017f, registered, matched, active, busy 0 (114 ms), retain 11>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001da, registered, matched, active, busy 0 (82 ms), retain 7>
+ | | | +-o FRWR at 0 <class IOPCIDevice, id 0x100000180, registered, matched, active, busy 0 (80 ms), retain 10>
+ | | | +-o AppleFWOHCI <class AppleFWOHCI, id 0x1000001f5, !registered, !matched, active, busy 0 (48 ms), retain 6>
+ | | | +-o IOFireWireController <class IOFireWireController, id 0x1000001f7, registered, matched, active, busy 0 (48 ms), retain 9>
+ | | | +-o IOFireWireLocalNode <class IOFireWireLocalNode, id 0x10000026e, registered, matched, active, busy 0 (47 ms), retain 12>
+ | | | +-o IOFireWireUserClientIniter <class IOFireWireUserClientIniter, id 0x10000026f, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOFireWireUserClientIniter <class IOFireWireUserClientIniter, id 0x1000002ca, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOFireWireIP <class IOFireWireIP, id 0x1000002cb, registered, matched, active, busy 0 (4 ms), retain 5>
+ | | | +-o IOFWInterface <class IOFWInterface, id 0x1000002cd, registered, matched, active, busy 0 (3 ms), retain 10>
+ | | | +-o IONetworkStack <class IONetworkStack, id 0x10000021f, registered, matched, active, busy 0 (2 ms), retain 11>
+ | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x1000002aa, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RP05 at 1C,4 <class IOPCIDevice, id 0x100000181, registered, matched, active, busy 0 (237 ms), retain 11>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001de, registered, matched, active, busy 0 (203 ms), retain 7>
+ | | | +-o ARPT at 0 <class IOPCIDevice, id 0x100000182, registered, matched, active, busy 0 (203 ms), retain 12>
+ | | | +-o AirPort_Brcm43224 <class AirPort_Brcm43224, id 0x1000001fb, registered, matched, active, busy 0 (9 ms), retain 8>
+ | | | +-o AirPort_Brcm43224Interface <class AirPort_Brcm43224Interface, id 0x100000237, registered, matched, active, busy 0 (7 ms), retain 10>
+ | | | +-o IONetworkStack <class IONetworkStack, id 0x10000021f, registered, matched, active, busy 0 (2 ms), retain 11>
+ | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x1000002aa, !registered, !matched, active, busy 0, retain 5>
+ | | +-o RP06 at 1C,5 <class IOPCIDevice, id 0x100000183, registered, matched, active, busy 0 (6723 ms), retain 11>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x1000001e2, registered, matched, active, busy 0 (6686 ms), retain 7>
+ | | | +-o GIGE at 0 <class IOPCIDevice, id 0x100000184, registered, matched, active, busy 0 (6686 ms), retain 10>
+ | | | +-o yukon2osx <class yukon2osx, id 0x1000001fd, !registered, !matched, active, busy 0 (1 ms), retain 7>
+ | | | +-o yukon <class yukon, id 0x1000002a8, !registered, !matched, active, busy 0 (1 ms), retain 8>
+ | | | +-o IOEthernetInterface <class IOEthernetInterface, id 0x1000002a9, registered, matched, active, busy 0 (1 ms), retain 11>
+ | | | +-o IONetworkStack <class IONetworkStack, id 0x10000021f, registered, matched, active, busy 0 (2 ms), retain 11>
+ | | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x1000002aa, !registered, !matched, active, busy 0, retain 5>
+ | | +-o UHC1 at 1D <class IOPCIDevice, id 0x100000185, registered, matched, active, busy 0 (634 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001e6, registered, matched, active, busy 0 (292 ms), retain 9>
+ | | | +-o UHCI Root Hub Simulation at 1D <class IOUSBRootHubDevice, id 0x100000242, registered, matched, active, busy 0 (281 ms), retain 8>
+ | | | | {
+ | | | | "sessionID" = 542392661
+ | | | | "AAPL,current-extra-in-sleep" = 500
+ | | | | "iManufacturer" = 2
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 32773
+ | | | | "bcdDevice" = 272
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 8
+ | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | "iProduct" = 1
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 1
+ | | | | "bDeviceClass" = 9
+ | | | | "locationID" = 486539264
+ | | | | "bDeviceSubClass" = 0
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "Ports" = 2
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "AAPL,max-port-current-in-sleep" = 1000
+ | | | | "bDeviceProtocol" = 0
+ | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | "Device Speed" = 1
+ | | | | "idVendor" = 1452
+ | | | | "AAPL,current-in-sleep" = 1000
+ | | | | "Requested Power" = 0
+ | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o AppleUSBHub <class AppleUSBHub, id 0x100000245, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000247, !registered, !matched, active, busy 0, retain 7>
+ | | +-o UHC2 at 1D,1 <class IOPCIDevice, id 0x100000189, registered, matched, active, busy 0 (756 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001e7, registered, matched, active, busy 0 (416 ms), retain 8>
+ | | | +-o UHCI Root Hub Simulation at 1D,1 <class IOUSBRootHubDevice, id 0x100000238, registered, matched, active, busy 0 (416 ms), retain 8>
+ | | | | {
+ | | | | "sessionID" = 528553166
+ | | | | "AAPL,current-extra-in-sleep" = 500
+ | | | | "iManufacturer" = 2
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 32773
+ | | | | "bcdDevice" = 272
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 8
+ | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | "iProduct" = 1
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 1
+ | | | | "bDeviceClass" = 9
+ | | | | "locationID" = 1023410176
+ | | | | "bDeviceSubClass" = 0
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "Ports" = 2
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "AAPL,max-port-current-in-sleep" = 1000
+ | | | | "bDeviceProtocol" = 0
+ | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | "Device Speed" = 1
+ | | | | "idVendor" = 1452
+ | | | | "AAPL,current-in-sleep" = 1000
+ | | | | "Requested Power" = 0
+ | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o AppleUSBHub <class AppleUSBHub, id 0x10000023a, !registered, !matched, active, busy 0, retain 6>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000023c, !registered, !matched, active, busy 0, retain 7>
+ | | +-o UHC3 at 1D,2 <class IOPCIDevice, id 0x10000018d, registered, matched, active, busy 0 (924 ms), retain 11>
+ | | | +-o AppleUSBUHCI <class AppleUSBUHCI, id 0x1000001e8, registered, matched, active, busy 0 (583 ms), retain 9>
+ | | | +-o UHCI Root Hub Simulation at 1D,2 <class IOUSBRootHubDevice, id 0x10000023d, registered, matched, active, busy 0 (425 ms), retain 10>
+ | | | | | {
+ | | | | | "sessionID" = 533559502
+ | | | | | "AAPL,current-extra-in-sleep" = 500
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 32773
+ | | | | | "bcdDevice" = 272
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 8
+ | | | | | "USB Product Name" = "UHCI Root Hub Simulation"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 1
+ | | | | | "bDeviceClass" = 9
+ | | | | | "locationID" = 1560281088
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 2
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "AAPL,max-port-current-in-sleep" = 1000
+ | | | | | "bDeviceProtocol" = 0
+ | | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | | "Device Speed" = 1
+ | | | | | "idVendor" = 1452
+ | | | | | "AAPL,current-in-sleep" = 1000
+ | | | | | "Requested Power" = 0
+ | | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x10000023f, !registered, !matched, active, busy 0, retain 8>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000241, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o IR Receiver at 5d100000 <class IOUSBDevice, id 0x100000286, registered, matched, active, busy 0 (577 ms), retain 9>
+ | | | | {
+ | | | | "sessionID" = 1116620200
+ | | | | "iManufacturer" = 1
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 33346
+ | | | | "bcdDevice" = 22
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 8
+ | | | | "USB Product Name" = "IR Receiver"
+ | | | | "iProduct" = 2
+ | | | | "iSerialNumber" = 0
+ | | | | "USB Address" = 2
+ | | | | "bDeviceClass" = 0
+ | | | | "locationID" = 1561329664
+ | | | | "bDeviceSubClass" = 0
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "PortNum" = 1
+ | | | | "non-removable" = "yes"
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 0
+ | | | | "Need contiguous memory for isoch" = Yes
+ | | | | "USB Vendor Name" = "Apple Computer, Inc."
+ | | | | "Device Speed" = 0
+ | | | | "idVendor" = 1452
+ | | | | "Requested Power" = 50
+ | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x100000288, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000289, registered, matched, active, busy 0 (272 ms), retain 8>
+ | | | +-o AppleIRController <class AppleIRController, id 0x10000028b, registered, matched, active, busy 0 (51 ms), retain 8>
+ | | | +-o IOHIDInterface <class IOHIDInterface, id 0x10000028c, registered, matched, active, busy 0 (2 ms), retain 5>
+ | | | +-o IOHIDLibUserClient <class IOHIDLibUserClient, id 0x1000003d6, !registered, !matched, active, busy 0, retain 6>
+ | | +-o EHC1 at 1D,7 <class IOPCIDevice, id 0x100000199, registered, matched, active, busy 0 (1067 ms), retain 17>
+ | | | +-o IOService <class IOService, id 0x1000001ff, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o AppleUSBEHCI <class AppleUSBEHCI, id 0x100000200, registered, matched, active, busy 0 (978 ms), retain 13>
+ | | | +-o EHCI Root Hub Simulation at 1D,7 <class IOUSBRootHubDevice, id 0x100000209, registered, matched, active, busy 0 (446 ms), retain 12>
+ | | | | | {
+ | | | | | "sessionID" = 278360131
+ | | | | | "AAPL,current-extra-in-sleep" = 500
+ | | | | | "iManufacturer" = 2
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 32774
+ | | | | | "bcdDevice" = 512
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 64
+ | | | | | "USB Product Name" = "EHCI Root Hub Simulation"
+ | | | | | "iProduct" = 1
+ | | | | | "iSerialNumber" = 0
+ | | | | | "USB Address" = 1
+ | | | | | "bDeviceClass" = 9
+ | | | | | "locationID" = 18446744073659219968
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "AAPL,current-extra" = 1000
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "Ports" = 6
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "AAPL,current-available" = 1500
+ | | | | | "bDeviceProtocol" = 1
+ | | | | | "AAPL,max-port-current-in-sleep" = 1000
+ | | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | | "Device Speed" = 2
+ | | | | | "idVendor" = 1452
+ | | | | | "AAPL,current-in-sleep" = 3000
+ | | | | | "Requested Power" = 0
+ | | | | | "AAPL,port-current-in-sleep" = 500
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o AppleUSBHub <class AppleUSBHub, id 0x10000020c, registered, matched, active, busy 0 (0 ms), retain 9>
+ | | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x10000020e, !registered, !matched, active, busy 0, retain 7>
+ | | | +-o LaCie Device at fd100000 <class IOUSBDevice, id 0x10000024d, registered, matched, active, busy 0 (725 ms), retain 8>
+ | | | | | {
+ | | | | | "sessionID" = 637721320
+ | | | | | "iManufacturer" = 10
+ | | | | | "bNumConfigurations" = 1
+ | | | | | "idProduct" = 4138
+ | | | | | "bcdDevice" = 256
+ | | | | | "Bus Power Available" = 250
+ | | | | | "bMaxPacketSize0" = 64
+ | | | | | "USB Product Name" = "LaCie Device"
+ | | | | | "iProduct" = 11
+ | | | | | "iSerialNumber" = 5
+ | | | | | "USB Address" = 2
+ | | | | | "bDeviceClass" = 0
+ | | | | | "bDeviceSubClass" = 0
+ | | | | | "locationID" = 18446744073660268544
+ | | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | | "kHasMSCInterface" = Yes
+ | | | | | "PortNum" = 1
+ | | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | | "bDeviceProtocol" = 0
+ | | | | | "uid" = "USB:059F102A6E7A5FFFFFFF"
+ | | | | | "USB Vendor Name" = "LaCie"
+ | | | | | "Device Speed" = 2
+ | | | | | "idVendor" = 1439
+ | | | | | "USB Serial Number" = "6E7A5FFFFFFF"
+ | | | | | "Requested Power" = 1
+ | | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | | "Low Power Displayed" = No
+ | | | | | }
+ | | | | |
+ | | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x10000024f, !registered, !matched, active, busy 0, retain 4>
+ | | | | +-o MSC Bulk-Only Transfer at 0 <class IOUSBInterface, id 0x100000250, registered, matched, active, busy 0 (453 ms), retain 7>
+ | | | | +-o IOUSBMassStorageClass <class IOUSBMassStorageClass, id 0x100000254, registered, matched, active, busy 0 (248 ms), retain 8>
+ | | | | +-o IOSCSIPeripheralDeviceNub <class IOSCSIPeripheralDeviceNub, id 0x100000256, registered, matched, active, busy 0 (105 ms), retain 6>
+ | | | | +-o IOSCSIPeripheralDeviceType00 <class IOSCSIPeripheralDeviceType00, id 0x100000260, !registered, !matched, active, busy 0 (101 ms), retain 7>
+ | | | | +-o IOBlockStorageServices <class IOBlockStorageServices, id 0x100000263, registered, matched, active, busy 0 (101 ms), retain 5>
+ | | | | +-o IOBlockStorageDriver <class IOBlockStorageDriver, id 0x100000264, registered, matched, active, busy 0 (100 ms), retain 7>
+ | | | | +-o ST950032 5AS Media <class IOMedia, id 0x10000028e, registered, matched, active, busy 0 (99 ms), retain 10>
+ | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000028f, registered, matched, active, busy 0 (0 ms), retain 5>
+ | | | | +-o IOApplePartitionScheme <class IOApplePartitionScheme, id 0x100000293, !registered, !matched, active, busy 0 (25 ms), retain 10>
+ | | | | +-o Apple at 1 <class IOMedia, id 0x100000294, registered, matched, active, busy 0 (4 ms), retain 8>
+ | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000299, registered, matched, active, busy 0 (2 ms), retain 5>
+ | | | | +-o osx104 at 3 <class IOMedia, id 0x100000295, registered, matched, active, busy 0 (9 ms), retain 9>
+ | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000029a, registered, matched, active, busy 0 (2 ms), retain 6>
+ | | | | +-o osx105 at 5 <class IOMedia, id 0x100000296, registered, matched, active, busy 0 (10 ms), retain 9>
+ | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000029b, registered, matched, active, busy 0 (2 ms), retain 6>
+ | | | | +-o osx106 at 7 <class IOMedia, id 0x100000297, registered, matched, active, busy 0 (10 ms), retain 9>
+ | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000029c, registered, matched, active, busy 0 (2 ms), retain 6>
+ | | | | +-o vms at 9 <class IOMedia, id 0x100000298, registered, matched, active, busy 0 (11 ms), retain 9>
+ | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000029d, registered, matched, active, busy 0 (2 ms), retain 6>
+ | | | +-o Built-in iSight at fd400000 <class IOUSBDevice, id 0x10000025b, registered, matched, active, busy 0 (607 ms), retain 10>
+ | | | | {
+ | | | | "sessionID" = 791376929
+ | | | | "iManufacturer" = 1
+ | | | | "bNumConfigurations" = 1
+ | | | | "idProduct" = 34050
+ | | | | "bcdDevice" = 341
+ | | | | "Bus Power Available" = 250
+ | | | | "bMaxPacketSize0" = 64
+ | | | | "USB Product Name" = "Built-in iSight"
+ | | | | "iProduct" = 2
+ | | | | "iSerialNumber" = 3
+ | | | | "USB Address" = 3
+ | | | | "bDeviceClass" = 239
+ | | | | "bDeviceSubClass" = 2
+ | | | | "locationID" = 18446744073663414272
+ | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
+ | | | | "PortNum" = 4
+ | | | | "non-removable" = "yes"
+ | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
+ | | | | "bDeviceProtocol" = 1
+ | | | | "USB Vendor Name" = "Apple Inc."
+ | | | | "Device Speed" = 2
+ | | | | "idVendor" = 1452
+ | | | | "USB Serial Number" = "6067E773DA9722F4 (03.01)"
+ | | | | "Requested Power" = 250
+ | | | | "IOGeneralInterest" = "IOCommand is not serializable"
+ | | | | "kSuspendPort" = Yes
+ | | | | "Low Power Displayed" = No
+ | | | | }
+ | | | |
+ | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, id 0x10000025f, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o IOUSBInterface at 0 <class IOUSBInterface, id 0x100000265, registered, matched, active, busy 0 (373 ms), retain 6>
+ | | | +-o IOUSBInterface at 1 <class IOUSBInterface, id 0x100000266, registered, matched, active, busy 0 (399 ms), retain 6>
+ | | | +-o IOUSBInterface at 2 <class IOUSBInterface, id 0x100000267, registered, matched, active, busy 0 (433 ms), retain 6>
+ | | +-o pci-bridge at 1E <class IOPCIDevice, id 0x1000001b4, registered, matched, active, busy 0 (199 ms), retain 9>
+ | | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge, id 0x100000204, registered, matched, active, busy 0 (113 ms), retain 5>
+ | | +-o LPCB at 1F <class IOPCIDevice, id 0x1000001a7, registered, matched, active, busy 0 (253 ms), retain 28>
+ | | | +-o AppleLPC <class AppleLPC, id 0x1000002b7, registered, matched, active, busy 0 (2 ms), retain 5>
+ | | +-o PATA at 1F,1 <class IOPCIDevice, id 0x1000001a8, registered, matched, active, busy 0 (500 ms), retain 13>
+ | | | +-o AppleIntelPIIXATARoot <class AppleIntelPIIXATARoot, id 0x1000001ee, !registered, !matched, active, busy 0 (450 ms), retain 6>
+ | | | +-o PRID at 0 <class AppleIntelPIIXATAChannel, id 0x1000001a9, registered, matched, active, busy 0 (450 ms), retain 11>
+ | | | | +-o AppleIntelPIIXPATA <class AppleIntelPIIXPATA, id 0x1000001f4, registered, matched, active, busy 0 (412 ms), retain 7>
+ | | | | +-o ATADeviceNub at 0 <class ATADeviceNub, id 0x10000021b, registered, matched, active, busy 0 (306 ms), retain 6>
+ | | | | +-o IOATAPIProtocolTransport <class IOATAPIProtocolTransport, id 0x10000022e, registered, matched, active, busy 0 (276 ms), retain 9>
+ | | | | +-o IOSCSIPeripheralDeviceNub <class IOSCSIPeripheralDeviceNub, id 0x100000234, registered, matched, active, busy 0 (43 ms), retain 6>
+ | | | | +-o IOSCSIPeripheralDeviceType05 <class IOSCSIPeripheralDeviceType05, id 0x100000251, !registered, !matched, active, busy 0 (2 ms), retain 7>
+ | | | | +-o IODVDServices <class IODVDServices, id 0x100000258, registered, matched, active, busy 0 (2 ms), retain 6>
+ | | | | +-o IODVDBlockStorageDriver <class IODVDBlockStorageDriver, id 0x100000259, registered, matched, active, busy 0 (0 ms), retain 5>
+ | | | | +-o SCSITaskUserClientIniter <class SCSITaskUserClientIniter, id 0x10000025a, !registered, !matched, active, busy 0, retain 4>
+ | | | +-o CHN1 at 1 <class AppleIntelPIIXATAChannel, id 0x1000001ef, registered, matched, active, busy 0 (51 ms), retain 6>
+ | | +-o SATA at 1F,2 <class IOPCIDevice, id 0x1000001ac, registered, matched, active, busy 0 (309 ms), retain 12>
+ | | | +-o AppleICH8AHCI <class AppleICH8AHCI, id 0x1000001f0, registered, matched, active, busy 0 (254 ms), retain 7>
+ | | | +-o PRT0 at 0 <class AppleAHCIPort, id 0x1000001ad, registered, matched, active, busy 0 (246 ms), retain 10>
+ | | | +-o IOAHCIDevice at 0 <class IOAHCIDevice, id 0x1000001f9, registered, matched, active, busy 0 (246 ms), retain 12>
+ | | | +-o AppleAHCIDiskDriver <class AppleAHCIDiskDriver, id 0x1000001fa, registered, matched, active, busy 0 (219 ms), retain 6>
+ | | | +-o IOAHCIBlockStorageDevice <class IOAHCIBlockStorageDevice, id 0x10000020a, registered, matched, active, busy 0 (212 ms), retain 6>
+ | | | +-o IOBlockStorageDriver <class IOBlockStorageDriver, id 0x100000211, registered, matched, active, busy 0 (211 ms), retain 7>
+ | | | +-o WDC WD3200AAJS-40VWA0 Media <class IOMedia, id 0x100000212, registered, matched, active, busy 0 (211 ms), retain 10>
+ | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000213, registered, matched, active, busy 0 (0 ms), retain 5>
+ | | | +-o IOGUIDPartitionScheme <class IOGUIDPartitionScheme, id 0x100000215, !registered, !matched, active, busy 0 (96 ms), retain 8>
+ | | | +-o EFI System Partition at 1 <class IOMedia, id 0x100000229, registered, matched, active, busy 0 (3 ms), retain 8>
+ | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x10000022f, registered, matched, active, busy 0 (0 ms), retain 5>
+ | | | +-o osx at 2 <class IOMedia, id 0x10000022a, registered, matched, active, busy 0 (95 ms), retain 10>
+ | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000230, registered, matched, active, busy 0 (2 ms), retain 6>
+ | | | +-o Sauvegardes at 3 <class IOMedia, id 0x10000022b, registered, matched, active, busy 0 (95 ms), retain 9>
+ | | | +-o IOMediaBSDClient <class IOMediaBSDClient, id 0x100000231, registered, matched, active, busy 0 (0 ms), retain 6>
+ | | +-o SBUS at 1F,3 <class IOPCIDevice, id 0x1000001ae, registered, matched, active, busy 0 (68 ms), retain 8>
+ | +-o PDRC <class IOACPIPlatformDevice, id 0x10000012f, registered, matched, active, busy 0 (4 ms), retain 6>
+ | +-o SMC <class IOACPIPlatformDevice, id 0x100000167, registered, matched, active, busy 0 (155 ms), retain 7>
+ | | +-o AppleSMC <class AppleSMC, id 0x1000002c1, registered, matched, active, busy 0 (83 ms), retain 6>
+ | | +-o SMCWatchDogTimer <class SMCWatchDogTimer, id 0x1000002d7, registered, matched, active, busy 0 (60 ms), retain 5>
+ | +-o EC <class IOACPIPlatformDevice, id 0x100000168, registered, matched, active, busy 0 (7 ms), retain 8>
+ | | +-o AppleACPIEC <class AppleACPIEC, id 0x100000124, !registered, !matched, active, busy 0, retain 6>
+ | +-o DMAC <class IOACPIPlatformDevice, id 0x100000169, registered, matched, active, busy 0 (8 ms), retain 6>
+ | +-o FWHD <class IOACPIPlatformDevice, id 0x10000016a, registered, matched, active, busy 0 (12 ms), retain 6>
+ | +-o HPET <class IOACPIPlatformDevice, id 0x10000016b, registered, matched, active, busy 0 (26 ms), retain 7>
+ | | +-o AppleHPET <class AppleHPET, id 0x1000001cc, !registered, !matched, active, busy 0, retain 4>
+ | +-o IPIC <class IOACPIPlatformDevice, id 0x10000016c, registered, matched, active, busy 0 (13 ms), retain 6>
+ | +-o MATH <class IOACPIPlatformDevice, id 0x10000016d, registered, matched, active, busy 0 (13 ms), retain 6>
+ | +-o LDRC <class IOACPIPlatformDevice, id 0x10000016e, registered, matched, active, busy 0 (14 ms), retain 6>
+ | +-o RTC <class IOACPIPlatformDevice, id 0x10000016f, registered, matched, active, busy 0 (99 ms), retain 8>
+ | | +-o AppleRTC <class AppleRTC, id 0x1000001c8, registered, matched, active, busy 0 (75 ms), retain 6>
+ | +-o TIMR <class IOACPIPlatformDevice, id 0x100000170, registered, matched, active, busy 0 (16 ms), retain 6>
+ | +-o AppleEFIRuntime <class AppleEFIRuntime, id 0x1000001c9, registered, matched, active, busy 0 (693 ms), retain 7>
+ | | +-o AppleEFINVRAM <class AppleEFINVRAM, id 0x1000001ca, registered, matched, active, busy 0 (1 ms), retain 6>
+ | +-o IOPCIMessagedInterruptController <class IOPCIMessagedInterruptController, id 0x1000001cd, registered, matched, active, busy 0 (40 ms), retain 6>
+ | +-o AppleRawIOAddressSpace <class AppleRawIOAddressSpace, id 0x1000002d5, registered, matched, active, busy 0 (23 ms), retain 4>
+ | +-o AppleRawPhysicalMemoryAddressSpace <class AppleRawPhysicalMemoryAddressSpace, id 0x1000002d6, registered, matched, active, busy 0 (24 ms), retain 4>
+ +-o IOResources <class IOResources, id 0x100000113, registered, matched, active, busy 0 (991 ms), retain 31>
+ +-o AppleIntelCPUPowerManagement <class AppleIntelCPUPowerManagement, id 0x10000011b, registered, matched, active, busy 0 (234 ms), retain 5>
+ | +-o AppleIntelCPUPowerManagementClient <class AppleIntelCPUPowerManagementClient, id 0x100000120, !registered, !matched, active, busy 0, retain 4>
+ +-o IOHDIXController <class IOHDIXController, id 0x10000011c, registered, matched, active, busy 0 (1 ms), retain 4>
+ +-o com_apple_AppleFSCompression_AppleFSCompressionTypeZlib <class com_apple_AppleFSCompression_AppleFSCompressionTypeZlib, id 0x10000021d, !registered, !matched, active, busy 0, retain 4>
+ +-o com_apple_BootCache <class com_apple_BootCache, id 0x10000021e, !registered, !matched, active, busy 0, retain 4>
+ +-o IONetworkStack <class IONetworkStack, id 0x10000021f, registered, matched, active, busy 0 (2 ms), retain 11>
+ | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x1000002aa, !registered, !matched, active, busy 0, retain 5>
+ +-o IOHIDSystem <class IOHIDSystem, id 0x100000220, registered, matched, active, busy 0 (2 ms), retain 16>
+ | +-o IOHIDUserClient <class IOHIDUserClient, id 0x10000036a, !registered, !matched, active, busy 0, retain 5>
+ | +-o IOHIDParamUserClient <class IOHIDParamUserClient, id 0x10000036b, !registered, !matched, active, busy 0, retain 5>
+ | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037c, !registered, !matched, active, busy 0, retain 5>
+ | +-o IOHIDEventSystemUserClient <class IOHIDEventSystemUserClient, id 0x10000037d, !registered, !matched, active, busy 0, retain 5>
+ +-o AppleProfileOSHooks <class AppleProfileOSHooks, id 0x1000002bd, registered, matched, active, busy 0 (86 ms), retain 15>
+ | +-o AppleProfileTimeTrigger <class AppleProfileTimeTrigger, id 0x1000002db, registered, matched, active, busy 0 (53 ms), retain 6>
+ | +-o AppleProfilePMITrigger <class AppleProfilePMITrigger, id 0x1000002dc, registered, matched, active, busy 0 (54 ms), retain 6>
+ | +-o AppleOSXPerformanceMonitor <class AppleOSXPerformanceMonitor, id 0x1000002dd, !registered, !matched, active, busy 0 (55 ms), retain 6>
+ | | +-o AppleOSXPerformanceCounter <class AppleOSXPerformanceCounter, id 0x1000002e8, registered, matched, active, busy 0 (55 ms), retain 6>
+ | | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 18>
+ | | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | | +-o AppleOSXPerformanceCounter <class AppleOSXPerformanceCounter, id 0x1000002e9, registered, matched, active, busy 0 (55 ms), retain 6>
+ | | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 18>
+ | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | +-o ApplePerformanceCounterManager <class ApplePerformanceCounterManager, id 0x1000002de, registered, matched, active, busy 0 (57 ms), retain 17>
+ | | +-o AppleProfileReadCounterAction <class AppleProfileReadCounterAction, id 0x10000030d, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileKEventTrigger <class AppleProfileKEventTrigger, id 0x1000002df, registered, matched, active, busy 0 (57 ms), retain 6>
+ | +-o AppleProfileManualTrigger <class AppleProfileManualTrigger, id 0x1000002e0, registered, matched, active, busy 0 (62 ms), retain 6>
+ | +-o AppleProfileCallstackAction <class AppleProfileCallstackAction, id 0x1000002e1, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileKEventAction <class AppleProfileKEventAction, id 0x1000002e2, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileRegisterStateAction <class AppleProfileRegisterStateAction, id 0x1000002e3, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileThreadInfoAction <class AppleProfileThreadInfoAction, id 0x1000002e4, !registered, !matched, active, busy 0, retain 5>
+ | +-o AppleProfileTimestampAction <class AppleProfileTimestampAction, id 0x1000002e5, !registered, !matched, active, busy 0, retain 5>
+ +-o com_apple_driver_AudioIPCDevice <class com_apple_driver_AudioIPCDevice, id 0x1000002be, registered, matched, active, busy 0 (21 ms), retain 6>
+ | +-o com_apple_driver_AudioIPCEngine <class com_apple_driver_AudioIPCEngine, id 0x1000002d2, registered, matched, active, busy 0 (19 ms), retain 11>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000399, !registered, !matched, active, busy 0, retain 6>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003d9, !registered, !matched, active, busy 0, retain 6>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x1000003eb, !registered, !matched, active, busy 0, retain 6>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000415, !registered, !matched, active, busy 0, retain 6>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x100000439, !registered, !matched, active, busy 0, retain 6>
+ | +-o IOAudioEngineUserClient <class IOAudioEngineUserClient, id 0x10000045a, !registered, !matched, active, busy 0, retain 6>
+ +-o Dont_Steal_Mac_OS_X <class Dont_Steal_Mac_OS_X, id 0x1000002bf, !registered, !matched, active, busy 0, retain 5>
+ +-o IOBluetoothSerialManager <class IOBluetoothSerialManager, id 0x1000002c0, registered, matched, active, busy 0 (29 ms), retain 7>
+ | +-o IOBluetoothSerialClient <class IOBluetoothSerialClient, id 0x10000032b, !registered, !matched, active, busy 0 (4 ms), retain 5>
+ | | +-o IOBluetoothSerialClientSerialStreamSync <class IOBluetoothSerialClientSerialStreamSync, id 0x10000032c, registered, matched, active, busy 0 (4 ms), retain 5>
+ | | +-o IOSerialBSDClient <class IOSerialBSDClient, id 0x10000032d, registered, matched, active, busy 0 (2 ms), retain 4>
+ | +-o IOBluetoothSerialClient <class IOBluetoothSerialClient, id 0x10000032e, !registered, !matched, active, busy 0 (4 ms), retain 5>
+ | +-o IOBluetoothSerialClientModemStreamSync <class IOBluetoothSerialClientModemStreamSync, id 0x10000032f, registered, matched, active, busy 0 (4 ms), retain 5>
+ | +-o IOSerialBSDClient <class IOSerialBSDClient, id 0x100000331, registered, matched, active, busy 0 (1 ms), retain 4>
+ +-o IODisplayWrangler <class IODisplayWrangler, id 0x1000002c2, registered, matched, active, busy 0 (22 ms), retain 7>
+ | +-o IOAccelerationUserClient <class IOAccelerationUserClient, id 0x1000003f8, !registered, !matched, active, busy 0, retain 5>
+ +-o IOSurfaceRoot <class IOSurfaceRoot, id 0x1000002c3, registered, matched, active, busy 0 (82 ms), retain 5>
+ +-o AppleSCSISubsystemGlobals <class AppleSCSISubsystemGlobals, id 0x100000329, registered, matched, active, busy 0 (1 ms), retain 5>
+ +-o com_parallels_hypervisor <class com_parallels_hypervisor, id 0x100000353, registered, matched, active, busy 0 (2 ms), retain 6>
+ | +-o com_parallels_hypervisor_api <class com_parallels_hypervisor_api, id 0x100000354, registered, matched, active, busy 0 (1 ms), retain 5>
+ +-o com_parallels_hid_hook <class com_parallels_hid_hook, id 0x100000355, registered, matched, active, busy 0 (1 ms), retain 4>
+ +-o com_parallels_usb_control <class com_parallels_usb_control, id 0x10000035c, registered, matched, active, busy 0 (14 ms), retain 4>
+ +-o com_parallels_kext_Prlnet <class com_parallels_kext_Prlnet, id 0x10000035d, registered, matched, active, busy 0 (1 ms), retain 7>
+ | +-o com_parallels_kext_PrlnetUserClient <class com_parallels_kext_PrlnetUserClient, id 0x100000385, !registered, !matched, active, busy 0, retain 5>
+ | +-o com_parallels_kext_PrlnetUserClient <class com_parallels_kext_PrlnetUserClient, id 0x100000386, !registered, !matched, active, busy 0, retain 5>
+ | +-o com_parallels_kext_PrlnetUserClient <class com_parallels_kext_PrlnetUserClient, id 0x100000387, !registered, !matched, active, busy 0, retain 5>
+ +-o com_parallels_kext_prl_vnic_bus <class com_parallels_kext_prl_vnic_bus, id 0x10000035e, registered, matched, active, busy 0 (1 ms), retain 4>
+ +-o org_virtualbox_SupDrv <class org_virtualbox_SupDrv, id 0x10000035f, registered, matched, active, busy 0 (1 ms), retain 4>
+ +-o org_virtualbox_VBoxUSB <class org_virtualbox_VBoxUSB, id 0x100000363, registered, matched, active, busy 0 (5 ms), retain 5>
+ | +-o org_virtualbox_VBoxUSBClient <class org_virtualbox_VBoxUSBClient, id 0x10000046f, !registered, !matched, active, busy 0, retain 5>
+ +-o com_vmware_kext_VmmonService <class com_vmware_kext_VmmonService, id 0x100000388, !registered, !matched, active, busy 0, retain 5>
+ +-o com_vmware_kext_UsbPortArbiter <class com_vmware_kext_UsbPortArbiter, id 0x100000395, registered, matched, active, busy 0 (15 ms), retain 4>
+ +-o com_vmware_kext_KeyboardState <class com_vmware_kext_KeyboardState, id 0x100000396, registered, matched, active, busy 0 (16 ms), retain 4>
diff --git a/resources/win32/wmi/xp-Win32_NetworkAdapter.wmi b/resources/win32/wmi/xp-Win32_NetworkAdapter.wmi
new file mode 100644
index 0000000..5452fbe
Binary files /dev/null and b/resources/win32/wmi/xp-Win32_NetworkAdapter.wmi differ
diff --git a/resources/win32/wmi/xp-Win32_NetworkAdapterConfiguration.wmi b/resources/win32/wmi/xp-Win32_NetworkAdapterConfiguration.wmi
new file mode 100644
index 0000000..354fb68
Binary files /dev/null and b/resources/win32/wmi/xp-Win32_NetworkAdapterConfiguration.wmi differ
diff --git a/t/02critic.t b/t/02critic.t
index 3f753f5..bd3a677 100755
--- a/t/02critic.t
+++ b/t/02critic.t
@@ -2,22 +2,18 @@
use strict;
use warnings;
+
use Test::More;
use English qw(-no_match_vars);
-if (!$ENV{TEST_AUTHOR}) {
- my $msg = 'Author test. Set $ENV{TEST_AUTHOR} to a true value to run.';
- plan(skip_all => $msg);
-}
+plan(skip_all => 'Author test, set $ENV{TEST_AUTHOR} to a true value to run')
+ if !$ENV{TEST_AUTHOR};
eval { require Test::Perl::Critic; };
-
-if ($EVAL_ERROR) {
- my $msg = 'Test::Perl::Critic required to criticise code';
- plan(skip_all => $msg);
-}
+plan(skip_all => 'Test::Perl::Critic required') if $EVAL_ERROR;
my $config = File::Spec->catfile('t', 'perlcriticrc');
Test::Perl::Critic->import(-profile => $config);
+
all_critic_ok();
diff --git a/t/03pod.t b/t/03pod.t
index 98871db..af82d01 100755
--- a/t/03pod.t
+++ b/t/03pod.t
@@ -2,20 +2,16 @@
use strict;
use warnings;
+
use Test::More;
use English qw(-no_match_vars);
-if (!$ENV{TEST_AUTHOR}) {
- my $msg = 'Author test. Set $ENV{TEST_AUTHOR} to a true value to run.';
- plan(skip_all => $msg);
-}
+plan(skip_all => 'Author test, set $ENV{TEST_AUTHOR} to a true value to run')
+ if !$ENV{TEST_AUTHOR};
eval { require Test::Pod; };
-
-if ($EVAL_ERROR) {
- my $msg = 'Test::Pod required to check pod';
- plan(skip_all => $msg);
-}
+plan(skip_all => 'Test::Pod required') if $EVAL_ERROR;
Test::Pod->import();
+
all_pod_files_ok();
diff --git a/t/04pod-coverage.t b/t/04pod-coverage.t
index bc59126..d1c35c1 100755
--- a/t/04pod-coverage.t
+++ b/t/04pod-coverage.t
@@ -1,29 +1,19 @@
#!/usr/bin/perl
-# $Id: pod-coverage.t 1580 2007-03-22 13:38:55Z guillomovitch $
use strict;
use warnings;
+use lib 't';
use Test::More;
use English qw(-no_match_vars);
-use lib 't';
-
-if (!$ENV{TEST_AUTHOR}) {
- my $msg = 'Author test. Set $ENV{TEST_AUTHOR} to a true value to run.';
- plan(skip_all => $msg);
-}
+plan(skip_all => 'Author test, set $ENV{TEST_AUTHOR} to a true value to run')
+ if !$ENV{TEST_AUTHOR};
eval { require Test::Pod::Coverage; };
-
-if ($EVAL_ERROR) {
- my $msg = 'Test::Pod::Coverage required to check pod coverage';
- plan(skip_all => $msg);
-}
+plan(skip_all => 'Test::Pod::Coverage required') if $EVAL_ERROR;
Test::Pod::Coverage->import();
-
-# use mock modules for non-available ones
if ($OSNAME eq 'MSWin32') {
push @INC, 't/fake/unix';
} else {
@@ -31,9 +21,7 @@ if ($OSNAME eq 'MSWin32') {
}
my @modules = grep { filter($_) } all_modules('lib');
-
plan tests => scalar @modules;
-
foreach my $module (@modules) {
pod_coverage_ok(
$module,
diff --git a/t/05var.t b/t/05var.t
index 2f1896b..d57ab9a 100644
--- a/t/05var.t
+++ b/t/05var.t
@@ -2,28 +2,29 @@
use strict;
use warnings;
+
use Test::More;
use English qw(-no_match_vars);
-if (!$ENV{TEST_AUTHOR}) {
- my $msg = 'Author test. Set $ENV{TEST_AUTHOR} to a true value to run.';
- plan(skip_all => $msg);
-}
+plan(skip_all => 'Author test, set $ENV{TEST_AUTHOR} to a true value to run')
+ if !$ENV{TEST_AUTHOR};
-# use mock modules for non-available ones
+eval { require Test::Vars; };
+plan(skip_all => 'Test::Vars required') if $EVAL_ERROR;
+
+Test::Vars->import();
if ($OSNAME eq 'MSWin32') {
push @INC, 't/fake/unix';
} else {
push @INC, 't/fake/windows';
}
-eval { require Test::Vars; };
-
-if ($EVAL_ERROR) {
- plan(skip_all => 'Test::Vars required to validate the code');
-}
-
-Test::Vars::all_vars_ok(
- ignore_vars => { '$i' => 1, '%params' => 1, '$class' => 1 }
+all_vars_ok(
+ ignore_vars => {
+ '%params' => 1,
+ '$class' => 1,
+ '$request' => 1, # FusionInventory::Agent::HTTP::Server
+ '$clientIp' => 1, # FusionInventory::Agent::HTTP::Server
+ '$num' => 1 # Task::Inventory::Input::Solaris::Networks
+ }
);
-
diff --git a/t/06spelling.t b/t/06spelling.t
new file mode 100755
index 0000000..b035de9
--- /dev/null
+++ b/t/06spelling.t
@@ -0,0 +1,17 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+use English qw(-no_match_vars);
+
+plan(skip_all => 'Author test, set $ENV{TEST_AUTHOR} to a true value to run')
+ if !$ENV{TEST_AUTHOR};
+
+eval { require Test::Pod::Spelling::CommonMistakes; };
+plan(skip_all => 'Test::Pod::Spelling::CommonMistakes required') if $EVAL_ERROR;
+
+Test::Pod::Spelling::CommonMistakes->import();
+
+all_pod_files_ok();
diff --git a/t/inventory/macos/storages.t b/t/inventory/macos/storages.t
index 62a3759..63de394 100755
--- a/t/inventory/macos/storages.t
+++ b/t/inventory/macos/storages.t
@@ -93,6 +93,5 @@ plan tests => scalar keys %tests;
foreach my $test (keys %tests) {
my $file = "resources/macos/system_profiler/$test";
my @storages = FusionInventory::Agent::Task::Inventory::Input::MacOS::Storages::_getStorages(file => $file);
- is_deeply(\@storages, $tests{$test}, $test) or print Dumper(\@storages);
- use Data::Dumper;
+ is_deeply(\@storages, $tests{$test}, $test);
}
diff --git a/t/inventory/macos/usb.t b/t/inventory/macos/usb.t
new file mode 100755
index 0000000..ff2c9d2
--- /dev/null
+++ b/t/inventory/macos/usb.t
@@ -0,0 +1,111 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use FusionInventory::Agent::Task::Inventory::Input::MacOS::USB;
+
+my %tests = (
+ IOUSBDevice1 => [
+ {
+ CLASS => '0',
+ NAME => 'Apple Internal Keyboard / Trackpad',
+ SERIAL => undef,
+ SUBCLASS => '0',
+ VENDORID => '0x5ac',
+ PRODUCTID => '0x21b'
+ },
+ {
+ CLASS => '0',
+ NAME => 'IR Receiver',
+ SERIAL => undef,
+ SUBCLASS => '0',
+ VENDORID => '0x5ac',
+ PRODUCTID => '0x8240'
+ },
+ {
+ CLASS => '224',
+ NAME => 'Bluetooth USB Host Controller',
+ SERIAL => undef,
+ SUBCLASS => '1',
+ VENDORID => '0x5ac',
+ PRODUCTID => '0x8205'
+ },
+ {
+ CLASS => '255',
+ NAME => 'Built-in iSight',
+ SERIAL => undef,
+ SUBCLASS => '255',
+ VENDORID => '0x5ac',
+ PRODUCTID => '0x8501'
+ },
+ {
+ CLASS => '0',
+ NAME => 'Flash Disk',
+ SERIAL => '16270078C5C90000',
+ SUBCLASS => '0',
+ VENDORID => '0x1976',
+ PRODUCTID => '0x6025'
+ }
+ ],
+ IOUSBDevice2 => [
+ {
+ CLASS => '0',
+ NAME => 'NetScroll + Mini Traveler',
+ SERIAL => undef,
+ SUBCLASS => '0',
+ VENDORID => '0x458',
+ PRODUCTID => '0x36'
+ },
+ {
+ CLASS => '224',
+ NAME => 'Bluetooth USB Host Controller',
+ SERIAL => undef,
+ SUBCLASS => '1',
+ VENDORID => '0x5ac',
+ PRODUCTID => '0x8206'
+ },
+ {
+ CLASS => '0',
+ NAME => 'Apple Keyboard',
+ SERIAL => undef,
+ SUBCLASS => '0',
+ VENDORID => '0x5ac',
+ PRODUCTID => '0x221'
+ },
+ {
+ CLASS => '0',
+ NAME => 'IR Receiver',
+ SERIAL => undef,
+ SUBCLASS => '0',
+ VENDORID => '0x5ac',
+ PRODUCTID => '0x8242'
+ },
+ {
+ CLASS => '0',
+ NAME => 'LaCie Device',
+ SERIAL => '6E7A5FFFFFFF',
+ SUBCLASS => '0',
+ VENDORID => '0x59f',
+ PRODUCTID => '0x102a'
+ },
+ {
+ CLASS => '239',
+ NAME => 'Built-in iSight',
+ SERIAL => '6067E773DA9722F4 (03.01)',
+ SUBCLASS => '2',
+ VENDORID => '0x5ac',
+ PRODUCTID => '0x8502'
+ }
+ ]
+);
+
+plan tests => scalar keys %tests;
+
+foreach my $test (keys %tests) {
+ my $file = "resources/macos/ioreg/$test";
+ my @devices = FusionInventory::Agent::Task::Inventory::Input::MacOS::USB::_getDevices(file => $file);
+ is_deeply(\@devices, $tests{$test}, $test);
+}
diff --git a/t/inventory/solaris/networks.t b/t/inventory/solaris/networks.t
index 7a231d6..8c0e1b0 100755
--- a/t/inventory/solaris/networks.t
+++ b/t/inventory/solaris/networks.t
@@ -116,14 +116,12 @@ my %ifconfig_tests = (
plan tests =>
int (1 + keys %ifconfig_tests);
-use Data::Dumper;
foreach my $test (keys %ifconfig_tests) {
my $file = "resources/generic/ifconfig/$test";
my @results = FusionInventory::Agent::Task::Inventory::Input::Solaris::Networks::_getInterfaces(file => $file);
- is_deeply(\@results, $ifconfig_tests{$test}, $test) or print Dumper(\@results);
+ is_deeply(\@results, $ifconfig_tests{$test}, $test);
}
-
my @parsefcinfo = (
{
'FIRMWARE' => '05.03.02',
@@ -150,4 +148,4 @@ my @parsefcinfo = (
);
my $file = "resources/solaris/fcinfo_hba-port/sample-1";
my @result = FusionInventory::Agent::Task::Inventory::Input::Solaris::Networks::_parsefcinfo(file => $file);
-is_deeply(\@result, \@parsefcinfo, "_parsefcinfo") or print Dumper(\@result);
+is_deeply(\@result, \@parsefcinfo, "_parsefcinfo");
diff --git a/t/inventory/windows/networks.t b/t/inventory/windows/networks.t
index 8415248..b854a24 100755
--- a/t/inventory/windows/networks.t
+++ b/t/inventory/windows/networks.t
@@ -21,7 +21,7 @@ use FusionInventory::Agent::Task::Inventory::Input::Win32::Networks;
my %tests = (
7 => [
{
- 'dns' => '192.168.0.254',
+ dns => '192.168.0.254',
IPMASK6 => [ '64' ],
IPMASK => [ '255.255.255.0' ],
IPGATEWAY => '192.168.0.254',
@@ -40,6 +40,14 @@ my %tests = (
TYPE => 'Ethernet'
},
{
+ dns => undef,
+ IPGATEWAY => undef,
+ IPADDRESS6 => undef,
+ IPMASK6 => undef,
+ IPSUBNET6 => undef,
+ IPADDRESS => undef,
+ IPMASK => undef,
+ IPSUBNET => undef,
MTU => undef,
MACADDR => '00:26:83:12:FB:0B',
STATUS => 'Up',
@@ -51,6 +59,141 @@ my %tests = (
SPEED => 0
},
],
+ xp => [
+ {
+ dns => undef,
+ IPADDRESS6 => undef,
+ IPMASK6 => undef,
+ IPSUBNET6 => undef,
+ IPADDRESS => undef,
+ IPMASK => undef,
+ IPSUBNET => undef,
+ IPGATEWAY => undef,
+ VIRTUALDEV => 1,
+ PNPDEVICEID => 'ROOT\\MS_PPTPMINIPORT\\0000',
+ MACADDR => '50:50:54:50:30:30',
+ STATUS => 'Up',
+ TYPE => "Red de \x{e1}rea extensa (WAN)",
+ SPEED => undef,
+ IPDHCP => undef,
+ MTU => undef,
+ DESCRIPTION => 'Minipuerto WAN (PPTP)'
+ },
+ {
+ dns => undef,
+ IPADDRESS6 => undef,
+ IPMASK6 => undef,
+ IPSUBNET6 => undef,
+ IPADDRESS => undef,
+ IPMASK => undef,
+ IPSUBNET => undef,
+ IPGATEWAY => undef,
+ VIRTUALDEV => 1,
+ PNPDEVICEID => 'ROOT\\MS_PPPOEMINIPORT\\0000',
+ MACADDR => '33:50:6F:45:30:30',
+ STATUS => 'Up',
+ TYPE => "Red de \x{e1}rea extensa (WAN)",
+ SPEED => undef,
+ IPDHCP => undef,
+ MTU => undef,
+ DESCRIPTION => 'Minipuerto WAN (PPPOE)'
+ },
+ {
+ dns => undef,
+ IPADDRESS6 => undef,
+ IPMASK6 => undef,
+ IPSUBNET6 => undef,
+ IPADDRESS => undef,
+ IPMASK => undef,
+ IPSUBNET => undef,
+ IPGATEWAY => undef,
+ VIRTUALDEV => 1,
+ PNPDEVICEID => 'ROOT\\MS_PSCHEDMP\\0000',
+ MACADDR => '26:0F:20:52:41:53',
+ STATUS => 'Up',
+ TYPE => 'Ethernet',
+ SPEED => undef,
+ IPDHCP => undef,
+ MTU => undef,
+ DESCRIPTION => 'Minipuerto del administrador de paquetes'
+ },
+ {
+ dns => '10.36.6.100',
+ IPMASK => [ '255.255.254.0' ],
+ IPGATEWAY => '10.36.6.1',
+ VIRTUALDEV => 0,
+ PNPDEVICEID => 'PCI\\VEN_14E4&DEV_1677&SUBSYS_3006103C&REV_01\\4&1886B119&0&00E1',
+ MACADDR => '00:14:C2:0D:B0:FB',
+ STATUS => 'Up',
+ TYPE => 'Ethernet',
+ SPEED => undef,
+ IPDHCP => '10.36.6.100',
+ IPSUBNET => [ '10.36.6.0' ],
+ MTU => undef,
+ DESCRIPTION => 'Broadcom NetXtreme Gigabit Ethernet - Teefer2 Miniport',
+ IPADDRESS => [ '10.36.6.30' ],
+ IPADDRESS6 => undef,
+ IPMASK6 => undef,
+ IPSUBNET6 => undef,
+ },
+ {
+ dns => undef,
+ IPADDRESS6 => undef,
+ IPMASK6 => undef,
+ IPSUBNET6 => undef,
+ IPADDRESS => undef,
+ IPMASK => undef,
+ IPSUBNET => undef,
+ IPGATEWAY => undef,
+ VIRTUALDEV => 1,
+ PNPDEVICEID => 'ROOT\\MS_PSCHEDMP\\0002',
+ MACADDR => '00:14:C2:0D:B0:FB',
+ STATUS => 'Up',
+ TYPE => 'Ethernet',
+ SPEED => undef,
+ IPDHCP => undef,
+ MTU => undef,
+ DESCRIPTION => 'Minipuerto del administrador de paquetes'
+ },
+ {
+ dns => undef,
+ IPADDRESS6 => undef,
+ IPMASK6 => undef,
+ IPSUBNET6 => undef,
+ IPADDRESS => undef,
+ IPMASK => undef,
+ IPSUBNET => undef,
+ IPGATEWAY => undef,
+ VIRTUALDEV => 1,
+ PNPDEVICEID => 'ROOT\\SYMC_TEEFER2MP\\0000',
+ MACADDR => '00:14:C2:0D:B0:FB',
+ STATUS => 'Up',
+ TYPE => 'Ethernet',
+ SPEED => undef,
+ IPDHCP => undef,
+ MTU => undef,
+ DESCRIPTION => 'Teefer2 Miniport'
+ },
+ {
+ dns => undef,
+ IPADDRESS6 => undef,
+ IPMASK6 => undef,
+ IPSUBNET6 => undef,
+ IPADDRESS => undef,
+ IPMASK => undef,
+ IPSUBNET => undef,
+ IPGATEWAY => undef,
+ VIRTUALDEV => 1,
+ PNPDEVICEID => 'ROOT\\SYMC_TEEFER2MP\\0002',
+ MACADDR => '26:0F:20:52:41:53',
+ STATUS => 'Up',
+ TYPE => 'Ethernet',
+ SPEED => undef,
+ IPDHCP => undef,
+ MTU => undef,
+ DESCRIPTION => 'Teefer2 Miniport'
+ }
+ ]
);
plan tests => scalar keys %tests;
diff --git a/t/tools/generic.t b/t/tools/generic.t
index 12090c8..671d570 100755
--- a/t/tools/generic.t
+++ b/t/tools/generic.t
@@ -6188,13 +6188,12 @@ foreach my $test (keys %dmidecode_tests) {
my $file = "resources/generic/dmidecode/$test";
my $infos = getDmidecodeInfos(file => $file);
is_deeply($infos, $dmidecode_tests{$test}, "$test dmidecode parsing");
- use Data::Dumper;
}
foreach my $test (keys %cpu_tests) {
my $file = "resources/generic/dmidecode/$test";
my @cpus = getCpusFromDmidecode(file => $file);
- is_deeply(\@cpus, $cpu_tests{$test}, "$test dmidecode cpu extraction") or print Dumper(\@cpus);
+ is_deeply(\@cpus, $cpu_tests{$test}, "$test dmidecode cpu extraction");
}
foreach my $test (keys %lspci_tests) {
diff --git a/t/tools/macos.t b/t/tools/macos.t
index 34aefd5..164f94f 100755
--- a/t/tools/macos.t
+++ b/t/tools/macos.t
@@ -2844,170 +2844,333 @@ my %system_profiler_tests = (
}
);
-my %ioreg_tests = (
- IOUSBDevice => [
- {
- 'IOGeneralInterest' => 'IOCommand is not serializable',
- 'USB Address' => '2',
- 'Requested Power' => '20',
- 'idProduct' => '539',
- 'bMaxPacketSize0' => '8',
- 'USB Vendor Name' => 'Apple Computer',
- 'sessionID' => '922879256',
- 'bNumConfigurations' => '1',
- 'bDeviceProtocol' => '0',
- 'Bus Power Available' => '250',
- 'Device Speed' => '1',
- 'USB Product Name' => 'Apple Internal Keyboard / Trackpad',
- 'iProduct' => '2',
- 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
- 'non-removable' => 'yes',
- 'bDeviceClass' => '0',
- 'bDeviceSubClass' => '0',
- 'PortNum' => '2',
- 'bcdDevice' => '24',
- 'locationID' => '488636416',
- 'iManufacturer' => '1',
- 'iSerialNumber' => '0',
- 'idVendor' => '1452'
- },
- {
- 'IOGeneralInterest' => 'IOCommand is not serializable',
- 'USB Address' => '2',
- 'Requested Power' => '50',
- 'idProduct' => '33344',
- 'bMaxPacketSize0' => '8',
- 'USB Vendor Name' => 'Apple Computer, Inc.',
- 'sessionID' => '944991920',
- 'bNumConfigurations' => '1',
- 'bDeviceProtocol' => '0',
- 'Bus Power Available' => '250',
- 'Device Speed' => '1',
- 'USB Product Name' => 'IR Receiver',
- 'iProduct' => '2',
- 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
- 'non-removable' => 'yes',
- 'bDeviceClass' => '0',
- 'bDeviceSubClass' => '0',
- 'PortNum' => '2',
- 'bcdDevice' => '272',
- 'locationID' => '1562378240',
- 'iManufacturer' => '1',
- 'iSerialNumber' => '0',
- 'idVendor' => '1452'
- },
- {
- 'IOGeneralInterest' => 'IOCommand is not serializable',
- 'USB Address' => '2',
- 'Requested Power' => '0',
- 'idProduct' => '33285',
- 'bMaxPacketSize0' => '64',
- 'USB Vendor Name' => 'Apple Inc.',
- 'sessionID' => '3290864968',
- 'bNumConfigurations' => '1',
- 'bDeviceProtocol' => '1',
- 'Bus Power Available' => '250',
- 'Device Speed' => '1',
- 'iProduct' => '0',
- 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
- 'USB Product Name' => 'Bluetooth USB Host Controller',
- 'PortNum' => '1',
- 'bDeviceClass' => '224',
- 'bDeviceSubClass' => '1',
- 'non-removable' => 'yes',
- 'bcdDevice' => '6501',
- 'locationID' => '2098200576',
- 'iManufacturer' => '0',
- 'iSerialNumber' => '0',
- 'idVendor' => '1452'
- },
- {
- 'IOGeneralInterest' => 'IOCommand is not serializable',
- 'USB Address' => '2',
- 'Requested Power' => '50',
- 'idProduct' => '34049',
- 'bMaxPacketSize0' => '64',
- 'USB Vendor Name' => 'Micron',
- 'sessionID' => '2717373407',
- 'bNumConfigurations' => '1',
- 'bDeviceProtocol' => '255',
- 'Bus Power Available' => '250',
- 'Device Speed' => '2',
- 'USB Product Name' => 'Built-in iSight',
- 'iProduct' => '2',
- 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
- 'non-removable' => 'yes',
- 'bDeviceClass' => '255',
- 'bDeviceSubClass' => '255',
- 'PortNum' => '4',
- 'bcdDevice' => '393',
- 'locationID' => '18446744073663414272',
- 'iManufacturer' => '1',
- 'iSerialNumber' => '0',
- 'idVendor' => '1452'
- },
- {
- 'IOGeneralInterest' => 'IOCommand is not serializable',
- 'USB Address' => '3',
- 'Requested Power' => '50',
- 'idProduct' => '24613',
- 'bMaxPacketSize0' => '64',
- 'USB Vendor Name' => 'CBM',
- 'sessionID' => '3995793432240',
- 'bNumConfigurations' => '1',
- 'bDeviceProtocol' => '0',
- 'Bus Power Available' => '250',
- 'uid' => 'USB:197660250078C5C90000',
- 'Device Speed' => '2',
- 'USB Product Name' => 'Flash Disk',
- 'iProduct' => '2',
- 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
- 'bDeviceClass' => '0',
- 'bDeviceSubClass' => '0',
- 'PortNum' => '3',
- 'bcdDevice' => '256',
- 'locationID' => '18446744073662365696',
- 'iManufacturer' => '1',
- 'iSerialNumber' => '3',
- 'idVendor' => '6518',
- 'USB Serial Number' => '16270078C5C90000'
- }
- ],
- IOPlatformExpertDevice => [
- {
- 'IOPlatformUUID' => '00000000-0000-1000-8000-001B633026B1',
- 'IOBusyInterest' => 'IOCommand is not serializable',
- 'IOPlatformSerialNumber' => 'W87305UMYA8',
- 'IOPolledInterface' => 'SMCPolledInterface is not serializable',
- 'compatible' => 'MacBook2,1',
- 'model' => 'MacBook2,1',
- 'serial-number' => '59413800000000000000000000573837333035554',
- 'version' => '1.0',
- 'name' => '/',
- 'board-id' => 'Mac-F4208CAA',
- 'clock-frequency' => '00',
- 'system-type' => '02',
- 'manufacturer' => 'Apple Inc.',
- 'product-name' => 'MacBook2,1',
- 'IOPlatformArgs' => '0030'
- }
- ]
+my @ioreg_tests = (
+ {
+ file => 'IOUSBDevice1',
+ class => 'IOUSBDevice',
+ results => [
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '2',
+ 'Requested Power' => '20',
+ 'idProduct' => '539',
+ 'bMaxPacketSize0' => '8',
+ 'USB Vendor Name' => 'Apple Computer',
+ 'sessionID' => '922879256',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '0',
+ 'Bus Power Available' => '250',
+ 'Device Speed' => '1',
+ 'USB Product Name' => 'Apple Internal Keyboard / Trackpad',
+ 'iProduct' => '2',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'non-removable' => 'yes',
+ 'bDeviceClass' => '0',
+ 'bDeviceSubClass' => '0',
+ 'PortNum' => '2',
+ 'bcdDevice' => '24',
+ 'locationID' => '488636416',
+ 'iManufacturer' => '1',
+ 'iSerialNumber' => '0',
+ 'idVendor' => '1452'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '2',
+ 'Requested Power' => '50',
+ 'idProduct' => '33344',
+ 'bMaxPacketSize0' => '8',
+ 'USB Vendor Name' => 'Apple Computer, Inc.',
+ 'sessionID' => '944991920',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '0',
+ 'Bus Power Available' => '250',
+ 'Device Speed' => '1',
+ 'USB Product Name' => 'IR Receiver',
+ 'iProduct' => '2',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'non-removable' => 'yes',
+ 'bDeviceClass' => '0',
+ 'bDeviceSubClass' => '0',
+ 'PortNum' => '2',
+ 'bcdDevice' => '272',
+ 'locationID' => '1562378240',
+ 'iManufacturer' => '1',
+ 'iSerialNumber' => '0',
+ 'idVendor' => '1452'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '2',
+ 'Requested Power' => '0',
+ 'idProduct' => '33285',
+ 'bMaxPacketSize0' => '64',
+ 'USB Vendor Name' => 'Apple Inc.',
+ 'sessionID' => '3290864968',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '1',
+ 'Bus Power Available' => '250',
+ 'Device Speed' => '1',
+ 'iProduct' => '0',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'USB Product Name' => 'Bluetooth USB Host Controller',
+ 'PortNum' => '1',
+ 'bDeviceClass' => '224',
+ 'bDeviceSubClass' => '1',
+ 'non-removable' => 'yes',
+ 'bcdDevice' => '6501',
+ 'locationID' => '2098200576',
+ 'iManufacturer' => '0',
+ 'iSerialNumber' => '0',
+ 'idVendor' => '1452'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '2',
+ 'Requested Power' => '50',
+ 'idProduct' => '34049',
+ 'bMaxPacketSize0' => '64',
+ 'USB Vendor Name' => 'Micron',
+ 'sessionID' => '2717373407',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '255',
+ 'Bus Power Available' => '250',
+ 'Device Speed' => '2',
+ 'USB Product Name' => 'Built-in iSight',
+ 'iProduct' => '2',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'non-removable' => 'yes',
+ 'bDeviceClass' => '255',
+ 'bDeviceSubClass' => '255',
+ 'PortNum' => '4',
+ 'bcdDevice' => '393',
+ 'locationID' => '18446744073663414272',
+ 'iManufacturer' => '1',
+ 'iSerialNumber' => '0',
+ 'idVendor' => '1452'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '3',
+ 'Requested Power' => '50',
+ 'idProduct' => '24613',
+ 'bMaxPacketSize0' => '64',
+ 'USB Vendor Name' => 'CBM',
+ 'sessionID' => '3995793432240',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '0',
+ 'Bus Power Available' => '250',
+ 'uid' => 'USB:197660250078C5C90000',
+ 'Device Speed' => '2',
+ 'USB Product Name' => 'Flash Disk',
+ 'iProduct' => '2',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'bDeviceClass' => '0',
+ 'bDeviceSubClass' => '0',
+ 'PortNum' => '3',
+ 'bcdDevice' => '256',
+ 'locationID' => '18446744073662365696',
+ 'iManufacturer' => '1',
+ 'iSerialNumber' => '3',
+ 'idVendor' => '6518',
+ 'USB Serial Number' => '16270078C5C90000'
+ }
+ ],
+ },
+ {
+ file => 'IOUSBDevice2',
+ class => 'IOUSBDevice',
+ results => [
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '3',
+ 'Requested Power' => '50',
+ 'idProduct' => '54',
+ 'bMaxPacketSize0' => '8',
+ 'USB Vendor Name' => 'Genius',
+ 'sessionID' => '1035836159',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '0',
+ 'Bus Power Available' => '250',
+ 'Device Speed' => '0',
+ 'USB Product Name' => 'NetScroll + Mini Traveler',
+ 'iProduct' => '1',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'bDeviceClass' => '0',
+ 'bDeviceSubClass' => '0',
+ 'PortNum' => '2',
+ 'bcdDevice' => '272',
+ 'locationID' => '438304768',
+ 'iManufacturer' => '2',
+ 'iSerialNumber' => '0',
+ 'idVendor' => '1112'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '2',
+ 'Requested Power' => '0',
+ 'idProduct' => '33286',
+ 'bMaxPacketSize0' => '64',
+ 'USB Vendor Name' => 'Apple Inc.',
+ 'sessionID' => '3009829809',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '1',
+ 'Bus Power Available' => '250',
+ 'Device Speed' => '1',
+ 'iProduct' => '0',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'USB Product Name' => 'Bluetooth USB Host Controller',
+ 'PortNum' => '1',
+ 'bDeviceClass' => '224',
+ 'bDeviceSubClass' => '1',
+ 'non-removable' => 'yes',
+ 'bcdDevice' => '6501',
+ 'locationID' => '437256192',
+ 'iManufacturer' => '0',
+ 'iSerialNumber' => '0',
+ 'idVendor' => '1452'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '3',
+ 'Requested Power' => '10',
+ 'idProduct' => '545',
+ 'bMaxPacketSize0' => '8',
+ 'USB Vendor Name' => 'Apple, Inc',
+ 'sessionID' => '1018522533',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '0',
+ 'Bus Power Available' => '50',
+ 'Device Speed' => '0',
+ 'USB Product Name' => 'Apple Keyboard',
+ 'iProduct' => '2',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'non-removable' => 'yes',
+ 'bDeviceClass' => '0',
+ 'bDeviceSubClass' => '0',
+ 'PortNum' => '2',
+ 'bcdDevice' => '105',
+ 'locationID' => '18446744073613213696',
+ 'iManufacturer' => '1',
+ 'iSerialNumber' => '0',
+ 'idVendor' => '1452'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '2',
+ 'Requested Power' => '50',
+ 'idProduct' => '33346',
+ 'bMaxPacketSize0' => '8',
+ 'USB Vendor Name' => 'Apple Computer, Inc.',
+ 'sessionID' => '1116620200',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '0',
+ 'Bus Power Available' => '250',
+ 'Device Speed' => '0',
+ 'USB Product Name' => 'IR Receiver',
+ 'iProduct' => '2',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'non-removable' => 'yes',
+ 'bDeviceClass' => '0',
+ 'bDeviceSubClass' => '0',
+ 'PortNum' => '1',
+ 'bcdDevice' => '22',
+ 'locationID' => '1561329664',
+ 'iManufacturer' => '1',
+ 'iSerialNumber' => '0',
+ 'idVendor' => '1452'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '2',
+ 'Requested Power' => '1',
+ 'idProduct' => '4138',
+ 'bMaxPacketSize0' => '64',
+ 'USB Vendor Name' => 'LaCie',
+ 'sessionID' => '637721320',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '0',
+ 'Bus Power Available' => '250',
+ 'uid' => 'USB:059F102A6E7A5FFFFFFF',
+ 'Device Speed' => '2',
+ 'USB Product Name' => 'LaCie Device',
+ 'iProduct' => '11',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'bDeviceClass' => '0',
+ 'bDeviceSubClass' => '0',
+ 'PortNum' => '1',
+ 'bcdDevice' => '256',
+ 'locationID' => '18446744073660268544',
+ 'iManufacturer' => '10',
+ 'iSerialNumber' => '5',
+ 'idVendor' => '1439',
+ 'USB Serial Number' => '6E7A5FFFFFFF'
+ },
+ {
+ 'IOGeneralInterest' => 'IOCommand is not serializable',
+ 'USB Address' => '3',
+ 'Requested Power' => '250',
+ 'idProduct' => '34050',
+ 'bMaxPacketSize0' => '64',
+ 'USB Vendor Name' => 'Apple Inc.',
+ 'sessionID' => '791376929',
+ 'bNumConfigurations' => '1',
+ 'bDeviceProtocol' => '1',
+ 'Bus Power Available' => '250',
+ 'Device Speed' => '2',
+ 'USB Product Name' => 'Built-in iSight',
+ 'iProduct' => '2',
+ 'IOUserClientClass' => 'IOUSBDeviceUserClientV2',
+ 'non-removable' => 'yes',
+ 'bDeviceClass' => '239',
+ 'bDeviceSubClass' => '2',
+ 'PortNum' => '4',
+ 'bcdDevice' => '341',
+ 'locationID' => '18446744073663414272',
+ 'iManufacturer' => '1',
+ 'iSerialNumber' => '3',
+ 'idVendor' => '1452',
+ 'USB Serial Number' => '6067E773DA9722F4 (03.01)'
+ }
+ ]
+ },
+ {
+ file => 'IOPlatformExpertDevice',
+ class => 'IOPlatformExpertDevice',
+ results => [
+ {
+ 'IOPlatformUUID' => '00000000-0000-1000-8000-001B633026B1',
+ 'IOBusyInterest' => 'IOCommand is not serializable',
+ 'IOPlatformSerialNumber' => 'W87305UMYA8',
+ 'IOPolledInterface' => 'SMCPolledInterface is not serializable',
+ 'compatible' => 'MacBook2,1',
+ 'model' => 'MacBook2,1',
+ 'serial-number' => '59413800000000000000000000573837333035554',
+ 'version' => '1.0',
+ 'name' => '/',
+ 'board-id' => 'Mac-F4208CAA',
+ 'clock-frequency' => '00',
+ 'system-type' => '02',
+ 'manufacturer' => 'Apple Inc.',
+ 'product-name' => 'MacBook2,1',
+ 'IOPlatformArgs' => '0030'
+ }
+ ],
+ }
);
plan tests =>
scalar (keys %system_profiler_tests) +
- scalar (keys %ioreg_tests);
-
+ scalar @ioreg_tests;
foreach my $test (keys %system_profiler_tests) {
my $file = "resources/macos/system_profiler/$test";
my $infos = getSystemProfilerInfos(file => $file);
is_deeply($infos, $system_profiler_tests{$test}, "$test system profiler parsing");
- use Data::Dumper;
}
-foreach my $test (keys %ioreg_tests) {
- my $file = "resources/macos/ioreg/$test";
- my @devices = getIODevices(file => $file, class => $test);
- is_deeply(\@devices, $ioreg_tests{$test}, "$test ioreg parsing");
+foreach my $test (@ioreg_tests) {
+ my $file = "resources/macos/ioreg/$test->{file}";
+ my @devices = getIODevices(file => $file, class => $test->{class});
+ is_deeply(\@devices, $test->{results}, "$test->{file} ioreg parsing");
}
================================================================
Commit: 53339ac847285280542b7dc598f6ecfba43cb973
https://github.com/fusinv/fusioninventory-agent/commit/53339ac847285280542b7dc598f6ecfba43cb973
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-19 (Mon, 19 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Client/Fusion.pm
M lib/FusionInventory/Agent/HTTP/Client/OCS.pm
M lib/FusionInventory/Agent/Task/Inventory.pm
M lib/FusionInventory/Agent/Tools/Screen.pm
Log Message:
-----------
make perlcritic happy
diff --git a/lib/FusionInventory/Agent/HTTP/Client/Fusion.pm b/lib/FusionInventory/Agent/HTTP/Client/Fusion.pm
index 87460a9..6ee5e7c 100644
--- a/lib/FusionInventory/Agent/HTTP/Client/Fusion.pm
+++ b/lib/FusionInventory/Agent/HTTP/Client/Fusion.pm
@@ -36,7 +36,7 @@ sub _prepareVal {
return uri_escape($val);
}
-sub send {
+sub send { ## no critic (ProhibitBuiltinHomonyms)
my ($self, %params) = @_;
push @{$self->{msgStack}}, $params{args} if $self->{debug};
diff --git a/lib/FusionInventory/Agent/HTTP/Client/OCS.pm b/lib/FusionInventory/Agent/HTTP/Client/OCS.pm
index 9c001f4..a65822b 100644
--- a/lib/FusionInventory/Agent/HTTP/Client/OCS.pm
+++ b/lib/FusionInventory/Agent/HTTP/Client/OCS.pm
@@ -50,7 +50,7 @@ sub new {
return $self;
}
-sub send {
+sub send { ## no critic (ProhibitBuiltinHomonyms)
my ($self, %params) = @_;
my $url = ref $params{url} eq 'URI' ?
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index ce3eb4c..13dc0b0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -190,8 +190,8 @@ sub _initModulesList {
# second pass: disable fallback modules
foreach my $module (@modules) {
- ## no critic (ProhibitNoStrict ProhibitProlongedStrictureOverride)
- no strict 'refs';
+ ## no critic (ProhibitProlongedStrictureOverride)
+ no strict 'refs'; ## no critic (ProhibitNoStrict)
# skip modules already disabled
next unless $self->{modules}->{$module}->{enabled};
diff --git a/lib/FusionInventory/Agent/Tools/Screen.pm b/lib/FusionInventory/Agent/Tools/Screen.pm
index d3dddcb..5cb71db 100644
--- a/lib/FusionInventory/Agent/Tools/Screen.pm
+++ b/lib/FusionInventory/Agent/Tools/Screen.pm
@@ -192,7 +192,7 @@ sub checkParsedEdid {
sub parseEdid {
my ($raw_edid) = @_;
- no warnings 'uninitialized';
+ no warnings 'uninitialized'; ## no critic (ProhibitNoWarnings)
my %edid;
my @vals = unpack(join('', map { $_->[0] } @edid_info), $raw_edid);
================================================================
Commit: a32bb8f0de834e009c74af0fc89d9d9eb4e86eb2
https://github.com/fusinv/fusioninventory-agent/commit/a32bb8f0de834e009c74af0fc89d9d9eb4e86eb2
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-19 (Mon, 19 Mar 2012)
Changed paths:
A resources/generic/dmidecode/windows-xp
Log Message:
-----------
initial import
diff --git a/resources/generic/dmidecode/windows-xp b/resources/generic/dmidecode/windows-xp
new file mode 100644
index 0000000..6b999c7
--- /dev/null
+++ b/resources/generic/dmidecode/windows-xp
@@ -0,0 +1,586 @@
+# dmidecode 2.11
+SMBIOS 2.4 present.
+57 structures occupying 2822 bytes.
+Table at 0x000F6570.
+
+Handle 0xDA00, DMI type 218, 251 bytes
+OEM-specific Type
+ Header and Data:
+ DA FB 00 DA B2 00 0D 5F 1F 37 40 7D 00 00 00 00
+ 00 40 00 02 00 01 00 41 00 02 00 00 00 65 00 03
+ 00 00 00 66 00 03 00 01 00 F1 00 04 00 00 00 F2
+ 00 04 00 01 00 F3 00 04 00 02 00 0F 00 05 00 00
+ 00 11 00 05 00 01 00 05 00 05 00 02 00 12 00 05
+ 00 03 00 06 00 05 00 04 00 07 00 06 00 00 00 0B
+ 00 06 00 01 00 0C 00 06 00 02 00 0D 00 06 00 03
+ 00 89 01 07 00 00 00 8A 01 07 00 01 00 42 00 08
+ 00 01 00 43 00 08 00 00 00 55 00 09 00 00 00 6D
+ 00 09 00 01 00 16 02 09 00 02 00 98 01 09 00 03
+ 00 0A 01 0A 00 01 00 0B 01 0A 00 00 00 2D 00 0B
+ 00 02 00 6E 00 0B 00 01 00 2E 00 0B 00 00 00 11
+ 01 0C 00 00 00 10 01 0C 00 01 00 F0 00 0D 00 01
+ 00 ED 00 0D 00 00 00 41 01 0E 00 01 00 40 01 0E
+ 00 00 00 47 01 0F 00 01 00 46 01 0F 00 00 00 4A
+ 01 10 00 00 00 FF FF 00 00 00 00
+
+Handle 0xDA01, DMI type 218, 251 bytes
+OEM-specific Type
+ Header and Data:
+ DA FB 01 DA B2 00 0D 5F 1F 37 40 4B 01 10 00 01
+ 00 04 02 11 00 00 00 05 02 11 00 01 00 02 02 12
+ 00 00 00 03 02 12 00 01 00 52 01 13 00 01 00 53
+ 01 13 00 00 00 80 01 14 00 01 00 7F 01 14 00 00
+ 00 7C 01 15 00 01 00 7B 01 15 00 00 00 E8 02 16
+ 00 00 00 E9 02 16 00 01 00 7E 01 17 00 01 00 7D
+ 01 17 00 00 00 92 01 18 00 00 00 91 01 18 00 01
+ 00 94 01 19 00 00 00 93 01 19 00 01 00 86 01 1A
+ 00 01 00 85 01 1A 00 00 00 82 01 1B 00 01 00 81
+ 01 1B 00 00 00 84 01 1C 00 01 00 83 01 1C 00 00
+ 00 9B 01 1D 00 00 00 9C 01 1D 00 01 00 9D 01 1D
+ 00 02 00 9E 01 1D 00 03 00 8D 01 1E 00 00 00 8E
+ 01 1E 00 01 00 85 02 1F 00 00 00 86 02 1F 00 01
+ 00 EA 00 20 00 00 00 EB 00 20 00 01 00 EC 00 20
+ 00 02 00 A1 00 21 00 00 00 A3 00 21 00 01 00 28
+ 00 22 00 00 00 FF FF 00 00 00 00
+
+Handle 0xDA02, DMI type 218, 251 bytes
+OEM-specific Type
+ Header and Data:
+ DA FB 02 DA B2 00 0D 5F 1F 37 40 29 00 22 00 01
+ 00 2A 00 22 00 02 00 2B 00 23 00 00 00 2C 00 24
+ 00 00 00 0E 01 25 00 01 00 0F 01 25 00 00 00 9B
+ 00 26 00 01 00 9C 00 26 00 00 00 4D 01 27 00 01
+ 00 4C 01 27 00 00 00 87 01 28 00 00 00 88 01 28
+ 00 01 00 35 01 29 00 03 00 37 01 29 00 00 00 38
+ 01 29 00 01 00 39 01 29 00 02 00 D9 01 2A 00 01
+ 00 D8 01 2A 00 00 00 DF 01 2B 00 01 00 DE 01 2B
+ 00 00 00 45 02 2C 00 00 00 44 02 2C 00 01 00 49
+ 02 2D 00 00 00 48 02 2D 00 01 00 45 01 45 01 01
+ 00 44 01 44 01 00 00 76 01 76 01 01 00 75 01 75
+ 01 01 00 9F 00 9F 00 00 00 A0 00 A0 00 01 00 E1
+ 01 E1 01 00 00 E3 01 E3 01 01 00 E2 01 E2 01 02
+ 00 29 02 29 02 01 00 28 02 28 02 02 00 2A 02 2A
+ 02 03 00 30 02 30 02 01 00 2F 02 2F 02 00 00 35
+ 02 35 02 01 00 FF FF 00 00 00 00
+
+Handle 0xDA03, DMI type 218, 77 bytes
+OEM-specific Type
+ Header and Data:
+ DA 4D 03 DA B2 00 0D 5F 1F 37 40 36 02 36 02 00
+ 00 37 02 37 02 02 00 4A 02 4A 02 01 00 0C 80 0C
+ 80 01 00 6C 02 6C 02 01 00 6D 02 6D 02 00 00 01
+ F0 01 F0 00 00 02 F0 02 F0 00 00 03 F0 03 F0 00
+ 00 04 F0 04 F0 00 00 FF FF 00 00 00 00
+
+Handle 0x0000, DMI type 0, 24 bytes
+BIOS Information
+ Vendor: Dell Inc.
+ Version: A24
+ Release Date: 08/19/2010
+ Address: 0xF0000
+ Runtime Size: 64 kB
+ ROM Size: 1728 kB
+ Characteristics:
+ ISA is supported
+ PCI is supported
+ PC Card (PCMCIA) is supported
+ PNP is supported
+ BIOS is upgradeable
+ BIOS shadowing is allowed
+ Boot from CD is supported
+ Selectable boot is supported
+ 3.5"/720 kB floppy services are supported (int 13h)
+ Print screen service is supported (int 5h)
+ 8042 keyboard services are supported (int 9h)
+ Serial services are supported (int 14h)
+ Printer services are supported (int 17h)
+ CGA/mono video services are supported (int 10h)
+ ACPI is supported
+ USB legacy is supported
+ AGP is supported
+ Smart battery is supported
+ BIOS boot specification is supported
+ Function key-initiated network boot is supported
+ Targeted content distribution is supported
+ BIOS Revision: 2.4
+ Firmware Revision: 2.4
+
+Handle 0x0100, DMI type 1, 27 bytes
+System Information
+ Manufacturer: Dell Inc.
+ Product Name: Precision M4400
+ Version: Not Specified
+ Serial Number: HLG964J
+ UUID: 44454C4C-4C00-1047-8039-C8C04F36344A
+ Wake-up Type: Power Switch
+ SKU Number: Not Specified
+ Family:
+
+Handle 0x0200, DMI type 2, 9 bytes
+Base Board Information
+ Manufacturer: Dell Inc.
+ Product Name: 0P019G
+ Version:
+ Serial Number: .HLG964J.CN129618C52450.
+ Asset Tag:
+
+Handle 0x0300, DMI type 3, 13 bytes
+Chassis Information
+ Manufacturer: Dell Inc.
+ Type: Portable
+ Lock: Not Present
+ Version: Not Specified
+ Serial Number: HLG964J
+ Asset Tag: Not Specified
+ Boot-up State: Safe
+ Power Supply State: Safe
+ Thermal State: Safe
+ Security Status: None
+
+Handle 0x0400, DMI type 4, 40 bytes
+Processor Information
+ Socket Designation: Microprocessor
+ Type: Central Processor
+ Family: Core 2 Duo
+ Manufacturer: Intel
+ ID: 76 06 01 00 FF FB EB BF
+ Signature: Type 0, Family 6, Model 23, Stepping 6
+ Flags:
+ FPU (Floating-point unit on-chip)
+ VME (Virtual mode extension)
+ DE (Debugging extension)
+ PSE (Page size extension)
+ TSC (Time stamp counter)
+ MSR (Model specific registers)
+ PAE (Physical address extension)
+ MCE (Machine check exception)
+ CX8 (CMPXCHG8 instruction supported)
+ APIC (On-chip APIC hardware supported)
+ SEP (Fast system call)
+ MTRR (Memory type range registers)
+ PGE (Page global enable)
+ MCA (Machine check architecture)
+ CMOV (Conditional move instruction supported)
+ PAT (Page attribute table)
+ PSE-36 (36-bit page size extension)
+ CLFSH (CLFLUSH instruction supported)
+ DS (Debug store)
+ ACPI (ACPI supported)
+ MMX (MMX technology supported)
+ FXSR (FXSAVE and FXSTOR instructions supported)
+ SSE (Streaming SIMD extensions)
+ SSE2 (Streaming SIMD extensions 2)
+ SS (Self-snoop)
+ HTT (Multi-threading)
+ TM (Thermal monitor supported)
+ PBE (Pending break enabled)
+ Version: Not Specified
+ Voltage: 3.3 V
+ External Clock: 266 MHz
+ Max Speed: 2534 MHz
+ Current Speed: 2534 MHz
+ Status: Populated, Enabled
+ Upgrade: None
+ L1 Cache Handle: 0x0700
+ L2 Cache Handle: 0x0701
+ L3 Cache Handle: Not Provided
+ Serial Number: Not Specified
+ Asset Tag: Not Specified
+ Part Number: Not Specified
+ Core Count: 2
+ Core Enabled: 2
+ Thread Count: 2
+ Characteristics:
+ 64-bit capable
+
+Handle 0x0700, DMI type 7, 19 bytes
+Cache Information
+ Socket Designation: Not Specified
+ Configuration: Enabled, Not Socketed, Level 1
+ Operational Mode: Write Back
+ Location: Internal
+ Installed Size: 128 kB
+ Maximum Size: 128 kB
+ Supported SRAM Types:
+ Unknown
+ Installed SRAM Type: Unknown
+ Speed: Unknown
+ Error Correction Type: None
+ System Type: Data
+ Associativity: 4-way Set-associative
+
+Handle 0x0701, DMI type 7, 19 bytes
+Cache Information
+ Socket Designation: Not Specified
+ Configuration: Enabled, Not Socketed, Level 2
+ Operational Mode: Varies With Memory Address
+ Location: Internal
+ Installed Size: 6144 kB
+ Maximum Size: 6144 kB
+ Supported SRAM Types:
+ Pipeline Burst
+ Installed SRAM Type: Pipeline Burst
+ Speed: 15 ns
+ Error Correction Type: None
+ System Type: Unified
+ Associativity: Other
+
+Handle 0x0800, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: PARALLEL
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: DB-25 female
+ Port Type: Parallel Port PS/2
+
+Handle 0x0801, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: SERIAL1
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: DB-9 male
+ Port Type: Serial Port 16550A Compatible
+
+Handle 0x0804, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: USB
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: Access Bus (USB)
+ Port Type: USB
+
+Handle 0x0806, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: MONITOR
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: DB-15 female
+ Port Type: Video Port
+
+Handle 0x080B, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: FireWire
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: IEEE 1394
+ Port Type: Firewire (IEEE P1394)
+
+Handle 0x080C, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: Modem
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: RJ-11
+ Port Type: Modem Port
+
+Handle 0x080D, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: Ethernet
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: RJ-45
+ Port Type: Network Port
+
+Handle 0x0900, DMI type 9, 13 bytes
+System Slot Information
+ Designation: PCMCIA 0
+ Type: 32-bit PC Card (PCMCIA)
+ Current Usage: Available
+ Length: Other
+ ID: Adapter 0, Socket 0
+ Characteristics:
+ 5.0 V is provided
+ 3.3 V is provided
+ PC Card-16 is supported
+ Cardbus is supported
+ Zoom Video is supported
+ Modem ring resume is supported
+
+Handle 0x0A00, DMI type 10, 6 bytes
+On Board Device Information
+ Type: Video
+ Status: Enabled
+ Description: NVIDIA Quadro FX 1700M
+
+Handle 0x0A01, DMI type 10, 6 bytes
+On Board Device Information
+ Type: Sound
+ Status: Enabled
+ Description: IDT 92HD71
+
+Handle 0x0B00, DMI type 11, 5 bytes
+OEM Strings
+ String 1: Dell System
+ String 2: 5[0003]
+ String 3: 13[PP04X]
+
+Handle 0x0D00, DMI type 13, 22 bytes
+BIOS Language Information
+ Language Description Format: Long
+ Installable Languages: 1
+ en|US|iso8859-1
+ Currently Installed Language: en|US|iso8859-1
+
+Handle 0x1000, DMI type 16, 15 bytes
+Physical Memory Array
+ Location: System Board Or Motherboard
+ Use: System Memory
+ Error Correction Type: None
+ Maximum Capacity: 8 GB
+ Error Information Handle: Not Provided
+ Number Of Devices: 2
+
+Handle 0x1100, DMI type 17, 27 bytes
+Memory Device
+ Array Handle: 0x1000
+ Error Information Handle: Not Provided
+ Total Width: 64 bits
+ Data Width: 64 bits
+ Size: 2048 MB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM_A
+ Bank Locator: Not Specified
+ Type: DDR2
+ Type Detail: Synchronous
+ Speed: 800 MHz
+ Manufacturer: 7F7FFE0000000000
+ Serial Number: 14FA6621
+ Asset Tag: 200840
+ Part Number: EBE21UE8ACUA-8G-E
+
+Handle 0x1101, DMI type 17, 27 bytes
+Memory Device
+ Array Handle: 0x1000
+ Error Information Handle: Not Provided
+ Total Width: 64 bits
+ Data Width: 64 bits
+ Size: 2048 MB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM_B
+ Bank Locator: Not Specified
+ Type: DDR2
+ Type Detail: Synchronous
+ Speed: 800 MHz
+ Manufacturer: 7F7FFE0000000000
+ Serial Number: AEF96621
+ Asset Tag: 200840
+ Part Number: EBE21UE8ACUA-8G-E
+
+Handle 0x1301, DMI type 19, 15 bytes
+Memory Array Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x000FFFFFFFF
+ Range Size: 4 GB
+ Physical Array Handle: 0x1000
+ Partition Width: 1
+
+Handle 0x1401, DMI type 20, 19 bytes
+Memory Device Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x000FFFFFFFF
+ Range Size: 4 GB
+ Physical Device Handle: 0x1100
+ Memory Array Mapped Address Handle: 0x1301
+ Partition Row Position: 1
+ Interleave Position: 1
+ Interleaved Data Depth: 8
+
+Handle 0x1411, DMI type 126, 19 bytes
+Inactive
+
+Handle 0x1402, DMI type 20, 19 bytes
+Memory Device Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x000FFFFFFFF
+ Range Size: 4 GB
+ Physical Device Handle: 0x1101
+ Memory Array Mapped Address Handle: 0x1301
+ Partition Row Position: 1
+ Interleave Position: 2
+ Interleaved Data Depth: 8
+
+Handle 0x1412, DMI type 126, 19 bytes
+Inactive
+
+Handle 0x1500, DMI type 21, 7 bytes
+Built-in Pointing Device
+ Type: Touch Pad
+ Interface: Bus Mouse
+ Buttons: 2
+
+Handle 0x1600, DMI type 22, 26 bytes
+Portable Battery
+ Location: Sys. Battery Bay
+ Manufacturer: SMP
+ Name: DELL HJ59008
+ Design Capacity: 84000 mWh
+ Design Voltage: 11100 mV
+ SBDS Version: 1.0
+ Maximum Error: 3%
+ SBDS Serial Number: 02C7
+ SBDS Manufacture Date: 2010-08-31
+ SBDS Chemistry: LION
+ OEM-specific Information: 0x00000001
+
+Handle 0x1601, DMI type 126, 26 bytes
+Inactive
+
+Handle 0x1B00, DMI type 27, 12 bytes
+Cooling Device
+ Type: Fan
+ Status: OK
+ OEM-specific Information: 0x0000DD00
+
+Handle 0x1C00, DMI type 28, 20 bytes
+Temperature Probe
+ Description: CPU Internal Temperature
+ Location: Processor
+ Status: OK
+ Maximum Value: 127.0 deg C
+ Minimum Value: 0.0 deg C
+ Resolution: 1.000 deg C
+ Tolerance: 0.5 deg C
+ Accuracy: Unknown
+ OEM-specific Information: 0x0000DC00
+
+Handle 0x2000, DMI type 32, 11 bytes
+System Boot Information
+ Status: No errors detected
+
+Handle 0xB000, DMI type 176, 5 bytes
+OEM-specific Type
+ Header and Data:
+ B0 05 00 B0 3A
+
+Handle 0xB100, DMI type 177, 12 bytes
+OEM-specific Type
+ Header and Data:
+ B1 0C 00 B1 82 00 00 00 00 00 00 00
+
+Handle 0xB200, DMI type 178, 96 bytes
+OEM-specific Type
+ Header and Data:
+ B2 60 00 B2 07 01 0C 00 08 01 0A 00 09 01 0B 00
+ 0A 01 12 00 3B 00 20 00 3C 00 1F 00 3D 00 0E 00
+ 41 00 12 00 42 00 18 00 00 02 FF FF 4B 00 15 00
+ 48 00 14 00 50 00 13 00 10 00 FF 00 11 00 FF 00
+ 12 00 FF 00 13 00 FF 00 14 00 FF 00 1E 00 FF 00
+ 1F 00 FF 00 20 00 FF 00 21 00 FF 00 22 00 FF 00
+
+Handle 0xD000, DMI type 208, 10 bytes
+OEM-specific Type
+ Header and Data:
+ D0 0A 00 D0 01 04 FE 00 50 02
+
+Handle 0xD100, DMI type 209, 12 bytes
+OEM-specific Type
+ Header and Data:
+ D1 0C 00 D1 00 00 00 03 04 07 80 05
+
+Handle 0xD200, DMI type 210, 12 bytes
+OEM-specific Type
+ Header and Data:
+ D2 0C 00 D2 00 00 06 03 06 80 04 05
+
+Handle 0xD800, DMI type 216, 9 bytes
+OEM-specific Type
+ Header and Data:
+ D8 09 00 D8 01 03 01 F0 03
+ Strings:
+ NVidia Corp.
+
+ 62.94.8F.00.04
+
+
+Handle 0xD900, DMI type 217, 8 bytes
+OEM-specific Type
+ Header and Data:
+ D9 08 00 D9 01 02 01 03
+ Strings:
+ US-101
+ Proprietary
+
+Handle 0xDB00, DMI type 219, 9 bytes
+OEM-specific Type
+ Header and Data:
+ DB 09 00 DB 03 01 02 03 FF
+ Strings:
+ System Device Bay
+ Battery, CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
+ DVD+/-RW
+
+Handle 0xDB01, DMI type 219, 9 bytes
+OEM-specific Type
+ Header and Data:
+ DB 09 01 DB 03 01 02 03 FF
+ Strings:
+ System eSATA Bay
+ CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
+ EMPTY
+
+Handle 0xDB02, DMI type 219, 9 bytes
+OEM-specific Type
+ Header and Data:
+ DB 09 02 DB 03 01 02 03 FF
+ Strings:
+ System eSATA Dock Bay
+ CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
+ EMPTY
+
+Handle 0x8100, DMI type 129, 8 bytes
+OEM-specific Type
+ Header and Data:
+ 81 08 00 81 01 01 02 01
+ Strings:
+ Intel_ASF
+ Intel_ASF_001
+
+Handle 0x8200, DMI type 130, 20 bytes
+OEM-specific Type
+ Header and Data:
+ 82 14 00 82 24 41 4D 54 01 00 00 00 01 A5 0B 02
+ 00 00 00 00
+
+Handle 0x8300, DMI type 131, 64 bytes
+OEM-specific Type
+ Header and Data:
+ 83 40 00 83 35 00 00 00 00 00 40 2A 0F 00 00 00
+ F8 00 17 29 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 03 00 01 02 C8 00 F5 10 00 00 00 0C
+ 00 00 00 00 28 00 00 00 76 50 72 6F 00 00 00 00
+
+Handle 0xDC00, DMI type 220, 22 bytes
+OEM-specific Type
+ Header and Data:
+ DC 16 00 DC 01 F0 00 00 02 F0 00 00 00 00 03 F0
+ 04 F0 00 00 00 00
+
+Handle 0xDD00, DMI type 221, 19 bytes
+OEM-specific Type
+ Header and Data:
+ DD 13 00 DD 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00
+
+Handle 0xD400, DMI type 212, 47 bytes
+OEM-specific Type
+ Header and Data:
+ D4 2F 00 D4 74 00 75 00 00 10 2D 2E 5C 00 78 BF
+ 40 5D 00 78 BF 00 2D 01 1D EF 10 2E 01 1D EF 00
+ 08 00 1D DF 00 03 00 1D DF 00 FF FF 00 00 00
+
+Handle 0xD401, DMI type 212, 17 bytes
+OEM-specific Type
+ Header and Data:
+ D4 11 01 D4 74 00 75 00 03 40 49 4A FF FF 00 00
+ 00
+
+Handle 0xDE00, DMI type 222, 16 bytes
+OEM-specific Type
+ Header and Data:
+ DE 10 00 DE 01 02 FF FF 00 00 00 00 00 00 00 01
+
+Handle 0x7F00, DMI type 127, 4 bytes
+End Of Table
+
================================================================
Commit: 8f8f3babb076c33cc2c17666eb717d7925acaeb8
https://github.com/fusinv/fusioninventory-agent/commit/8f8f3babb076c33cc2c17666eb717d7925acaeb8
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-19 (Mon, 19 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Client/Fusion.pm
M lib/FusionInventory/Agent/HTTP/Client/OCS.pm
M lib/FusionInventory/Agent/Task/Inventory.pm
M lib/FusionInventory/Agent/Tools/Screen.pm
A resources/generic/dmidecode/windows-xp
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/HTTP/Client/Fusion.pm b/lib/FusionInventory/Agent/HTTP/Client/Fusion.pm
index 87460a9..6ee5e7c 100644
--- a/lib/FusionInventory/Agent/HTTP/Client/Fusion.pm
+++ b/lib/FusionInventory/Agent/HTTP/Client/Fusion.pm
@@ -36,7 +36,7 @@ sub _prepareVal {
return uri_escape($val);
}
-sub send {
+sub send { ## no critic (ProhibitBuiltinHomonyms)
my ($self, %params) = @_;
push @{$self->{msgStack}}, $params{args} if $self->{debug};
diff --git a/lib/FusionInventory/Agent/HTTP/Client/OCS.pm b/lib/FusionInventory/Agent/HTTP/Client/OCS.pm
index 9c001f4..a65822b 100644
--- a/lib/FusionInventory/Agent/HTTP/Client/OCS.pm
+++ b/lib/FusionInventory/Agent/HTTP/Client/OCS.pm
@@ -50,7 +50,7 @@ sub new {
return $self;
}
-sub send {
+sub send { ## no critic (ProhibitBuiltinHomonyms)
my ($self, %params) = @_;
my $url = ref $params{url} eq 'URI' ?
diff --git a/lib/FusionInventory/Agent/Task/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory.pm
index ce3eb4c..13dc0b0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory.pm
@@ -190,8 +190,8 @@ sub _initModulesList {
# second pass: disable fallback modules
foreach my $module (@modules) {
- ## no critic (ProhibitNoStrict ProhibitProlongedStrictureOverride)
- no strict 'refs';
+ ## no critic (ProhibitProlongedStrictureOverride)
+ no strict 'refs'; ## no critic (ProhibitNoStrict)
# skip modules already disabled
next unless $self->{modules}->{$module}->{enabled};
diff --git a/lib/FusionInventory/Agent/Tools/Screen.pm b/lib/FusionInventory/Agent/Tools/Screen.pm
index d3dddcb..5cb71db 100644
--- a/lib/FusionInventory/Agent/Tools/Screen.pm
+++ b/lib/FusionInventory/Agent/Tools/Screen.pm
@@ -192,7 +192,7 @@ sub checkParsedEdid {
sub parseEdid {
my ($raw_edid) = @_;
- no warnings 'uninitialized';
+ no warnings 'uninitialized'; ## no critic (ProhibitNoWarnings)
my %edid;
my @vals = unpack(join('', map { $_->[0] } @edid_info), $raw_edid);
diff --git a/resources/generic/dmidecode/windows-xp b/resources/generic/dmidecode/windows-xp
new file mode 100644
index 0000000..6b999c7
--- /dev/null
+++ b/resources/generic/dmidecode/windows-xp
@@ -0,0 +1,586 @@
+# dmidecode 2.11
+SMBIOS 2.4 present.
+57 structures occupying 2822 bytes.
+Table at 0x000F6570.
+
+Handle 0xDA00, DMI type 218, 251 bytes
+OEM-specific Type
+ Header and Data:
+ DA FB 00 DA B2 00 0D 5F 1F 37 40 7D 00 00 00 00
+ 00 40 00 02 00 01 00 41 00 02 00 00 00 65 00 03
+ 00 00 00 66 00 03 00 01 00 F1 00 04 00 00 00 F2
+ 00 04 00 01 00 F3 00 04 00 02 00 0F 00 05 00 00
+ 00 11 00 05 00 01 00 05 00 05 00 02 00 12 00 05
+ 00 03 00 06 00 05 00 04 00 07 00 06 00 00 00 0B
+ 00 06 00 01 00 0C 00 06 00 02 00 0D 00 06 00 03
+ 00 89 01 07 00 00 00 8A 01 07 00 01 00 42 00 08
+ 00 01 00 43 00 08 00 00 00 55 00 09 00 00 00 6D
+ 00 09 00 01 00 16 02 09 00 02 00 98 01 09 00 03
+ 00 0A 01 0A 00 01 00 0B 01 0A 00 00 00 2D 00 0B
+ 00 02 00 6E 00 0B 00 01 00 2E 00 0B 00 00 00 11
+ 01 0C 00 00 00 10 01 0C 00 01 00 F0 00 0D 00 01
+ 00 ED 00 0D 00 00 00 41 01 0E 00 01 00 40 01 0E
+ 00 00 00 47 01 0F 00 01 00 46 01 0F 00 00 00 4A
+ 01 10 00 00 00 FF FF 00 00 00 00
+
+Handle 0xDA01, DMI type 218, 251 bytes
+OEM-specific Type
+ Header and Data:
+ DA FB 01 DA B2 00 0D 5F 1F 37 40 4B 01 10 00 01
+ 00 04 02 11 00 00 00 05 02 11 00 01 00 02 02 12
+ 00 00 00 03 02 12 00 01 00 52 01 13 00 01 00 53
+ 01 13 00 00 00 80 01 14 00 01 00 7F 01 14 00 00
+ 00 7C 01 15 00 01 00 7B 01 15 00 00 00 E8 02 16
+ 00 00 00 E9 02 16 00 01 00 7E 01 17 00 01 00 7D
+ 01 17 00 00 00 92 01 18 00 00 00 91 01 18 00 01
+ 00 94 01 19 00 00 00 93 01 19 00 01 00 86 01 1A
+ 00 01 00 85 01 1A 00 00 00 82 01 1B 00 01 00 81
+ 01 1B 00 00 00 84 01 1C 00 01 00 83 01 1C 00 00
+ 00 9B 01 1D 00 00 00 9C 01 1D 00 01 00 9D 01 1D
+ 00 02 00 9E 01 1D 00 03 00 8D 01 1E 00 00 00 8E
+ 01 1E 00 01 00 85 02 1F 00 00 00 86 02 1F 00 01
+ 00 EA 00 20 00 00 00 EB 00 20 00 01 00 EC 00 20
+ 00 02 00 A1 00 21 00 00 00 A3 00 21 00 01 00 28
+ 00 22 00 00 00 FF FF 00 00 00 00
+
+Handle 0xDA02, DMI type 218, 251 bytes
+OEM-specific Type
+ Header and Data:
+ DA FB 02 DA B2 00 0D 5F 1F 37 40 29 00 22 00 01
+ 00 2A 00 22 00 02 00 2B 00 23 00 00 00 2C 00 24
+ 00 00 00 0E 01 25 00 01 00 0F 01 25 00 00 00 9B
+ 00 26 00 01 00 9C 00 26 00 00 00 4D 01 27 00 01
+ 00 4C 01 27 00 00 00 87 01 28 00 00 00 88 01 28
+ 00 01 00 35 01 29 00 03 00 37 01 29 00 00 00 38
+ 01 29 00 01 00 39 01 29 00 02 00 D9 01 2A 00 01
+ 00 D8 01 2A 00 00 00 DF 01 2B 00 01 00 DE 01 2B
+ 00 00 00 45 02 2C 00 00 00 44 02 2C 00 01 00 49
+ 02 2D 00 00 00 48 02 2D 00 01 00 45 01 45 01 01
+ 00 44 01 44 01 00 00 76 01 76 01 01 00 75 01 75
+ 01 01 00 9F 00 9F 00 00 00 A0 00 A0 00 01 00 E1
+ 01 E1 01 00 00 E3 01 E3 01 01 00 E2 01 E2 01 02
+ 00 29 02 29 02 01 00 28 02 28 02 02 00 2A 02 2A
+ 02 03 00 30 02 30 02 01 00 2F 02 2F 02 00 00 35
+ 02 35 02 01 00 FF FF 00 00 00 00
+
+Handle 0xDA03, DMI type 218, 77 bytes
+OEM-specific Type
+ Header and Data:
+ DA 4D 03 DA B2 00 0D 5F 1F 37 40 36 02 36 02 00
+ 00 37 02 37 02 02 00 4A 02 4A 02 01 00 0C 80 0C
+ 80 01 00 6C 02 6C 02 01 00 6D 02 6D 02 00 00 01
+ F0 01 F0 00 00 02 F0 02 F0 00 00 03 F0 03 F0 00
+ 00 04 F0 04 F0 00 00 FF FF 00 00 00 00
+
+Handle 0x0000, DMI type 0, 24 bytes
+BIOS Information
+ Vendor: Dell Inc.
+ Version: A24
+ Release Date: 08/19/2010
+ Address: 0xF0000
+ Runtime Size: 64 kB
+ ROM Size: 1728 kB
+ Characteristics:
+ ISA is supported
+ PCI is supported
+ PC Card (PCMCIA) is supported
+ PNP is supported
+ BIOS is upgradeable
+ BIOS shadowing is allowed
+ Boot from CD is supported
+ Selectable boot is supported
+ 3.5"/720 kB floppy services are supported (int 13h)
+ Print screen service is supported (int 5h)
+ 8042 keyboard services are supported (int 9h)
+ Serial services are supported (int 14h)
+ Printer services are supported (int 17h)
+ CGA/mono video services are supported (int 10h)
+ ACPI is supported
+ USB legacy is supported
+ AGP is supported
+ Smart battery is supported
+ BIOS boot specification is supported
+ Function key-initiated network boot is supported
+ Targeted content distribution is supported
+ BIOS Revision: 2.4
+ Firmware Revision: 2.4
+
+Handle 0x0100, DMI type 1, 27 bytes
+System Information
+ Manufacturer: Dell Inc.
+ Product Name: Precision M4400
+ Version: Not Specified
+ Serial Number: HLG964J
+ UUID: 44454C4C-4C00-1047-8039-C8C04F36344A
+ Wake-up Type: Power Switch
+ SKU Number: Not Specified
+ Family:
+
+Handle 0x0200, DMI type 2, 9 bytes
+Base Board Information
+ Manufacturer: Dell Inc.
+ Product Name: 0P019G
+ Version:
+ Serial Number: .HLG964J.CN129618C52450.
+ Asset Tag:
+
+Handle 0x0300, DMI type 3, 13 bytes
+Chassis Information
+ Manufacturer: Dell Inc.
+ Type: Portable
+ Lock: Not Present
+ Version: Not Specified
+ Serial Number: HLG964J
+ Asset Tag: Not Specified
+ Boot-up State: Safe
+ Power Supply State: Safe
+ Thermal State: Safe
+ Security Status: None
+
+Handle 0x0400, DMI type 4, 40 bytes
+Processor Information
+ Socket Designation: Microprocessor
+ Type: Central Processor
+ Family: Core 2 Duo
+ Manufacturer: Intel
+ ID: 76 06 01 00 FF FB EB BF
+ Signature: Type 0, Family 6, Model 23, Stepping 6
+ Flags:
+ FPU (Floating-point unit on-chip)
+ VME (Virtual mode extension)
+ DE (Debugging extension)
+ PSE (Page size extension)
+ TSC (Time stamp counter)
+ MSR (Model specific registers)
+ PAE (Physical address extension)
+ MCE (Machine check exception)
+ CX8 (CMPXCHG8 instruction supported)
+ APIC (On-chip APIC hardware supported)
+ SEP (Fast system call)
+ MTRR (Memory type range registers)
+ PGE (Page global enable)
+ MCA (Machine check architecture)
+ CMOV (Conditional move instruction supported)
+ PAT (Page attribute table)
+ PSE-36 (36-bit page size extension)
+ CLFSH (CLFLUSH instruction supported)
+ DS (Debug store)
+ ACPI (ACPI supported)
+ MMX (MMX technology supported)
+ FXSR (FXSAVE and FXSTOR instructions supported)
+ SSE (Streaming SIMD extensions)
+ SSE2 (Streaming SIMD extensions 2)
+ SS (Self-snoop)
+ HTT (Multi-threading)
+ TM (Thermal monitor supported)
+ PBE (Pending break enabled)
+ Version: Not Specified
+ Voltage: 3.3 V
+ External Clock: 266 MHz
+ Max Speed: 2534 MHz
+ Current Speed: 2534 MHz
+ Status: Populated, Enabled
+ Upgrade: None
+ L1 Cache Handle: 0x0700
+ L2 Cache Handle: 0x0701
+ L3 Cache Handle: Not Provided
+ Serial Number: Not Specified
+ Asset Tag: Not Specified
+ Part Number: Not Specified
+ Core Count: 2
+ Core Enabled: 2
+ Thread Count: 2
+ Characteristics:
+ 64-bit capable
+
+Handle 0x0700, DMI type 7, 19 bytes
+Cache Information
+ Socket Designation: Not Specified
+ Configuration: Enabled, Not Socketed, Level 1
+ Operational Mode: Write Back
+ Location: Internal
+ Installed Size: 128 kB
+ Maximum Size: 128 kB
+ Supported SRAM Types:
+ Unknown
+ Installed SRAM Type: Unknown
+ Speed: Unknown
+ Error Correction Type: None
+ System Type: Data
+ Associativity: 4-way Set-associative
+
+Handle 0x0701, DMI type 7, 19 bytes
+Cache Information
+ Socket Designation: Not Specified
+ Configuration: Enabled, Not Socketed, Level 2
+ Operational Mode: Varies With Memory Address
+ Location: Internal
+ Installed Size: 6144 kB
+ Maximum Size: 6144 kB
+ Supported SRAM Types:
+ Pipeline Burst
+ Installed SRAM Type: Pipeline Burst
+ Speed: 15 ns
+ Error Correction Type: None
+ System Type: Unified
+ Associativity: Other
+
+Handle 0x0800, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: PARALLEL
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: DB-25 female
+ Port Type: Parallel Port PS/2
+
+Handle 0x0801, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: SERIAL1
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: DB-9 male
+ Port Type: Serial Port 16550A Compatible
+
+Handle 0x0804, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: USB
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: Access Bus (USB)
+ Port Type: USB
+
+Handle 0x0806, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: MONITOR
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: DB-15 female
+ Port Type: Video Port
+
+Handle 0x080B, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: FireWire
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: IEEE 1394
+ Port Type: Firewire (IEEE P1394)
+
+Handle 0x080C, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: Modem
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: RJ-11
+ Port Type: Modem Port
+
+Handle 0x080D, DMI type 8, 9 bytes
+Port Connector Information
+ Internal Reference Designator: Ethernet
+ Internal Connector Type: None
+ External Reference Designator: Not Specified
+ External Connector Type: RJ-45
+ Port Type: Network Port
+
+Handle 0x0900, DMI type 9, 13 bytes
+System Slot Information
+ Designation: PCMCIA 0
+ Type: 32-bit PC Card (PCMCIA)
+ Current Usage: Available
+ Length: Other
+ ID: Adapter 0, Socket 0
+ Characteristics:
+ 5.0 V is provided
+ 3.3 V is provided
+ PC Card-16 is supported
+ Cardbus is supported
+ Zoom Video is supported
+ Modem ring resume is supported
+
+Handle 0x0A00, DMI type 10, 6 bytes
+On Board Device Information
+ Type: Video
+ Status: Enabled
+ Description: NVIDIA Quadro FX 1700M
+
+Handle 0x0A01, DMI type 10, 6 bytes
+On Board Device Information
+ Type: Sound
+ Status: Enabled
+ Description: IDT 92HD71
+
+Handle 0x0B00, DMI type 11, 5 bytes
+OEM Strings
+ String 1: Dell System
+ String 2: 5[0003]
+ String 3: 13[PP04X]
+
+Handle 0x0D00, DMI type 13, 22 bytes
+BIOS Language Information
+ Language Description Format: Long
+ Installable Languages: 1
+ en|US|iso8859-1
+ Currently Installed Language: en|US|iso8859-1
+
+Handle 0x1000, DMI type 16, 15 bytes
+Physical Memory Array
+ Location: System Board Or Motherboard
+ Use: System Memory
+ Error Correction Type: None
+ Maximum Capacity: 8 GB
+ Error Information Handle: Not Provided
+ Number Of Devices: 2
+
+Handle 0x1100, DMI type 17, 27 bytes
+Memory Device
+ Array Handle: 0x1000
+ Error Information Handle: Not Provided
+ Total Width: 64 bits
+ Data Width: 64 bits
+ Size: 2048 MB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM_A
+ Bank Locator: Not Specified
+ Type: DDR2
+ Type Detail: Synchronous
+ Speed: 800 MHz
+ Manufacturer: 7F7FFE0000000000
+ Serial Number: 14FA6621
+ Asset Tag: 200840
+ Part Number: EBE21UE8ACUA-8G-E
+
+Handle 0x1101, DMI type 17, 27 bytes
+Memory Device
+ Array Handle: 0x1000
+ Error Information Handle: Not Provided
+ Total Width: 64 bits
+ Data Width: 64 bits
+ Size: 2048 MB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM_B
+ Bank Locator: Not Specified
+ Type: DDR2
+ Type Detail: Synchronous
+ Speed: 800 MHz
+ Manufacturer: 7F7FFE0000000000
+ Serial Number: AEF96621
+ Asset Tag: 200840
+ Part Number: EBE21UE8ACUA-8G-E
+
+Handle 0x1301, DMI type 19, 15 bytes
+Memory Array Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x000FFFFFFFF
+ Range Size: 4 GB
+ Physical Array Handle: 0x1000
+ Partition Width: 1
+
+Handle 0x1401, DMI type 20, 19 bytes
+Memory Device Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x000FFFFFFFF
+ Range Size: 4 GB
+ Physical Device Handle: 0x1100
+ Memory Array Mapped Address Handle: 0x1301
+ Partition Row Position: 1
+ Interleave Position: 1
+ Interleaved Data Depth: 8
+
+Handle 0x1411, DMI type 126, 19 bytes
+Inactive
+
+Handle 0x1402, DMI type 20, 19 bytes
+Memory Device Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x000FFFFFFFF
+ Range Size: 4 GB
+ Physical Device Handle: 0x1101
+ Memory Array Mapped Address Handle: 0x1301
+ Partition Row Position: 1
+ Interleave Position: 2
+ Interleaved Data Depth: 8
+
+Handle 0x1412, DMI type 126, 19 bytes
+Inactive
+
+Handle 0x1500, DMI type 21, 7 bytes
+Built-in Pointing Device
+ Type: Touch Pad
+ Interface: Bus Mouse
+ Buttons: 2
+
+Handle 0x1600, DMI type 22, 26 bytes
+Portable Battery
+ Location: Sys. Battery Bay
+ Manufacturer: SMP
+ Name: DELL HJ59008
+ Design Capacity: 84000 mWh
+ Design Voltage: 11100 mV
+ SBDS Version: 1.0
+ Maximum Error: 3%
+ SBDS Serial Number: 02C7
+ SBDS Manufacture Date: 2010-08-31
+ SBDS Chemistry: LION
+ OEM-specific Information: 0x00000001
+
+Handle 0x1601, DMI type 126, 26 bytes
+Inactive
+
+Handle 0x1B00, DMI type 27, 12 bytes
+Cooling Device
+ Type: Fan
+ Status: OK
+ OEM-specific Information: 0x0000DD00
+
+Handle 0x1C00, DMI type 28, 20 bytes
+Temperature Probe
+ Description: CPU Internal Temperature
+ Location: Processor
+ Status: OK
+ Maximum Value: 127.0 deg C
+ Minimum Value: 0.0 deg C
+ Resolution: 1.000 deg C
+ Tolerance: 0.5 deg C
+ Accuracy: Unknown
+ OEM-specific Information: 0x0000DC00
+
+Handle 0x2000, DMI type 32, 11 bytes
+System Boot Information
+ Status: No errors detected
+
+Handle 0xB000, DMI type 176, 5 bytes
+OEM-specific Type
+ Header and Data:
+ B0 05 00 B0 3A
+
+Handle 0xB100, DMI type 177, 12 bytes
+OEM-specific Type
+ Header and Data:
+ B1 0C 00 B1 82 00 00 00 00 00 00 00
+
+Handle 0xB200, DMI type 178, 96 bytes
+OEM-specific Type
+ Header and Data:
+ B2 60 00 B2 07 01 0C 00 08 01 0A 00 09 01 0B 00
+ 0A 01 12 00 3B 00 20 00 3C 00 1F 00 3D 00 0E 00
+ 41 00 12 00 42 00 18 00 00 02 FF FF 4B 00 15 00
+ 48 00 14 00 50 00 13 00 10 00 FF 00 11 00 FF 00
+ 12 00 FF 00 13 00 FF 00 14 00 FF 00 1E 00 FF 00
+ 1F 00 FF 00 20 00 FF 00 21 00 FF 00 22 00 FF 00
+
+Handle 0xD000, DMI type 208, 10 bytes
+OEM-specific Type
+ Header and Data:
+ D0 0A 00 D0 01 04 FE 00 50 02
+
+Handle 0xD100, DMI type 209, 12 bytes
+OEM-specific Type
+ Header and Data:
+ D1 0C 00 D1 00 00 00 03 04 07 80 05
+
+Handle 0xD200, DMI type 210, 12 bytes
+OEM-specific Type
+ Header and Data:
+ D2 0C 00 D2 00 00 06 03 06 80 04 05
+
+Handle 0xD800, DMI type 216, 9 bytes
+OEM-specific Type
+ Header and Data:
+ D8 09 00 D8 01 03 01 F0 03
+ Strings:
+ NVidia Corp.
+
+ 62.94.8F.00.04
+
+
+Handle 0xD900, DMI type 217, 8 bytes
+OEM-specific Type
+ Header and Data:
+ D9 08 00 D9 01 02 01 03
+ Strings:
+ US-101
+ Proprietary
+
+Handle 0xDB00, DMI type 219, 9 bytes
+OEM-specific Type
+ Header and Data:
+ DB 09 00 DB 03 01 02 03 FF
+ Strings:
+ System Device Bay
+ Battery, CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
+ DVD+/-RW
+
+Handle 0xDB01, DMI type 219, 9 bytes
+OEM-specific Type
+ Header and Data:
+ DB 09 01 DB 03 01 02 03 FF
+ Strings:
+ System eSATA Bay
+ CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
+ EMPTY
+
+Handle 0xDB02, DMI type 219, 9 bytes
+OEM-specific Type
+ Header and Data:
+ DB 09 02 DB 03 01 02 03 FF
+ Strings:
+ System eSATA Dock Bay
+ CD-ROM, CD-RW, DVD, DVD+RW, DVD+/-RW, Hard Disk
+ EMPTY
+
+Handle 0x8100, DMI type 129, 8 bytes
+OEM-specific Type
+ Header and Data:
+ 81 08 00 81 01 01 02 01
+ Strings:
+ Intel_ASF
+ Intel_ASF_001
+
+Handle 0x8200, DMI type 130, 20 bytes
+OEM-specific Type
+ Header and Data:
+ 82 14 00 82 24 41 4D 54 01 00 00 00 01 A5 0B 02
+ 00 00 00 00
+
+Handle 0x8300, DMI type 131, 64 bytes
+OEM-specific Type
+ Header and Data:
+ 83 40 00 83 35 00 00 00 00 00 40 2A 0F 00 00 00
+ F8 00 17 29 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 03 00 01 02 C8 00 F5 10 00 00 00 0C
+ 00 00 00 00 28 00 00 00 76 50 72 6F 00 00 00 00
+
+Handle 0xDC00, DMI type 220, 22 bytes
+OEM-specific Type
+ Header and Data:
+ DC 16 00 DC 01 F0 00 00 02 F0 00 00 00 00 03 F0
+ 04 F0 00 00 00 00
+
+Handle 0xDD00, DMI type 221, 19 bytes
+OEM-specific Type
+ Header and Data:
+ DD 13 00 DD 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00
+
+Handle 0xD400, DMI type 212, 47 bytes
+OEM-specific Type
+ Header and Data:
+ D4 2F 00 D4 74 00 75 00 00 10 2D 2E 5C 00 78 BF
+ 40 5D 00 78 BF 00 2D 01 1D EF 10 2E 01 1D EF 00
+ 08 00 1D DF 00 03 00 1D DF 00 FF FF 00 00 00
+
+Handle 0xD401, DMI type 212, 17 bytes
+OEM-specific Type
+ Header and Data:
+ D4 11 01 D4 74 00 75 00 03 40 49 4A FF FF 00 00
+ 00
+
+Handle 0xDE00, DMI type 222, 16 bytes
+OEM-specific Type
+ Header and Data:
+ DE 10 00 DE 01 02 FF FF 00 00 00 00 00 00 00 01
+
+Handle 0x7F00, DMI type 127, 4 bytes
+End Of Table
+
================================================================
Commit: 3d713ca3676de556fb05fc02ad6ac714a2e6c43a
https://github.com/fusinv/fusioninventory-agent/commit/3d713ca3676de556fb05fc02ad6ac714a2e6c43a
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-19 (Mon, 19 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent.pm
Log Message:
-----------
compute tasks list before creating HTTP interface
This ensure the listening thread is created after everything else
has been initialized
diff --git a/lib/FusionInventory/Agent.pm b/lib/FusionInventory/Agent.pm
index 3673bfa..edd3950 100644
--- a/lib/FusionInventory/Agent.pm
+++ b/lib/FusionInventory/Agent.pm
@@ -150,6 +150,13 @@ sub init {
}
}
+ # compute list of allowed tasks
+ my %available = $self->getAvailableTasks(disabledTasks => $config->{'no-task'});
+ my @tasks = keys %available;
+
+ $self->{tasks} = \@tasks;
+
+ # create HTTP interface
if (($config->{daemon} || $config->{service}) && !$config->{'no-httpd'}) {
FusionInventory::Agent::HTTP::Server->require();
if ($EVAL_ERROR) {
@@ -178,12 +185,6 @@ sub init {
}
}
- # compute list of allowed tasks
- my %available = $self->getAvailableTasks(disabledTasks => $config->{'no-task'});
- my @tasks = keys %available;
-
- $self->{tasks} = \@tasks;
-
$logger->debug("FusionInventory Agent initialised");
}
================================================================
Commit: fa04fe1073e4e3e59c3e86ab8575d2b711ab88f9
https://github.com/fusinv/fusioninventory-agent/commit/fa04fe1073e4e3e59c3e86ab8575d2b711ab88f9
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-19 (Mon, 19 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent.pm
Log Message:
-----------
log available tasks
diff --git a/lib/FusionInventory/Agent.pm b/lib/FusionInventory/Agent.pm
index edd3950..a6ba3db 100644
--- a/lib/FusionInventory/Agent.pm
+++ b/lib/FusionInventory/Agent.pm
@@ -154,6 +154,11 @@ sub init {
my %available = $self->getAvailableTasks(disabledTasks => $config->{'no-task'});
my @tasks = keys %available;
+ $logger->debug("Available tasks:");
+ foreach my $task (keys %available) {
+ $logger->debug("- $task: $available{$task}");
+ }
+
$self->{tasks} = \@tasks;
# create HTTP interface
================================================================
Commit: 050c20a3e9a532f0af0440e7f5b72101adc2f0db
https://github.com/fusinv/fusioninventory-agent/commit/050c20a3e9a532f0af0440e7f5b72101adc2f0db
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-19 (Mon, 19 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent.pm
Log Message:
-----------
fork before loading tasks code in server mode
This avoid cluttering main process memory uselessly.
diff --git a/lib/FusionInventory/Agent.pm b/lib/FusionInventory/Agent.pm
index a6ba3db..4ab768e 100644
--- a/lib/FusionInventory/Agent.pm
+++ b/lib/FusionInventory/Agent.pm
@@ -255,25 +255,10 @@ sub _runTarget {
sub _runTask {
my ($self, $target, $name, $response) = @_;
- my $class = "FusionInventory::Agent::Task::$name";
- my $task = $class->new(
- config => $self->{config},
- confdir => $self->{confdir},
- datadir => $self->{datadir},
- logger => $self->{logger},
- target => $target,
- deviceid => $self->{deviceid},
- );
-
- if (!$task->isEnabled($response)) {
- $self->{logger}->info("task $name is not enabled");
- return;
- }
-
$self->{status} = "running task $name";
if ($self->{config}->{daemon} || $self->{config}->{service}) {
- # daemon mode: run each task in a child process
+ # server mode: run each task in a child process
if (my $pid = fork()) {
# parent
waitpid($pid, 0);
@@ -282,28 +267,45 @@ sub _runTask {
die "fork failed: $ERRNO" unless defined $pid;
$self->{logger}->debug("running task $name in process $PID");
- $task->run(
- user => $self->{config}->{user},
- password => $self->{config}->{password},
- proxy => $self->{config}->{proxy},
- ca_cert_file => $self->{config}->{'ca-cert-file'},
- ca_cert_dir => $self->{config}->{'ca-cert-dir'},
- no_ssl_check => $self->{config}->{'no-ssl-check'},
- );
+ $self->_runTaskReal($target, $name, $response);
exit(0);
}
} else {
# standalone mode: run each task directly
$self->{logger}->debug("running task $name");
- $task->run(
- user => $self->{config}->{user},
- password => $self->{config}->{password},
- proxy => $self->{config}->{proxy},
- ca_cert_file => $self->{config}->{'ca-cert-file'},
- ca_cert_dir => $self->{config}->{'ca-cert-dir'},
- no_ssl_check => $self->{config}->{'no-ssl-check'},
- );
+ $self->_runTaskReal($target, $name, $response);
+ }
+}
+
+sub _runTaskReal {
+ my ($self, $target, $name, $response) = @_;
+
+ my $class = "FusionInventory::Agent::Task::$name";
+
+ $class->require();
+
+ my $task = $class->new(
+ config => $self->{config},
+ confdir => $self->{confdir},
+ datadir => $self->{datadir},
+ logger => $self->{logger},
+ target => $target,
+ deviceid => $self->{deviceid},
+ );
+
+ if (!$task->isEnabled($response)) {
+ $self->{logger}->info("task $name is not enabled");
+ return;
}
+
+ $task->run(
+ user => $self->{config}->{user},
+ password => $self->{config}->{password},
+ proxy => $self->{config}->{proxy},
+ ca_cert_file => $self->{config}->{'ca-cert-file'},
+ ca_cert_dir => $self->{config}->{'ca-cert-dir'},
+ no_ssl_check => $self->{config}->{'no-ssl-check'},
+ );
}
sub getToken {
@@ -324,7 +326,6 @@ sub getStatus {
sub getAvailableTasks {
my ($self, %params) = @_;
- my $logger = $self->{logger};
my %tasks;
my %disabled = map { lc($_) => 1 } @{$params{disabledTasks}};
@@ -340,30 +341,60 @@ sub getAvailableTasks {
next if $disabled{lc($name)};
- # check module
- # todo: use a child process when running as a server to save memory
- if (!$module->require()) {
- $logger->debug2("module $module does not compile") if $logger;
- next;
- }
- if (!$module->isa('FusionInventory::Agent::Task')) {
- $logger->debug2("module $module is not a task") if $logger;
- next;
- }
-
- # retrieve version
my $version;
- {
- no strict 'refs'; ## no critic
- $version = ${$module . '::VERSION'};
+ if ($self->{config}->{daemon} || $self->{config}->{service}) {
+ # server mode: check each task version in a child process
+ my $pid = open(my $handle, '-|');
+ die "fork failed: $ERRNO" unless defined $pid;
+
+ if ($pid) {
+ # parent
+ $version = <$handle>;
+ close $handle;
+ } else {
+ # child
+ $version = $self->_getTaskVersion($module);
+ print $version if $version;
+ exit(0);
+ }
+ } else {
+ # standalone mode: check each task version directly
+ $version = $self->_getTaskVersion($module);
}
+ # no version means non-functionning task
+ next unless $version;
+
$tasks{$name} = $version;
}
return %tasks;
}
+sub _getTaskVersion {
+ my ($self, $module) = @_;
+
+ my $logger = $self->{logger};
+
+ if (!$module->require()) {
+ $logger->debug2("module $module does not compile") if $logger;
+ return;
+ }
+
+ if (!$module->isa('FusionInventory::Agent::Task')) {
+ $logger->debug2("module $module is not a task") if $logger;
+ return;
+ }
+
+ my $version;
+ {
+ no strict 'refs'; ## no critic
+ $version = ${$module . '::VERSION'};
+ }
+
+ return $version;
+}
+
sub _isAlreadyRunning {
my ($self) = @_;
================================================================
Commit: 58128f37dbf70e885022737f8c8524bd2901298c
https://github.com/fusinv/fusioninventory-agent/commit/58128f37dbf70e885022737f8c8524bd2901298c
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-03-19 (Mon, 19 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Networks.pm
M lib/FusionInventory/Agent/Tools.pm
M lib/FusionInventory/Agent/Tools/Win32.pm
Log Message:
-----------
Merge remote-tracking branch 'forge/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm
index be4aef8..cff31ad 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Videos.pm
@@ -6,8 +6,6 @@ use warnings;
use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Unix;
-my $seen;
-
sub isEnabled {
return 1;
}
@@ -66,9 +64,6 @@ sub doInventory {
$video->{RESOLUTION} =~ s/@.*//;
}
- # avoid duplicates
- next if $seen->{$video->{NAME}}++;
-
$inventory->addEntry(
section => 'VIDEOS',
entry => $video
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Networks.pm
index 90aaa59..772ee74 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Networks.pm
@@ -135,7 +135,7 @@ sub _check_nic {
# Function to test eri Fast-Ethernet (eri_).
sub _check_eri {
- my ($nic, $num) = @_;
+ my ($nic) = @_;
my $speed = getFirstMatch(
command => "/usr/sbin/ndd -get /dev/$nic link_speed",
diff --git a/lib/FusionInventory/Agent/Tools.pm b/lib/FusionInventory/Agent/Tools.pm
index b5c24ba..2614964 100644
--- a/lib/FusionInventory/Agent/Tools.pm
+++ b/lib/FusionInventory/Agent/Tools.pm
@@ -443,8 +443,10 @@ sub runFunction {
my $result;
eval {
# set a timeout if needed
- local $SIG{ALRM} = sub { die "alarm\n" } if $params{timeout};
- alarm $params{timeout};
+ if ($params{timeout}) {
+ local $SIG{ALRM} = sub { die "alarm\n" };
+ alarm $params{timeout};
+ }
no strict 'refs'; ## no critic (ProhibitNoStrict)
$result = &{$params{module} . '::' . $params{function}}(
diff --git a/lib/FusionInventory/Agent/Tools/Win32.pm b/lib/FusionInventory/Agent/Tools/Win32.pm
index f062ac7..42c854a 100644
--- a/lib/FusionInventory/Agent/Tools/Win32.pm
+++ b/lib/FusionInventory/Agent/Tools/Win32.pm
@@ -97,7 +97,7 @@ sub getRegistryValue {
my (%params) = @_;
my ($root, $keyName, $valueName);
- if ($params{path} =~ /^(HKEY_\S+)\/(.+)\/([^\/]+)/ ) {
+ if ($params{path} =~ /^(HKEY_[^\/\\]+)[\/\\](.+)[\/\\]([^\/]+)/ ) {
$root = $1;
$keyName = $2;
$valueName = $3;
================================================================
Commit: 31ac548fe3d8bfad7e77b5cc17b812f34d719e63
https://github.com/fusinv/fusioninventory-agent/commit/31ac548fe3d8bfad7e77b5cc17b812f34d719e63
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-03-20 (Tue, 20 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent.pm
Log Message:
-----------
use explicit pipe, rather than open (close #1521)
the safe pipe syntax open($handle, '-|') seems to be invalid under Windows.
diff --git a/lib/FusionInventory/Agent.pm b/lib/FusionInventory/Agent.pm
index 4ab768e..515ef26 100644
--- a/lib/FusionInventory/Agent.pm
+++ b/lib/FusionInventory/Agent.pm
@@ -7,6 +7,7 @@ use Cwd;
use English qw(-no_match_vars);
use UNIVERSAL::require;
use File::Glob;
+use IO::Handle;
use FusionInventory::Agent::Config;
use FusionInventory::Agent::HTTP::Client::OCS;
@@ -344,17 +345,24 @@ sub getAvailableTasks {
my $version;
if ($self->{config}->{daemon} || $self->{config}->{service}) {
# server mode: check each task version in a child process
- my $pid = open(my $handle, '-|');
- die "fork failed: $ERRNO" unless defined $pid;
+ my ($reader, $writer);
+ pipe($reader, $writer);
+ $writer->autoflush(1);
- if ($pid) {
+ if (my $pid = fork()) {
# parent
- $version = <$handle>;
- close $handle;
+ close $writer;
+ $version = <$reader>;
+ close $reader;
+ waitpid($pid, 0);
} else {
# child
+ die "fork failed: $ERRNO" unless defined $pid;
+
+ close $reader;
$version = $self->_getTaskVersion($module);
- print $version if $version;
+ print $writer $version if $version;
+ close $writer;
exit(0);
}
} else {
================================================================
Commit: 507519756054881264e4cdaff5116d2a619aca26
https://github.com/fusinv/fusioninventory-agent/commit/507519756054881264e4cdaff5116d2a619aca26
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-22 (Thu, 22 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools.pm
Log Message:
-----------
do not define $SIG{ALRM} in another scope
diff --git a/lib/FusionInventory/Agent/Tools.pm b/lib/FusionInventory/Agent/Tools.pm
index 2614964..af6addd 100644
--- a/lib/FusionInventory/Agent/Tools.pm
+++ b/lib/FusionInventory/Agent/Tools.pm
@@ -442,11 +442,9 @@ sub runFunction {
my $result;
eval {
+ local $SIG{ALRM} = sub { die "alarm\n" };
# set a timeout if needed
- if ($params{timeout}) {
- local $SIG{ALRM} = sub { die "alarm\n" };
- alarm $params{timeout};
- }
+ alarm $params{timeout} if $params{timeout};
no strict 'refs'; ## no critic (ProhibitNoStrict)
$result = &{$params{module} . '::' . $params{function}}(
================================================================
Commit: ed6698182956d90a832d6a1e0a9291e3a39d37df
https://github.com/fusinv/fusioninventory-agent/commit/ed6698182956d90a832d6a1e0a9291e3a39d37df
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-03-30 (Fri, 30 Mar 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD.pm
Log Message:
-----------
use qr/XX/ to protect the regex
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD.pm
index 9e7f4f1..bf9c543 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD.pm
@@ -44,7 +44,7 @@ sub doInventory {
if (canRun('lsb_release')) {
$OSName = getFirstMatch(
command => 'lsb_release -d',
- pattern => /Description:\s+(.+)/
+ pattern => qr/Description:\s+(.+)/
);
}
================================================================
Commit: c2c2302289617ce04e3b10940253853356fa91e8
https://github.com/fusinv/fusioninventory-agent/commit/c2c2302289617ce04e3b10940253853356fa91e8
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-02 (Mon, 02 Apr 2012)
Changed paths:
M Changes
M lib/FusionInventory/Agent.pm
Log Message:
-----------
prepare the 2.2.0 release
diff --git a/Changes b/Changes
index a152f51..4dd3879 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,6 @@
Revision history for FusionInventory agent
-2.2.0
+2.2.0 Mon, 02 Apr 2012 14:52:02 +0200
Major changes:
* large speed improvement: up to 150% for a local inventory
diff --git a/lib/FusionInventory/Agent.pm b/lib/FusionInventory/Agent.pm
index 515ef26..ce06f78 100644
--- a/lib/FusionInventory/Agent.pm
+++ b/lib/FusionInventory/Agent.pm
@@ -22,7 +22,7 @@ use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Hostname;
use FusionInventory::Agent::XML::Query::Prolog;
-our $VERSION = '2.1.9904';
+our $VERSION = '2.2.0';
our $VERSION_STRING =
"FusionInventory unified agent for UNIX, Linux and MacOSX ($VERSION)";
our $AGENT_STRING =
================================================================
Commit: 122ae9082db4c1383ccf88c8b78d02b48f4ff7f8
https://github.com/fusinv/fusioninventory-agent/commit/122ae9082db4c1383ccf88c8b78d02b48f4ff7f8
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-02 (Mon, 02 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/HTTP/Server.pm
Log Message:
-----------
accpet /now without token
with --httpd-trust=X, the token is not mandatory anymore.
diff --git a/lib/FusionInventory/Agent/HTTP/Server.pm b/lib/FusionInventory/Agent/HTTP/Server.pm
index 4ef83c9..99cb44f 100644
--- a/lib/FusionInventory/Agent/HTTP/Server.pm
+++ b/lib/FusionInventory/Agent/HTTP/Server.pm
@@ -76,7 +76,7 @@ sub _handle {
}
# now request
- if ($path =~ m{^/now(?:/(\S+))?$}) {
+ if ($path =~ m{^/now(?:/(\S*))?$}) {
$self->_handle_now($client, $request, $clientIp, $1);
last SWITCH;
}
================================================================
Commit: 1c40d30e1224a5e29e60726b3a385f0489804679
https://github.com/fusinv/fusioninventory-agent/commit/1c40d30e1224a5e29e60726b3a385f0489804679
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-02 (Mon, 02 Apr 2012)
Changed paths:
A lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares.pm
A lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Deb.pm
A lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Gentoo.pm
A lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Pacman.pm
A lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/RPM.pm
A lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Slackware.pm
R lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/Deb.pm
R lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/Gentoo.pm
R lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/Pacman.pm
R lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/RPM.pm
R lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/Slackware.pm
Log Message:
-----------
move in Generic the Linux package inventory
Most of these tools can be used on non-Linux system.
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares.pm
new file mode 100644
index 0000000..b752445
--- /dev/null
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares.pm
@@ -0,0 +1,12 @@
+package FusionInventory::Agent::Task::Inventory::Input::Generic::Softwares;
+
+use strict;
+use warnings;
+
+sub isEnabled {
+ return 1;
+}
+
+sub doInventory {}
+
+1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Deb.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Deb.pm
new file mode 100644
index 0000000..7e1310b
--- /dev/null
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Deb.pm
@@ -0,0 +1,62 @@
+package FusionInventory::Agent::Task::Inventory::Input::Generic::Softwares::Deb;
+
+use strict;
+use warnings;
+
+use FusionInventory::Agent::Tools;
+
+sub isEnabled {
+ return canRun('dpkg-query');
+}
+
+sub doInventory {
+ my (%params) = @_;
+
+ my $inventory = $params{inventory};
+ my $logger = $params{logger};
+
+ my $command =
+ 'dpkg-query --show --showformat=\'' .
+ '${Package}\t' .
+ '${Version}\t'.
+ '${Installed-Size}\t' .
+ '${Description}\n' .
+ '\'';
+
+ my $packages = _getPackagesList(
+ logger => $logger, command => $command
+ );
+ return unless $packages;
+
+ foreach my $package (@$packages) {
+ $inventory->addEntry(
+ section => 'SOFTWARES',
+ entry => $package
+ );
+ }
+}
+
+sub _getPackagesList {
+ my $handle = getFileHandle(@_);
+ return unless $handle;
+
+ my @packages;
+ while (my $line = <$handle>) {
+ # skip descriptions
+ next if $line =~ /^ /;
+ chomp $line;
+ my @infos = split("\t", $line);
+ push @packages, {
+ NAME => $infos[0],
+ VERSION => $infos[1],
+ FILESIZE => $infos[2],
+ COMMENTS => $infos[3],
+ FROM => 'deb'
+ };
+ }
+ close $handle;
+
+ return \@packages;
+}
+
+1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Gentoo.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Gentoo.pm
new file mode 100644
index 0000000..8002aec
--- /dev/null
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Gentoo.pm
@@ -0,0 +1,64 @@
+package FusionInventory::Agent::Task::Inventory::Input::Generic::Softwares::Gentoo;
+
+use strict;
+use warnings;
+
+use English qw(-no_match_vars);
+
+use FusionInventory::Agent::Tools;
+
+sub isEnabled {
+ return canRun('equery');
+}
+
+sub doInventory {
+ my (%params) = @_;
+
+ my $inventory = $params{inventory};
+ my $logger = $params{logger};
+
+ my $command = _equeryNeedsWildcard() ?
+ "equery list -i '*'" : "equery list -i";
+
+ my $packages = _getPackagesList(
+ logger => $logger, command => $command
+ );
+
+ foreach my $package (@$packages) {
+ $inventory->addEntry(
+ section => 'SOFTWARES',
+ entry => $package
+ );
+ }
+}
+
+sub _getPackagesList {
+ my $handle = getFileHandle(@_);
+
+ my @packages;
+ while (my $line = <$handle>) {
+ chomp $line;
+ next unless $line =~ /^(.*)-([0-9]+.*)/;
+ push @packages, {
+ NAME => $1,
+ VERSION => $2,
+ };
+ }
+ close $handle;
+
+ return \@packages;
+}
+
+# http://forge.fusioninventory.org/issues/852
+sub _equeryNeedsWildcard {
+ my ($major, $minor) = getFirstMatch(
+ command => 'equery -V',
+ pattern => qr/^equery ?\((\d+)\.(\d+)\.\d+\)/,
+ @_
+ );
+
+ # true starting from version 0.3
+ return compareVersion($major, $minor, 0, 3);
+}
+
+1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Pacman.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Pacman.pm
new file mode 100644
index 0000000..0407336
--- /dev/null
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Pacman.pm
@@ -0,0 +1,40 @@
+package FusionInventory::Agent::Task::Inventory::Input::Generic::Softwares::Pacman;
+
+use strict;
+use warnings;
+
+use FusionInventory::Agent::Tools;
+
+sub isEnabled {
+ return canRun('pacman');
+}
+
+sub doInventory {
+ my (%params) = @_;
+
+ my $inventory = $params{inventory};
+ my $logger = $params{logger};
+
+ my $handle = getFileHandle(
+ logger => $logger,
+ command => 'pacman -Q'
+ );
+ return unless $handle;
+
+ while (my $line = <$handle>) {
+ next unless $line =~ /^(\S+)\s+(\S+)/;
+ my $name = $1;
+ my $version = $2;
+
+ $inventory->addEntry(
+ section => 'SOFTWARES',
+ entry => {
+ NAME => $name,
+ VERSION => $version
+ }
+ );
+ }
+ close $handle;
+}
+
+1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/RPM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/RPM.pm
new file mode 100644
index 0000000..68434a9
--- /dev/null
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/RPM.pm
@@ -0,0 +1,65 @@
+package FusionInventory::Agent::Task::Inventory::Input::Generic::Softwares::RPM;
+
+use strict;
+use warnings;
+
+use FusionInventory::Agent::Tools;
+
+sub isEnabled {
+ return canRun('rpm');
+}
+
+sub doInventory {
+ my (%params) = @_;
+
+ my $inventory = $params{inventory};
+ my $logger = $params{logger};
+
+ my $command =
+ 'rpm -qa --queryformat \'' .
+ '%{NAME}\t' .
+ '%{VERSION}-%{RELEASE}\t' .
+ '%{INSTALLTIME:date}\t' .
+ '%{SIZE}\t' .
+ '%{VENDOR}\t' .
+ '%{SUMMARY}\n' .
+ '\'';
+
+ my $packages = _getPackagesList(
+ logger => $logger, command => $command
+ );
+ return unless $packages;
+
+ foreach my $package (@$packages) {
+ $inventory->addEntry(
+ section => 'SOFTWARES',
+ entry => $package
+ );
+ }
+}
+
+sub _getPackagesList {
+ my $handle = getFileHandle(@_);
+ return unless $handle;
+
+ my @packages;
+ while (my $line = <$handle>) {
+ chomp $line;
+ my @infos = split("\t", $line);
+ push @packages, {
+ NAME => $infos[0],
+ VERSION => $infos[1],
+ INSTALLDATE => $infos[2],
+ FILESIZE => $infos[3],
+ PUBLISHER => $infos[4],
+ COMMENTS => $infos[5],
+ FROM => 'rpm'
+ };
+ }
+
+ close $handle;
+
+ return \@packages;
+}
+
+1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Slackware.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Slackware.pm
new file mode 100644
index 0000000..f71fc14
--- /dev/null
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Slackware.pm
@@ -0,0 +1,39 @@
+package FusionInventory::Agent::Task::Inventory::Input::Generic::Softwares::Slackware;
+
+use strict;
+use warnings;
+
+use FusionInventory::Agent::Tools;
+
+sub isEnabled {
+ return canRun('pkgtool');
+}
+
+sub doInventory {
+ my (%params) = @_;
+
+ my $inventory = $params{inventory};
+ my $logger = $params{logger};
+
+ my $handle = getDirectoryHandle(
+ directory => '/var/log/packages', logger => $logger
+ );
+ return unless $handle;
+
+ while (my $file = readdir($handle)) {
+ next unless $file =~ /^(.+)([^-]+-[^-]+-[^-]+)$/;
+ my $name = $1;
+ my $version = $2;
+
+ $inventory->addEntry(
+ section => 'SOFTWARES',
+ entry => {
+ NAME => $name,
+ VERSION => $version
+ }
+ );
+ }
+ closedir $handle;
+}
+
+1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/Deb.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/Deb.pm
deleted file mode 100644
index 66ca9fb..0000000
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/Deb.pm
+++ /dev/null
@@ -1,62 +0,0 @@
-package FusionInventory::Agent::Task::Inventory::Input::Linux::Softwares::Deb;
-
-use strict;
-use warnings;
-
-use FusionInventory::Agent::Tools;
-
-sub isEnabled {
- return canRun('dpkg-query');
-}
-
-sub doInventory {
- my (%params) = @_;
-
- my $inventory = $params{inventory};
- my $logger = $params{logger};
-
- my $command =
- 'dpkg-query --show --showformat=\'' .
- '${Package}\t' .
- '${Version}\t'.
- '${Installed-Size}\t' .
- '${Description}\n' .
- '\'';
-
- my $packages = _getPackagesList(
- logger => $logger, command => $command
- );
- return unless $packages;
-
- foreach my $package (@$packages) {
- $inventory->addEntry(
- section => 'SOFTWARES',
- entry => $package
- );
- }
-}
-
-sub _getPackagesList {
- my $handle = getFileHandle(@_);
- return unless $handle;
-
- my @packages;
- while (my $line = <$handle>) {
- # skip descriptions
- next if $line =~ /^ /;
- chomp $line;
- my @infos = split("\t", $line);
- push @packages, {
- NAME => $infos[0],
- VERSION => $infos[1],
- FILESIZE => $infos[2],
- COMMENTS => $infos[3],
- FROM => 'deb'
- };
- }
- close $handle;
-
- return \@packages;
-}
-
-1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/Gentoo.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/Gentoo.pm
deleted file mode 100644
index 125e593..0000000
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/Gentoo.pm
+++ /dev/null
@@ -1,64 +0,0 @@
-package FusionInventory::Agent::Task::Inventory::Input::Linux::Softwares::Gentoo;
-
-use strict;
-use warnings;
-
-use English qw(-no_match_vars);
-
-use FusionInventory::Agent::Tools;
-
-sub isEnabled {
- return canRun('equery');
-}
-
-sub doInventory {
- my (%params) = @_;
-
- my $inventory = $params{inventory};
- my $logger = $params{logger};
-
- my $command = _equeryNeedsWildcard() ?
- "equery list -i '*'" : "equery list -i";
-
- my $packages = _getPackagesList(
- logger => $logger, command => $command
- );
-
- foreach my $package (@$packages) {
- $inventory->addEntry(
- section => 'SOFTWARES',
- entry => $package
- );
- }
-}
-
-sub _getPackagesList {
- my $handle = getFileHandle(@_);
-
- my @packages;
- while (my $line = <$handle>) {
- chomp $line;
- next unless $line =~ /^(.*)-([0-9]+.*)/;
- push @packages, {
- NAME => $1,
- VERSION => $2,
- };
- }
- close $handle;
-
- return \@packages;
-}
-
-# http://forge.fusioninventory.org/issues/852
-sub _equeryNeedsWildcard {
- my ($major, $minor) = getFirstMatch(
- command => 'equery -V',
- pattern => qr/^equery ?\((\d+)\.(\d+)\.\d+\)/,
- @_
- );
-
- # true starting from version 0.3
- return compareVersion($major, $minor, 0, 3);
-}
-
-1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/Pacman.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/Pacman.pm
deleted file mode 100644
index 04425ed..0000000
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/Pacman.pm
+++ /dev/null
@@ -1,40 +0,0 @@
-package FusionInventory::Agent::Task::Inventory::Input::Linux::Softwares::Pacman;
-
-use strict;
-use warnings;
-
-use FusionInventory::Agent::Tools;
-
-sub isEnabled {
- return canRun('pacman');
-}
-
-sub doInventory {
- my (%params) = @_;
-
- my $inventory = $params{inventory};
- my $logger = $params{logger};
-
- my $handle = getFileHandle(
- logger => $logger,
- command => 'pacman -Q'
- );
- return unless $handle;
-
- while (my $line = <$handle>) {
- next unless $line =~ /^(\S+)\s+(\S+)/;
- my $name = $1;
- my $version = $2;
-
- $inventory->addEntry(
- section => 'SOFTWARES',
- entry => {
- NAME => $name,
- VERSION => $version
- }
- );
- }
- close $handle;
-}
-
-1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/RPM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/RPM.pm
deleted file mode 100644
index 53c27c0..0000000
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/RPM.pm
+++ /dev/null
@@ -1,65 +0,0 @@
-package FusionInventory::Agent::Task::Inventory::Input::Linux::Softwares::RPM;
-
-use strict;
-use warnings;
-
-use FusionInventory::Agent::Tools;
-
-sub isEnabled {
- return canRun('rpm');
-}
-
-sub doInventory {
- my (%params) = @_;
-
- my $inventory = $params{inventory};
- my $logger = $params{logger};
-
- my $command =
- 'rpm -qa --queryformat \'' .
- '%{NAME}\t' .
- '%{VERSION}-%{RELEASE}\t' .
- '%{INSTALLTIME:date}\t' .
- '%{SIZE}\t' .
- '%{VENDOR}\t' .
- '%{SUMMARY}\n' .
- '\'';
-
- my $packages = _getPackagesList(
- logger => $logger, command => $command
- );
- return unless $packages;
-
- foreach my $package (@$packages) {
- $inventory->addEntry(
- section => 'SOFTWARES',
- entry => $package
- );
- }
-}
-
-sub _getPackagesList {
- my $handle = getFileHandle(@_);
- return unless $handle;
-
- my @packages;
- while (my $line = <$handle>) {
- chomp $line;
- my @infos = split("\t", $line);
- push @packages, {
- NAME => $infos[0],
- VERSION => $infos[1],
- INSTALLDATE => $infos[2],
- FILESIZE => $infos[3],
- PUBLISHER => $infos[4],
- COMMENTS => $infos[5],
- FROM => 'rpm'
- };
- }
-
- close $handle;
-
- return \@packages;
-}
-
-1;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/Slackware.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/Slackware.pm
deleted file mode 100644
index 25f8418..0000000
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares/Slackware.pm
+++ /dev/null
@@ -1,39 +0,0 @@
-package FusionInventory::Agent::Task::Inventory::Input::Linux::Softwares::Slackware;
-
-use strict;
-use warnings;
-
-use FusionInventory::Agent::Tools;
-
-sub isEnabled {
- return canRun('pkgtool');
-}
-
-sub doInventory {
- my (%params) = @_;
-
- my $inventory = $params{inventory};
- my $logger = $params{logger};
-
- my $handle = getDirectoryHandle(
- directory => '/var/log/packages', logger => $logger
- );
- return unless $handle;
-
- while (my $file = readdir($handle)) {
- next unless $file =~ /^(.+)([^-]+-[^-]+-[^-]+)$/;
- my $name = $1;
- my $version = $2;
-
- $inventory->addEntry(
- section => 'SOFTWARES',
- entry => {
- NAME => $name,
- VERSION => $version
- }
- );
- }
- closedir $handle;
-}
-
-1;
================================================================
Commit: a18a14a212b4e924cf51b725d1b4486c62abbfb8
https://github.com/fusinv/fusioninventory-agent/commit/a18a14a212b4e924cf51b725d1b4486c62abbfb8
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-02 (Mon, 02 Apr 2012)
Changed paths:
M Changes
M lib/FusionInventory/Agent.pm
M lib/FusionInventory/Agent/HTTP/Server.pm
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/Changes b/Changes
index a152f51..4dd3879 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,6 @@
Revision history for FusionInventory agent
-2.2.0
+2.2.0 Mon, 02 Apr 2012 14:52:02 +0200
Major changes:
* large speed improvement: up to 150% for a local inventory
diff --git a/lib/FusionInventory/Agent.pm b/lib/FusionInventory/Agent.pm
index 515ef26..ce06f78 100644
--- a/lib/FusionInventory/Agent.pm
+++ b/lib/FusionInventory/Agent.pm
@@ -22,7 +22,7 @@ use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Hostname;
use FusionInventory::Agent::XML::Query::Prolog;
-our $VERSION = '2.1.9904';
+our $VERSION = '2.2.0';
our $VERSION_STRING =
"FusionInventory unified agent for UNIX, Linux and MacOSX ($VERSION)";
our $AGENT_STRING =
diff --git a/lib/FusionInventory/Agent/HTTP/Server.pm b/lib/FusionInventory/Agent/HTTP/Server.pm
index 4ef83c9..99cb44f 100644
--- a/lib/FusionInventory/Agent/HTTP/Server.pm
+++ b/lib/FusionInventory/Agent/HTTP/Server.pm
@@ -76,7 +76,7 @@ sub _handle {
}
# now request
- if ($path =~ m{^/now(?:/(\S+))?$}) {
+ if ($path =~ m{^/now(?:/(\S*))?$}) {
$self->_handle_now($client, $request, $clientIp, $1);
last SWITCH;
}
================================================================
Commit: d6592042c174b4490fd12d22d9d7dd799ca6e9e0
https://github.com/fusinv/fusioninventory-agent/commit/d6592042c174b4490fd12d22d9d7dd799ca6e9e0
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-02 (Mon, 02 Apr 2012)
Changed paths:
M t/inventory/linux/softwares.t
Log Message:
-----------
fix test broken by commit #1c40d30
diff --git a/t/inventory/linux/softwares.t b/t/inventory/linux/softwares.t
index 3afbcbb..661da0e 100755
--- a/t/inventory/linux/softwares.t
+++ b/t/inventory/linux/softwares.t
@@ -5,9 +5,9 @@ use warnings;
use Test::More;
-use FusionInventory::Agent::Task::Inventory::Input::Linux::Softwares::RPM;
-use FusionInventory::Agent::Task::Inventory::Input::Linux::Softwares::Deb;
-use FusionInventory::Agent::Task::Inventory::Input::Linux::Softwares::Gentoo;
+use FusionInventory::Agent::Task::Inventory::Input::Generic::Softwares::RPM;
+use FusionInventory::Agent::Task::Inventory::Input::Generic::Softwares::Deb;
+use FusionInventory::Agent::Task::Inventory::Input::Generic::Softwares::Gentoo;
my $rpm_packages = [
{
@@ -102,25 +102,25 @@ my $deb_packages = [
plan tests => 4;
my $packages;
-$packages = FusionInventory::Agent::Task::Inventory::Input::Linux::Softwares::RPM::_getPackagesList(
+$packages = FusionInventory::Agent::Task::Inventory::Input::Generic::Softwares::RPM::_getPackagesList(
file => "resources/linux/packaging/rpm"
);
is_deeply($packages, $rpm_packages, 'rpm parsing');
-$packages = FusionInventory::Agent::Task::Inventory::Input::Linux::Softwares::Deb::_getPackagesList(
+$packages = FusionInventory::Agent::Task::Inventory::Input::Generic::Softwares::Deb::_getPackagesList(
file => "resources/linux/packaging/dpkg"
);
is_deeply($packages, $deb_packages, 'dpkg parsing');
ok(
- !FusionInventory::Agent::Task::Inventory::Input::Linux::Softwares::Gentoo::_equeryNeedsWildcard(
+ !FusionInventory::Agent::Task::Inventory::Input::Generic::Softwares::Gentoo::_equeryNeedsWildcard(
file => "resources/linux/equery/gentoo1"
),
"old equery version"
);
ok(
- FusionInventory::Agent::Task::Inventory::Input::Linux::Softwares::Gentoo::_equeryNeedsWildcard(
+ FusionInventory::Agent::Task::Inventory::Input::Generic::Softwares::Gentoo::_equeryNeedsWildcard(
file => "resources/linux/equery/gentoo2"
),
"new equery version"
================================================================
Commit: b5a736f6fee4ca91005b7b8019922d7b9d07a4e6
https://github.com/fusinv/fusioninventory-agent/commit/b5a736f6fee4ca91005b7b8019922d7b9d07a4e6
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-02 (Mon, 02 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares.pm
Log Message:
-----------
fix breakage introduced by commit #1c40d30
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares.pm
index b752445..6cdce6f 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares.pm
@@ -4,7 +4,9 @@ use strict;
use warnings;
sub isEnabled {
- return 1;
+ my (%params) = @_;
+
+ return !$params{no_category}->{software};
}
sub doInventory {}
================================================================
Commit: 552b4777913406c7b05d5a55e8f30613d914dd3f
https://github.com/fusinv/fusioninventory-agent/commit/552b4777913406c7b05d5a55e8f30613d914dd3f
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-02 (Mon, 02 Apr 2012)
Changed paths:
R lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares.pm
Log Message:
-----------
useless now
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares.pm
deleted file mode 100644
index d9db905..0000000
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Softwares.pm
+++ /dev/null
@@ -1,17 +0,0 @@
-package FusionInventory::Agent::Task::Inventory::Input::Linux::Softwares;
-
-use strict;
-use warnings;
-
-use FusionInventory::Agent::Tools;
-
-sub isEnabled {
- my (%params) = @_;
-
- return !$params{no_category}->{software};
-}
-
-sub doInventory {
-}
-
-1;
================================================================
Commit: 9c47c0634b6d704ca9793586eef40def60b6f984
https://github.com/fusinv/fusioninventory-agent/commit/9c47c0634b6d704ca9793586eef40def60b6f984
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-02 (Mon, 02 Apr 2012)
Changed paths:
M t/apps/agent.t
Log Message:
-----------
better test descriptions
diff --git a/t/apps/agent.t b/t/apps/agent.t
index a76ebdd..ab336a3 100755
--- a/t/apps/agent.t
+++ b/t/apps/agent.t
@@ -131,13 +131,13 @@ ok(
ok(
ref $content->{REQUEST}->{CONTENT}->{SOFTWARES} eq 'HASH',
- 'inventory has expected software list'
+ 'inventory contains only one software'
);
ok(
$content->{REQUEST}->{CONTENT}->{SOFTWARES}->{NAME} eq 'foo' &&
$content->{REQUEST}->{CONTENT}->{SOFTWARES}->{VERSION} eq 'bar',
- 'expected software'
+ 'inventory contains the expected software'
);
ok(
================================================================
Commit: c07436b5f5e3c1f40dc4a90c547fea3a08796493
https://github.com/fusinv/fusioninventory-agent/commit/c07436b5f5e3c1f40dc4a90c547fea3a08796493
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-03 (Tue, 03 Apr 2012)
Changed paths:
M Changes
Log Message:
-----------
refresh the date of the 2.2.0 release
diff --git a/Changes b/Changes
index 4dd3879..2d8ea9c 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,6 @@
Revision history for FusionInventory agent
-2.2.0 Mon, 02 Apr 2012 14:52:02 +0200
+2.2.0 Tue, 03 Apr 2012 11:36:51 +0200
Major changes:
* large speed improvement: up to 150% for a local inventory
================================================================
Commit: c8b6562e7013c2b187a2636003a7d659cf97c49a
https://github.com/fusinv/fusioninventory-agent/commit/c8b6562e7013c2b187a2636003a7d659cf97c49a
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-03 (Tue, 03 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools.pm
Log Message:
-----------
don't use File::Which for absolute pathes
diff --git a/lib/FusionInventory/Agent/Tools.pm b/lib/FusionInventory/Agent/Tools.pm
index af6addd..39b4a71 100644
--- a/lib/FusionInventory/Agent/Tools.pm
+++ b/lib/FusionInventory/Agent/Tools.pm
@@ -333,7 +333,9 @@ sub getLinesCount {
sub canRun {
my ($binary) = @_;
- return scalar(which($binary));
+ return $binary =~ m{^/} ?
+ -x $binary : # full path
+ scalar(which($binary)); # executable name
}
sub canRead {
================================================================
Commit: 05e5caa1e30a3a93ca7166d3d33edac87f26db66
https://github.com/fusinv/fusioninventory-agent/commit/05e5caa1e30a3a93ca7166d3d33edac87f26db66
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-03 (Tue, 03 Apr 2012)
Changed paths:
A resources/generic/ifconfig/linux-archlinux
Log Message:
-----------
initial import
diff --git a/resources/generic/ifconfig/linux-archlinux b/resources/generic/ifconfig/linux-archlinux
new file mode 100644
index 0000000..9758367
--- /dev/null
+++ b/resources/generic/ifconfig/linux-archlinux
@@ -0,0 +1,25 @@
+eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 metric 1
+ inet 192.168.2.43 netmask 255.255.255.0 broadcast 192.168.2.255
+ inet6 fe80::4a5b:39ff:fec6:53ba prefixlen 64 scopeid 0x20<link>
+ ether 48:5b:39:c6:53:ba txqueuelen 1000 (Ethernet)
+ RX packets 20124909 bytes 3625717309 (3.3 GiB)
+ RX errors 0 dropped 82 overruns 0 frame 0
+ TX packets 15743857 bytes 2221212850 (2.0 GiB)
+ TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
+ device interrupt 43 base 0x8000
+
+lo: flags=73<UP,LOOPBACK,RUNNING> mtu 16436 metric 1
+ inet 127.0.0.1 netmask 255.0.0.0
+ inet6 ::1 prefixlen 128 scopeid 0x10<host>
+ loop txqueuelen 0 (Local Loopback)
+ RX packets 69371 bytes 3675083 (3.5 MiB)
+ RX errors 0 dropped 0 overruns 0 frame 0
+ TX packets 69371 bytes 3675083 (3.5 MiB)
+ TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
+
+vboxnet0: flags=4098<BROADCAST,MULTICAST> mtu 1500 metric 1
+ ether 0a:00:27:00:00:00 txqueuelen 1000 (Ethernet)
+ RX packets 0 bytes 0 (0.0 B)
+ RX errors 0 dropped 0 overruns 0 frame 0
+ TX packets 0 bytes 0 (0.0 B)
+ TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
================================================================
Commit: b24ed53b7aaa42894be6b2fd377e22ca85140600
https://github.com/fusinv/fusioninventory-agent/commit/b24ed53b7aaa42894be6b2fd377e22ca85140600
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-03 (Tue, 03 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/LSB.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm
M lib/FusionInventory/Agent/Tools/Solaris.pm
Log Message:
-----------
use consistent quoting character everywhere
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
index 3bb8c7f..72bc1b9 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
@@ -8,7 +8,7 @@ use warnings;
use English qw(-no_match_vars);
sub isEnabled {
- canRun("lspv");
+ canRun('lspv');
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm
index 44b26fb..6e23255 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm
@@ -8,7 +8,7 @@ use FusionInventory::Agent::Tools::Network;
use FusionInventory::Agent::Tools::Unix;
sub isEnabled {
- return canRun("ifconfig");
+ return canRun('ifconfig');
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/LSB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/LSB.pm
index 4792d11..835df43 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/LSB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/LSB.pm
@@ -6,7 +6,7 @@ use warnings;
use FusionInventory::Agent::Tools;
sub isEnabled {
- return canRun("lsb_release");
+ return canRun('lsb_release');
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
index a42afe6..97a36f1 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
@@ -63,7 +63,7 @@ our $runMeIfTheseChecksFailed =
["FusionInventory::Agent::Task::Inventory::Input::Linux::Distro::LSB"];
sub isEnabled {
- return !canRun("lsb_release");
+ return !canRun('lsb_release');
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
index 997617d..143f50d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
@@ -8,7 +8,7 @@ use English qw(-no_match_vars);
use FusionInventory::Agent::Tools;
sub isEnabled {
- canRun("lvs");
+ canRun('lvs');
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
index 5fdf0a0..703646e 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
@@ -44,7 +44,7 @@ sub _getInterfaces {
my $logger = $params{logger};
- my @interfaces = canRun("/sbin/ip") ?
+ my @interfaces = canRun('/sbin/ip') ?
getInterfacesFromIp(logger => $logger):
getInterfacesFromIfconfig(logger => $logger);
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm
index a78752e..a5787de 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm
@@ -7,7 +7,7 @@ use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Network;
sub isEnabled {
- return unless canRun("hponcfg");
+ return unless canRun('hponcfg');
}
sub _parseHponcfg {
diff --git a/lib/FusionInventory/Agent/Tools/Solaris.pm b/lib/FusionInventory/Agent/Tools/Solaris.pm
index 6103956..c249d71 100644
--- a/lib/FusionInventory/Agent/Tools/Solaris.pm
+++ b/lib/FusionInventory/Agent/Tools/Solaris.pm
@@ -38,7 +38,7 @@ memoize('getClass');
sub getZone {
- return 'global' unless canRun("zonename");
+ return 'global' unless canRun('zonename');
my $zone = getFirstLine(command => 'zonename');
================================================================
Commit: 9808a364f662e941ade86c30b2997a7ca51a764a
https://github.com/fusinv/fusioninventory-agent/commit/9808a364f662e941ade86c30b2997a7ca51a764a
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-03 (Tue, 03 Apr 2012)
Changed paths:
M t/components/client/ssl.t
Log Message:
-----------
better phrasing
diff --git a/t/components/client/ssl.t b/t/components/client/ssl.t
index 62ea6bc..a852de1 100755
--- a/t/components/client/ssl.t
+++ b/t/components/client/ssl.t
@@ -114,7 +114,7 @@ $server->background();
SKIP: {
-skip "Too all LWP for alternate hostname", 1 unless $LWP::VERSION >= 6;
+skip "LWP version too old, skipping", 1 unless $LWP::VERSION >= 6;
ok(
$secure_client->request(HTTP::Request->new(GET => $url))->is_success(),
'trusted certificate, alternate hostname: connection success'
@@ -200,8 +200,7 @@ ok(
);
SKIP: {
-skip "Check disabled on LWP<6", 1 unless $LWP::VERSION >= 6;
-# Unless you wan to fix this
+skip "LWP version too old, skipping", 1 unless $LWP::VERSION >= 6;
ok(
$unsafe_client->request(HTTP::Request->new(GET => $url))->is_success(),
'untrusted certificate, correct hostname, no check: connection success'
================================================================
Commit: 9edbb9551031ceec0d0a0aa4117d035cf881c15d
https://github.com/fusinv/fusioninventory-agent/commit/9edbb9551031ceec0d0a0aa4117d035cf881c15d
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-03 (Tue, 03 Apr 2012)
Changed paths:
M t/FusionInventory/Test/Utils.pm
Log Message:
-----------
check proper localhost resolution
diff --git a/t/FusionInventory/Test/Utils.pm b/t/FusionInventory/Test/Utils.pm
index e2e5e17..5bf0a88 100644
--- a/t/FusionInventory/Test/Utils.pm
+++ b/t/FusionInventory/Test/Utils.pm
@@ -7,8 +7,11 @@ use base 'Exporter';
use English qw(-no_match_vars);
use Socket;
+use FusionInventory::Agent::Tools;
+
our @EXPORT = qw(
test_port
+ test_localhost
mockGetWmiObjects
mockGetRegistryKey
);
@@ -29,6 +32,20 @@ sub test_port {
return 0;
}
+sub test_localhost {
+
+ return 0 unless inet_aton('localhost');
+
+ my $ipv6;
+ eval {
+ my ($err, @result) = Socket::getaddrinfo("localhost", "http");
+ $ipv6 = any { $_->{family} == Socket::PF_INET6 } @result;
+ };
+ return 0 if $ipv6;
+
+ return 1;
+}
+
sub mockGetWmiObjects {
my ($test) = @_;
================================================================
Commit: 654d5c38fb7a23be72cee972ac155ab37bd36e34
https://github.com/fusinv/fusioninventory-agent/commit/654d5c38fb7a23be72cee972ac155ab37bd36e34
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-03 (Tue, 03 Apr 2012)
Changed paths:
M t/components/client/connection.t
M t/components/client/ssl.t
Log Message:
-----------
skip tests for IPv6 localhost (close #1540)
diff --git a/t/components/client/connection.t b/t/components/client/connection.t
index 1f1d255..e301eb0 100755
--- a/t/components/client/connection.t
+++ b/t/components/client/connection.t
@@ -6,6 +6,7 @@ use lib 't';
use English qw(-no_match_vars);
use HTTP::Request;
+
use Test::More;
use Test::Exception;
@@ -34,6 +35,9 @@ my $client = FusionInventory::Agent::HTTP::Client->new(
# no connection tests
BAIL_OUT("port aleady used") if test_port(8080);
+# check than 'localhost' resolves, to an IPv4 address only
+my $localhost_ok = test_localhost();
+
subtest "no response" => sub {
check_response_nok(
$client,
@@ -103,6 +107,7 @@ $server->stop();
SKIP: {
skip 'non working test under MacOS', 12 if $OSNAME eq 'darwin';
skip 'non working test under Windows', 12 if $OSNAME eq 'MSWin32';
+skip 'non working test without pure IPv4 localhost', 12 if !$localhost_ok;
# https connection tests
$server = FusionInventory::Test::Server->new(
@@ -217,6 +222,7 @@ $server->stop();
SKIP: {
skip 'non working test under Windows', 18 if $OSNAME eq 'MSWin32';
+skip 'non working test without pure IPv4 localhost', 18 if !$localhost_ok;
# http connection through proxy tests
$server = FusionInventory::Test::Server->new(
diff --git a/t/components/client/ssl.t b/t/components/client/ssl.t
index a852de1..98122ea 100755
--- a/t/components/client/ssl.t
+++ b/t/components/client/ssl.t
@@ -13,8 +13,15 @@ use FusionInventory::Agent::HTTP::Client;
use FusionInventory::Test::Server;
use FusionInventory::Test::Utils;
-if ($OSNAME eq 'MSWin32' || $OSNAME eq 'darwin') {
- plan skip_all => 'non working test on Windows and MacOS';
+# check than 'localhost' resolves, to an IPv4 address only
+my $localhost_ok = test_localhost();
+
+if (!$localhost_ok) {
+ plan skip_all => 'non working test without pure IPv4 localhost';
+} elsif ($OSNAME eq 'MSWin32') {
+ plan skip_all => 'non working test on Windows';
+} elsif ($OSNAME eq 'darwin') {
+ plan skip_all => 'non working test on MacOS';
} else {
plan tests => 8;
}
================================================================
Commit: ce140292a8fbffc77f5b40b337c81227a2abd002
https://github.com/fusinv/fusioninventory-agent/commit/ce140292a8fbffc77f5b40b337c81227a2abd002
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-04 (Wed, 04 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Logger/Stderr.pm
Log Message:
-----------
avoid warning of log level is 'debug2'
diff --git a/lib/FusionInventory/Agent/Logger/Stderr.pm b/lib/FusionInventory/Agent/Logger/Stderr.pm
index 3e9959c..cc64568 100644
--- a/lib/FusionInventory/Agent/Logger/Stderr.pm
+++ b/lib/FusionInventory/Agent/Logger/Stderr.pm
@@ -31,7 +31,7 @@ sub addMessage {
$format = "\033[1;31m[%s] %s\033[0m\n";
} elsif ($level eq 'info') {
$format = "\033[1;34m[%s]\033[0m %s\n";
- } elsif ($level eq 'debug') {
+ } elsif ($level =~ /^debug/ ) {
$format = "\033[1;1m[%s]\033[0m %s\n";
}
} else {
================================================================
Commit: a94fefab67983fc23a354a7a2512e9582b0617f5
https://github.com/fusinv/fusioninventory-agent/commit/a94fefab67983fc23a354a7a2512e9582b0617f5
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-04 (Wed, 04 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/LSB.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm
M lib/FusionInventory/Agent/Tools.pm
M lib/FusionInventory/Agent/Tools/Solaris.pm
A resources/generic/ifconfig/linux-archlinux
M t/FusionInventory/Test/Utils.pm
M t/components/client/connection.t
M t/components/client/ssl.t
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
index 3bb8c7f..72bc1b9 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/AIX/LVM.pm
@@ -8,7 +8,7 @@ use warnings;
use English qw(-no_match_vars);
sub isEnabled {
- canRun("lspv");
+ canRun('lspv');
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm
index 44b26fb..6e23255 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm
@@ -8,7 +8,7 @@ use FusionInventory::Agent::Tools::Network;
use FusionInventory::Agent::Tools::Unix;
sub isEnabled {
- return canRun("ifconfig");
+ return canRun('ifconfig');
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/LSB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/LSB.pm
index 4792d11..835df43 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/LSB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/LSB.pm
@@ -6,7 +6,7 @@ use warnings;
use FusionInventory::Agent::Tools;
sub isEnabled {
- return canRun("lsb_release");
+ return canRun('lsb_release');
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
index a42afe6..97a36f1 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm
@@ -63,7 +63,7 @@ our $runMeIfTheseChecksFailed =
["FusionInventory::Agent::Task::Inventory::Input::Linux::Distro::LSB"];
sub isEnabled {
- return !canRun("lsb_release");
+ return !canRun('lsb_release');
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
index 997617d..143f50d 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
@@ -8,7 +8,7 @@ use English qw(-no_match_vars);
use FusionInventory::Agent::Tools;
sub isEnabled {
- canRun("lvs");
+ canRun('lvs');
}
sub doInventory {
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
index 5fdf0a0..703646e 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Networks.pm
@@ -44,7 +44,7 @@ sub _getInterfaces {
my $logger = $params{logger};
- my @interfaces = canRun("/sbin/ip") ?
+ my @interfaces = canRun('/sbin/ip') ?
getInterfacesFromIp(logger => $logger):
getInterfacesFromIfconfig(logger => $logger);
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm
index a78752e..a5787de 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm
@@ -7,7 +7,7 @@ use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Network;
sub isEnabled {
- return unless canRun("hponcfg");
+ return unless canRun('hponcfg');
}
sub _parseHponcfg {
diff --git a/lib/FusionInventory/Agent/Tools.pm b/lib/FusionInventory/Agent/Tools.pm
index af6addd..39b4a71 100644
--- a/lib/FusionInventory/Agent/Tools.pm
+++ b/lib/FusionInventory/Agent/Tools.pm
@@ -333,7 +333,9 @@ sub getLinesCount {
sub canRun {
my ($binary) = @_;
- return scalar(which($binary));
+ return $binary =~ m{^/} ?
+ -x $binary : # full path
+ scalar(which($binary)); # executable name
}
sub canRead {
diff --git a/lib/FusionInventory/Agent/Tools/Solaris.pm b/lib/FusionInventory/Agent/Tools/Solaris.pm
index 6103956..c249d71 100644
--- a/lib/FusionInventory/Agent/Tools/Solaris.pm
+++ b/lib/FusionInventory/Agent/Tools/Solaris.pm
@@ -38,7 +38,7 @@ memoize('getClass');
sub getZone {
- return 'global' unless canRun("zonename");
+ return 'global' unless canRun('zonename');
my $zone = getFirstLine(command => 'zonename');
diff --git a/resources/generic/ifconfig/linux-archlinux b/resources/generic/ifconfig/linux-archlinux
new file mode 100644
index 0000000..9758367
--- /dev/null
+++ b/resources/generic/ifconfig/linux-archlinux
@@ -0,0 +1,25 @@
+eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 metric 1
+ inet 192.168.2.43 netmask 255.255.255.0 broadcast 192.168.2.255
+ inet6 fe80::4a5b:39ff:fec6:53ba prefixlen 64 scopeid 0x20<link>
+ ether 48:5b:39:c6:53:ba txqueuelen 1000 (Ethernet)
+ RX packets 20124909 bytes 3625717309 (3.3 GiB)
+ RX errors 0 dropped 82 overruns 0 frame 0
+ TX packets 15743857 bytes 2221212850 (2.0 GiB)
+ TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
+ device interrupt 43 base 0x8000
+
+lo: flags=73<UP,LOOPBACK,RUNNING> mtu 16436 metric 1
+ inet 127.0.0.1 netmask 255.0.0.0
+ inet6 ::1 prefixlen 128 scopeid 0x10<host>
+ loop txqueuelen 0 (Local Loopback)
+ RX packets 69371 bytes 3675083 (3.5 MiB)
+ RX errors 0 dropped 0 overruns 0 frame 0
+ TX packets 69371 bytes 3675083 (3.5 MiB)
+ TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
+
+vboxnet0: flags=4098<BROADCAST,MULTICAST> mtu 1500 metric 1
+ ether 0a:00:27:00:00:00 txqueuelen 1000 (Ethernet)
+ RX packets 0 bytes 0 (0.0 B)
+ RX errors 0 dropped 0 overruns 0 frame 0
+ TX packets 0 bytes 0 (0.0 B)
+ TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
diff --git a/t/FusionInventory/Test/Utils.pm b/t/FusionInventory/Test/Utils.pm
index e2e5e17..5bf0a88 100644
--- a/t/FusionInventory/Test/Utils.pm
+++ b/t/FusionInventory/Test/Utils.pm
@@ -7,8 +7,11 @@ use base 'Exporter';
use English qw(-no_match_vars);
use Socket;
+use FusionInventory::Agent::Tools;
+
our @EXPORT = qw(
test_port
+ test_localhost
mockGetWmiObjects
mockGetRegistryKey
);
@@ -29,6 +32,20 @@ sub test_port {
return 0;
}
+sub test_localhost {
+
+ return 0 unless inet_aton('localhost');
+
+ my $ipv6;
+ eval {
+ my ($err, @result) = Socket::getaddrinfo("localhost", "http");
+ $ipv6 = any { $_->{family} == Socket::PF_INET6 } @result;
+ };
+ return 0 if $ipv6;
+
+ return 1;
+}
+
sub mockGetWmiObjects {
my ($test) = @_;
diff --git a/t/components/client/connection.t b/t/components/client/connection.t
index 1f1d255..e301eb0 100755
--- a/t/components/client/connection.t
+++ b/t/components/client/connection.t
@@ -6,6 +6,7 @@ use lib 't';
use English qw(-no_match_vars);
use HTTP::Request;
+
use Test::More;
use Test::Exception;
@@ -34,6 +35,9 @@ my $client = FusionInventory::Agent::HTTP::Client->new(
# no connection tests
BAIL_OUT("port aleady used") if test_port(8080);
+# check than 'localhost' resolves, to an IPv4 address only
+my $localhost_ok = test_localhost();
+
subtest "no response" => sub {
check_response_nok(
$client,
@@ -103,6 +107,7 @@ $server->stop();
SKIP: {
skip 'non working test under MacOS', 12 if $OSNAME eq 'darwin';
skip 'non working test under Windows', 12 if $OSNAME eq 'MSWin32';
+skip 'non working test without pure IPv4 localhost', 12 if !$localhost_ok;
# https connection tests
$server = FusionInventory::Test::Server->new(
@@ -217,6 +222,7 @@ $server->stop();
SKIP: {
skip 'non working test under Windows', 18 if $OSNAME eq 'MSWin32';
+skip 'non working test without pure IPv4 localhost', 18 if !$localhost_ok;
# http connection through proxy tests
$server = FusionInventory::Test::Server->new(
diff --git a/t/components/client/ssl.t b/t/components/client/ssl.t
index 62ea6bc..98122ea 100755
--- a/t/components/client/ssl.t
+++ b/t/components/client/ssl.t
@@ -13,8 +13,15 @@ use FusionInventory::Agent::HTTP::Client;
use FusionInventory::Test::Server;
use FusionInventory::Test::Utils;
-if ($OSNAME eq 'MSWin32' || $OSNAME eq 'darwin') {
- plan skip_all => 'non working test on Windows and MacOS';
+# check than 'localhost' resolves, to an IPv4 address only
+my $localhost_ok = test_localhost();
+
+if (!$localhost_ok) {
+ plan skip_all => 'non working test without pure IPv4 localhost';
+} elsif ($OSNAME eq 'MSWin32') {
+ plan skip_all => 'non working test on Windows';
+} elsif ($OSNAME eq 'darwin') {
+ plan skip_all => 'non working test on MacOS';
} else {
plan tests => 8;
}
@@ -114,7 +121,7 @@ $server->background();
SKIP: {
-skip "Too all LWP for alternate hostname", 1 unless $LWP::VERSION >= 6;
+skip "LWP version too old, skipping", 1 unless $LWP::VERSION >= 6;
ok(
$secure_client->request(HTTP::Request->new(GET => $url))->is_success(),
'trusted certificate, alternate hostname: connection success'
@@ -200,8 +207,7 @@ ok(
);
SKIP: {
-skip "Check disabled on LWP<6", 1 unless $LWP::VERSION >= 6;
-# Unless you wan to fix this
+skip "LWP version too old, skipping", 1 unless $LWP::VERSION >= 6;
ok(
$unsafe_client->request(HTTP::Request->new(GET => $url))->is_success(),
'untrusted certificate, correct hostname, no check: connection success'
================================================================
Commit: 3528abfbefd26a4c68bca234b038c8551ba4982e
https://github.com/fusinv/fusioninventory-agent/commit/3528abfbefd26a4c68bca234b038c8551ba4982e
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-04 (Wed, 04 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Linux.pm
A resources/linux/ip/ip_addr-3
M t/tools/linux.t
Log Message:
-----------
improve "ip addr show" parsing
-do not ignore interface with no UP or DOWN in the status
-do not ignore the last interface
-do not keep only the last IPv4 address anymore. Create a <NETWORKS />
per address instead.
diff --git a/lib/FusionInventory/Agent/Tools/Linux.pm b/lib/FusionInventory/Agent/Tools/Linux.pm
index ec5a364..1ba3cd4 100644
--- a/lib/FusionInventory/Agent/Tools/Linux.pm
+++ b/lib/FusionInventory/Agent/Tools/Linux.pm
@@ -313,25 +313,47 @@ sub getInterfacesFromIp {
my @interfaces;
my $interface;
+ my @adresses;
- while (my $line = <$handle>) {
+ my @lines = <$handle>;
+ # We parse the output in the reverse order
+ while (my $line = pop(@lines)) {
chomp $line;
- if ($line =~ /^\d+:\s+(\S+): .*(UP|DOWN)/) {
- push @interfaces, $interface if $interface;
- $interface = {
- DESCRIPTION => $1,
- STATUS => ucfirst(lc($2))
- };
+ if ($line =~ /^\d+:\s+(\S+): .*<(.+?)>(.*)/) {
+ my $status;
+ $interface->{DESCRIPTION} = $1;
+
+ if ($3 =~ /state DOWN /) {
+ $interface->{STATUS} = 'Down';
+ } else {
+ foreach (split(/,/, $2)) {
+ next unless /^(UP|DOWN)$/;
+ $interface->{STATUS} = ucfirst(lc($1));
+ }
+ }
+
+ if (@adresses) {
+ foreach my $if (@adresses) {
+ foreach (keys %$interface) {
+ $if->{$_} = $interface->{$_};
+ }
+ unshift @interfaces, $if;
+ }
+ } else {
+ unshift @interfaces, $interface;
+ }
+ $interface = {};
+ @adresses = ();
} elsif ($line =~ /link\/ether ($mac_address_pattern)/) {
$interface->{MACADDR} = $1;
} elsif ($line =~ /inet6 (\S+)\//) {
- $interface->{IPADDRESS6} = $1;
+ push @adresses, {IPADDRESS6 => $1}
} elsif ($line =~ /inet ($ip_address_pattern)\/(\d{1,3})/) {
- $interface->{IPADDRESS} = $1;
- $interface->{IPMASK} = getNetworkMask($2);
- $interface->{IPSUBNET} = getSubnetAddress(
- $interface->{IPADDRESS}, $interface->{IPMASK}
- );
+ my $ifAddr = {};
+ $ifAddr->{IPADDRESS} = $1;
+ $ifAddr->{IPMASK} = getNetworkMask($2);
+ $ifAddr->{IPSUBNET} = getSubnetAddress($interface->{IPADDRESS}, $interface->{IPMASK});
+ push @adresses, $ifAddr if $ifAddr->{IPADDRESS};
}
}
diff --git a/resources/linux/ip/ip_addr-3 b/resources/linux/ip/ip_addr-3
new file mode 100644
index 0000000..fc0f8c2
--- /dev/null
+++ b/resources/linux/ip/ip_addr-3
@@ -0,0 +1,12 @@
+1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
+ link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
+ inet 127.0.0.1/8 scope host lo
+ inet6 ::1/128 scope host
+ valid_lft forever preferred_lft forever
+2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
+ link/ether 00:50:56:8b:70:b7 brd ff:ff:ff:ff:ff:ff
+ inet 10.40.1.16/24 brd 10.40.1.255 scope global eth0
+ inet6 fe80::250:56ff:fe8b:70b7/64 scope link
+ valid_lft forever preferred_lft forever
+3: sit0: <NOARP> mtu 1480 qdisc noop
+ link/sit 0.0.0.0 brd 0.0.0.0
diff --git a/t/tools/linux.t b/t/tools/linux.t
index ffb4172..a57d8e5 100755
--- a/t/tools/linux.t
+++ b/t/tools/linux.t
@@ -674,23 +674,38 @@ my %ifconfig_tests = (
my %ipaddrshow_tests = (
'ip_addr-1' => [
{
- IPSUBNET => '127.0.0.0',
+ IPSUBNET => undef,
IPMASK => '255.0.0.0',
- STATUS => 'Up',
DESCRIPTION => 'lo',
- IPADDRESS6 => '::1',
+ STATUS => 'Up',
IPADDRESS => '127.0.0.1'
},
{
- IPSUBNET => '192.168.0.0',
+ DESCRIPTION => 'lo',
+ STATUS => 'Up',
+ IPADDRESS6 => '::1'
+ },
+ {
+ IPSUBNET => undef,
IPMASK => '255.255.255.0',
MACADDR => '00:23:18:91:db:8d',
- STATUS => 'Up',
DESCRIPTION => 'eth0',
- IPADDRESS6 => 'fe80::223:18ff:fe91:db8d',
+ STATUS => 'Up',
IPADDRESS => '192.168.0.10'
},
{
+ MACADDR => '00:23:18:91:db:8d',
+ DESCRIPTION => 'eth0',
+ STATUS => 'Up',
+ IPADDRESS6 => '2a01:e34:ef9c:64d0:223:18ff:fe91:db8d'
+ },
+ {
+ MACADDR => '00:23:18:91:db:8d',
+ DESCRIPTION => 'eth0',
+ STATUS => 'Up',
+ IPADDRESS6 => 'fe80::223:18ff:fe91:db8d'
+ },
+ {
STATUS => 'Up',
DESCRIPTION => 'tun0'
},
@@ -699,36 +714,104 @@ my %ipaddrshow_tests = (
DESCRIPTION => 'tun1'
},
{
- MACADDR => 'e8:39:df:3f:7d:ef',
STATUS => 'Down',
- DESCRIPTION => 'wlan0'
+ DESCRIPTION => 'wlan0',
+ MACADDR => 'e8:39:df:3f:7d:ef'
+ },
+ {
+ IPSUBNET => undef,
+ IPMASK => '255.255.255.0',
+ MACADDR => '8a:84:99:29:46:05',
+ DESCRIPTION => 'tap0',
+ STATUS => 'Up',
+ IPADDRESS => '172.28.218.101'
+ },
+ {
+ MACADDR => '8a:84:99:29:46:05',
+ DESCRIPTION => 'tap0',
+ STATUS => 'Up',
+ IPADDRESS6 => 'fe80::8884:99ff:fe29:4605'
}
],
'ip_addr-2' => [
{
- IPSUBNET => '127.0.0.0',
+ IPSUBNET => undef,
IPMASK => '255.0.0.0',
- STATUS => 'Up',
DESCRIPTION => 'lo',
- IPADDRESS6 => '::1',
+ STATUS => 'Up',
IPADDRESS => '127.0.0.1'
},
{
- IPSUBNET => '172.16.0.0',
- IPMASK => '255.255.128.0',
+ DESCRIPTION => 'lo',
+ STATUS => 'Up',
+ IPADDRESS6 => '::1'
+ },
+ {
+ IPSUBNET => undef,
+ IPMASK => '255.255.255.128',
MACADDR => '0f:0f:0f:0f:0f:0f',
+ DESCRIPTION => 'eth0',
STATUS => 'Up',
+ IPADDRESS => '11.11.11.11'
+ },
+ {
+ IPSUBNET => undef,
+ IPMASK => '255.255.128.0',
+ MACADDR => '0f:0f:0f:0f:0f:0f',
DESCRIPTION => 'eth0',
- IPADDRESS6 => 'fe80::201:29ff:fed1:feb4',
+ STATUS => 'Up',
IPADDRESS => '172.16.0.201'
},
{
+ MACADDR => '0f:0f:0f:0f:0f:0f',
+ DESCRIPTION => 'eth0',
+ STATUS => 'Up',
+ IPADDRESS6 => 'fe80::201:29ff:fed1:feb4'
+ },
+ {
STATUS => 'Down',
DESCRIPTION => 'eql'
},
{
STATUS => 'Down',
DESCRIPTION => 'sit0'
+ },
+ {
+ STATUS => 'Down',
+ DESCRIPTION => 'wlan0',
+ MACADDR => '0f:0f:0f:0f:0f:0f'
+ }
+ ],
+ # RHEL 5.6
+ 'ip_addr-3' => [
+ {
+ IPSUBNET => undef,
+ IPMASK => '255.0.0.0',
+ DESCRIPTION => 'lo',
+ STATUS => 'Up',
+ IPADDRESS => '127.0.0.1'
+ },
+ {
+ DESCRIPTION => 'lo',
+ STATUS => 'Up',
+ IPADDRESS6 => '::1'
+ },
+ {
+ IPSUBNET => undef,
+ IPMASK => '255.255.255.0',
+ MACADDR => '00:50:56:8b:70:b7',
+ DESCRIPTION => 'eth0',
+ STATUS => 'Up',
+ IPADDRESS => '10.40.1.16'
+ },
+ {
+ MACADDR => '00:50:56:8b:70:b7',
+ DESCRIPTION => 'eth0',
+ STATUS => 'Up',
+ IPADDRESS6 => 'fe80::250:56ff:fe8b:70b7'
+ },
+ {
+ DESCRIPTION => 'sit0'
}
]
);
================================================================
Commit: 1d1e743020e294d75fab874ba98f0f428520215a
https://github.com/fusinv/fusioninventory-agent/commit/1d1e743020e294d75fab874ba98f0f428520215a
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-04 (Wed, 04 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Linux.pm
M t/tools/linux.t
Log Message:
-----------
fix network address computation
diff --git a/lib/FusionInventory/Agent/Tools/Linux.pm b/lib/FusionInventory/Agent/Tools/Linux.pm
index 1ba3cd4..54558fc 100644
--- a/lib/FusionInventory/Agent/Tools/Linux.pm
+++ b/lib/FusionInventory/Agent/Tools/Linux.pm
@@ -347,13 +347,18 @@ sub getInterfacesFromIp {
} elsif ($line =~ /link\/ether ($mac_address_pattern)/) {
$interface->{MACADDR} = $1;
} elsif ($line =~ /inet6 (\S+)\//) {
- push @adresses, {IPADDRESS6 => $1}
+ push @adresses, {
+ IPADDRESS6 => $1
+ };
} elsif ($line =~ /inet ($ip_address_pattern)\/(\d{1,3})/) {
- my $ifAddr = {};
- $ifAddr->{IPADDRESS} = $1;
- $ifAddr->{IPMASK} = getNetworkMask($2);
- $ifAddr->{IPSUBNET} = getSubnetAddress($interface->{IPADDRESS}, $interface->{IPMASK});
- push @adresses, $ifAddr if $ifAddr->{IPADDRESS};
+ my $address = {
+ IPADDRESS => $1,
+ IPMASK => getNetworkMask($2),
+ };
+ $address->{IPSUBNET} = getSubnetAddress(
+ $address->{IPADDRESS}, $address->{IPMASK}
+ );
+ push @adresses, $address;
}
}
diff --git a/t/tools/linux.t b/t/tools/linux.t
index a57d8e5..4409ad2 100755
--- a/t/tools/linux.t
+++ b/t/tools/linux.t
@@ -674,7 +674,7 @@ my %ifconfig_tests = (
my %ipaddrshow_tests = (
'ip_addr-1' => [
{
- IPSUBNET => undef,
+ IPSUBNET => '127.0.0.0',
IPMASK => '255.0.0.0',
DESCRIPTION => 'lo',
STATUS => 'Up',
@@ -686,7 +686,7 @@ my %ipaddrshow_tests = (
IPADDRESS6 => '::1'
},
{
- IPSUBNET => undef,
+ IPSUBNET => '192.168.0.0',
IPMASK => '255.255.255.0',
MACADDR => '00:23:18:91:db:8d',
DESCRIPTION => 'eth0',
@@ -719,7 +719,7 @@ my %ipaddrshow_tests = (
MACADDR => 'e8:39:df:3f:7d:ef'
},
{
- IPSUBNET => undef,
+ IPSUBNET => '172.28.218.0',
IPMASK => '255.255.255.0',
MACADDR => '8a:84:99:29:46:05',
DESCRIPTION => 'tap0',
@@ -735,7 +735,7 @@ my %ipaddrshow_tests = (
],
'ip_addr-2' => [
{
- IPSUBNET => undef,
+ IPSUBNET => '127.0.0.0',
IPMASK => '255.0.0.0',
DESCRIPTION => 'lo',
STATUS => 'Up',
@@ -747,7 +747,7 @@ my %ipaddrshow_tests = (
IPADDRESS6 => '::1'
},
{
- IPSUBNET => undef,
+ IPSUBNET => '11.11.11.0',
IPMASK => '255.255.255.128',
MACADDR => '0f:0f:0f:0f:0f:0f',
DESCRIPTION => 'eth0',
@@ -755,7 +755,7 @@ my %ipaddrshow_tests = (
IPADDRESS => '11.11.11.11'
},
{
- IPSUBNET => undef,
+ IPSUBNET => '172.16.0.0',
IPMASK => '255.255.128.0',
MACADDR => '0f:0f:0f:0f:0f:0f',
DESCRIPTION => 'eth0',
@@ -785,7 +785,7 @@ my %ipaddrshow_tests = (
# RHEL 5.6
'ip_addr-3' => [
{
- IPSUBNET => undef,
+ IPSUBNET => '127.0.0.0',
IPMASK => '255.0.0.0',
DESCRIPTION => 'lo',
STATUS => 'Up',
@@ -797,7 +797,7 @@ my %ipaddrshow_tests = (
IPADDRESS6 => '::1'
},
{
- IPSUBNET => undef,
+ IPSUBNET => '10.40.1.0',
IPMASK => '255.255.255.0',
MACADDR => '00:50:56:8b:70:b7',
DESCRIPTION => 'eth0',
================================================================
Commit: e58c2a1714bab347870dc727e9edfa996403ca75
https://github.com/fusinv/fusioninventory-agent/commit/e58c2a1714bab347870dc727e9edfa996403ca75
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-04 (Wed, 04 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Linux.pm
M t/tools/linux.t
Log Message:
-----------
even better ip output parsing
- less confusion between interfaces and addresses
- recognize IPv4 address without mask, as for tun interfaces
- keep processing the file in normal order, as for all other parsing
functions
diff --git a/lib/FusionInventory/Agent/Tools/Linux.pm b/lib/FusionInventory/Agent/Tools/Linux.pm
index 54558fc..293a831 100644
--- a/lib/FusionInventory/Agent/Tools/Linux.pm
+++ b/lib/FusionInventory/Agent/Tools/Linux.pm
@@ -313,55 +313,62 @@ sub getInterfacesFromIp {
my @interfaces;
my $interface;
- my @adresses;
- my @lines = <$handle>;
- # We parse the output in the reverse order
- while (my $line = pop(@lines)) {
- chomp $line;
- if ($line =~ /^\d+:\s+(\S+): .*<(.+?)>(.*)/) {
- my $status;
- $interface->{DESCRIPTION} = $1;
+ while (my $line = <$handle>) {
+ if ($line =~ /^\d+:\s+(\S+): <(.+?)>(.*)/) {
+ # push previous interface if down, as there was no related address
+ push @interfaces, $interface
+ if $interface &&
+ $interface->{STATUS} &&
+ $interface->{STATUS} eq 'Down';
+
+ $interface = {
+ DESCRIPTION => $1
+ };
- if ($3 =~ /state DOWN /) {
+ my $flags = $2;
+ my $remaining = $3;
+
+ if ($remaining =~ /state DOWN /) {
$interface->{STATUS} = 'Down';
} else {
- foreach (split(/,/, $2)) {
- next unless /^(UP|DOWN)$/;
- $interface->{STATUS} = ucfirst(lc($1));
- }
- }
-
- if (@adresses) {
- foreach my $if (@adresses) {
- foreach (keys %$interface) {
- $if->{$_} = $interface->{$_};
- }
- unshift @interfaces, $if;
+ foreach my $flag (split(/,/, $flags)) {
+ next unless $flag eq 'UP' || $flag eq 'DOWN';
+ $interface->{STATUS} = ucfirst(lc($flag));
}
- } else {
- unshift @interfaces, $interface;
}
- $interface = {};
- @adresses = ();
} elsif ($line =~ /link\/ether ($mac_address_pattern)/) {
$interface->{MACADDR} = $1;
} elsif ($line =~ /inet6 (\S+)\//) {
- push @adresses, {
- IPADDRESS6 => $1
+ push @interfaces, {
+ IPADDRESS6 => $1,
+ STATUS => $interface->{STATUS},
+ DESCRIPTION => $interface->{DESCRIPTION},
+ MACADDR => $interface->{MACADDR}
};
- } elsif ($line =~ /inet ($ip_address_pattern)\/(\d{1,3})/) {
- my $address = {
- IPADDRESS => $1,
- IPMASK => getNetworkMask($2),
+ } elsif ($line =~ /inet ($ip_address_pattern)(?:\/(\d{1,3}))?/) {
+ my $address = $1;
+ my $mask = $2 ? getNetworkMask($2) : undef;
+ my $subnet = $address && $mask ?
+ getSubnetAddress($address, $mask) : undef;
+
+ push @interfaces, {
+ IPADDRESS => $address,
+ IPMASK => $mask,
+ IPSUBNET => $subnet,
+ STATUS => $interface->{STATUS},
+ DESCRIPTION => $interface->{DESCRIPTION},
+ MACADDR => $interface->{MACADDR}
};
- $address->{IPSUBNET} = getSubnetAddress(
- $address->{IPADDRESS}, $address->{IPMASK}
- );
- push @adresses, $address;
}
}
+ # push last interface if down, as there was no related address
+ push @interfaces, $interface
+ if $interface &&
+ $interface->{STATUS} &&
+ $interface->{STATUS} eq 'Down';
+
return @interfaces;
}
diff --git a/t/tools/linux.t b/t/tools/linux.t
index 4409ad2..7949408 100755
--- a/t/tools/linux.t
+++ b/t/tools/linux.t
@@ -678,12 +678,14 @@ my %ipaddrshow_tests = (
IPMASK => '255.0.0.0',
DESCRIPTION => 'lo',
STATUS => 'Up',
- IPADDRESS => '127.0.0.1'
+ IPADDRESS => '127.0.0.1',
+ MACADDR => undef
},
{
DESCRIPTION => 'lo',
STATUS => 'Up',
- IPADDRESS6 => '::1'
+ IPADDRESS6 => '::1',
+ MACADDR => undef
},
{
IPSUBNET => '192.168.0.0',
@@ -707,11 +709,19 @@ my %ipaddrshow_tests = (
},
{
STATUS => 'Up',
- DESCRIPTION => 'tun0'
+ DESCRIPTION => 'tun0',
+ IPADDRESS => '192.168.41.6',
+ IPSUBNET => undef,
+ IPMASK => undef,
+ MACADDR => undef
},
{
STATUS => 'Up',
- DESCRIPTION => 'tun1'
+ DESCRIPTION => 'tun1',
+ IPADDRESS => '192.168.222.14',
+ IPSUBNET => undef,
+ IPMASK => undef,
+ MACADDR => undef
},
{
STATUS => 'Down',
@@ -739,12 +749,14 @@ my %ipaddrshow_tests = (
IPMASK => '255.0.0.0',
DESCRIPTION => 'lo',
STATUS => 'Up',
- IPADDRESS => '127.0.0.1'
+ IPADDRESS => '127.0.0.1',
+ MACADDR => undef
},
{
DESCRIPTION => 'lo',
STATUS => 'Up',
- IPADDRESS6 => '::1'
+ IPADDRESS6 => '::1',
+ MACADDR => undef
},
{
IPSUBNET => '11.11.11.0',
@@ -770,11 +782,11 @@ my %ipaddrshow_tests = (
},
{
STATUS => 'Down',
- DESCRIPTION => 'eql'
+ DESCRIPTION => 'eql',
},
{
STATUS => 'Down',
- DESCRIPTION => 'sit0'
+ DESCRIPTION => 'sit0',
},
{
STATUS => 'Down',
@@ -789,12 +801,14 @@ my %ipaddrshow_tests = (
IPMASK => '255.0.0.0',
DESCRIPTION => 'lo',
STATUS => 'Up',
- IPADDRESS => '127.0.0.1'
+ IPADDRESS => '127.0.0.1',
+ MACADDR => undef
},
{
DESCRIPTION => 'lo',
STATUS => 'Up',
- IPADDRESS6 => '::1'
+ IPADDRESS6 => '::1',
+ MACADDR => undef
},
{
IPSUBNET => '10.40.1.0',
@@ -802,7 +816,7 @@ my %ipaddrshow_tests = (
MACADDR => '00:50:56:8b:70:b7',
DESCRIPTION => 'eth0',
STATUS => 'Up',
- IPADDRESS => '10.40.1.16'
+ IPADDRESS => '10.40.1.16',
},
{
MACADDR => '00:50:56:8b:70:b7',
@@ -810,9 +824,6 @@ my %ipaddrshow_tests = (
STATUS => 'Up',
IPADDRESS6 => 'fe80::250:56ff:fe8b:70b7'
},
- {
- DESCRIPTION => 'sit0'
- }
]
);
================================================================
Commit: c631e6e1b23651125e9bc579a97f729db23aa800
https://github.com/fusinv/fusioninventory-agent/commit/c631e6e1b23651125e9bc579a97f729db23aa800
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-05 (Thu, 05 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VirtualBox.pm
Log Message:
-----------
fix a misassumption regarding the VM owner
there is no reason to believe the one who run the agent
is the owner of the virtualmachine
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VirtualBox.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VirtualBox.pm
index 6fcaf90..ccbbccf 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VirtualBox.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VirtualBox.pm
@@ -28,12 +28,9 @@ sub doInventory {
my $command = "VBoxManage -nologo list --long vms";
- my $owner = getpwuid($REAL_USER_ID)->name();
-
foreach my $machine (_parseVBoxManage(
logger => $logger, command => $command
)) {
- $machine->{OWNER} = $owner;
$inventory->addEntry(
section => 'VIRTUALMACHINES', entry => $machine
);
================================================================
Commit: 28575092ea8299129c7d402a7aba5a5f22df2e75
https://github.com/fusinv/fusioninventory-agent/commit/28575092ea8299129c7d402a7aba5a5f22df2e75
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-05 (Thu, 05 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Linux.pm
M t/tools/linux.t
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Tools/Linux.pm b/lib/FusionInventory/Agent/Tools/Linux.pm
index 1ba3cd4..293a831 100644
--- a/lib/FusionInventory/Agent/Tools/Linux.pm
+++ b/lib/FusionInventory/Agent/Tools/Linux.pm
@@ -313,50 +313,62 @@ sub getInterfacesFromIp {
my @interfaces;
my $interface;
- my @adresses;
- my @lines = <$handle>;
- # We parse the output in the reverse order
- while (my $line = pop(@lines)) {
- chomp $line;
- if ($line =~ /^\d+:\s+(\S+): .*<(.+?)>(.*)/) {
- my $status;
- $interface->{DESCRIPTION} = $1;
+ while (my $line = <$handle>) {
+ if ($line =~ /^\d+:\s+(\S+): <(.+?)>(.*)/) {
+ # push previous interface if down, as there was no related address
+ push @interfaces, $interface
+ if $interface &&
+ $interface->{STATUS} &&
+ $interface->{STATUS} eq 'Down';
+
+ $interface = {
+ DESCRIPTION => $1
+ };
+
+ my $flags = $2;
+ my $remaining = $3;
- if ($3 =~ /state DOWN /) {
+ if ($remaining =~ /state DOWN /) {
$interface->{STATUS} = 'Down';
} else {
- foreach (split(/,/, $2)) {
- next unless /^(UP|DOWN)$/;
- $interface->{STATUS} = ucfirst(lc($1));
+ foreach my $flag (split(/,/, $flags)) {
+ next unless $flag eq 'UP' || $flag eq 'DOWN';
+ $interface->{STATUS} = ucfirst(lc($flag));
}
}
-
- if (@adresses) {
- foreach my $if (@adresses) {
- foreach (keys %$interface) {
- $if->{$_} = $interface->{$_};
- }
- unshift @interfaces, $if;
- }
- } else {
- unshift @interfaces, $interface;
- }
- $interface = {};
- @adresses = ();
} elsif ($line =~ /link\/ether ($mac_address_pattern)/) {
$interface->{MACADDR} = $1;
} elsif ($line =~ /inet6 (\S+)\//) {
- push @adresses, {IPADDRESS6 => $1}
- } elsif ($line =~ /inet ($ip_address_pattern)\/(\d{1,3})/) {
- my $ifAddr = {};
- $ifAddr->{IPADDRESS} = $1;
- $ifAddr->{IPMASK} = getNetworkMask($2);
- $ifAddr->{IPSUBNET} = getSubnetAddress($interface->{IPADDRESS}, $interface->{IPMASK});
- push @adresses, $ifAddr if $ifAddr->{IPADDRESS};
+ push @interfaces, {
+ IPADDRESS6 => $1,
+ STATUS => $interface->{STATUS},
+ DESCRIPTION => $interface->{DESCRIPTION},
+ MACADDR => $interface->{MACADDR}
+ };
+ } elsif ($line =~ /inet ($ip_address_pattern)(?:\/(\d{1,3}))?/) {
+ my $address = $1;
+ my $mask = $2 ? getNetworkMask($2) : undef;
+ my $subnet = $address && $mask ?
+ getSubnetAddress($address, $mask) : undef;
+
+ push @interfaces, {
+ IPADDRESS => $address,
+ IPMASK => $mask,
+ IPSUBNET => $subnet,
+ STATUS => $interface->{STATUS},
+ DESCRIPTION => $interface->{DESCRIPTION},
+ MACADDR => $interface->{MACADDR}
+ };
}
}
+ # push last interface if down, as there was no related address
+ push @interfaces, $interface
+ if $interface &&
+ $interface->{STATUS} &&
+ $interface->{STATUS} eq 'Down';
+
return @interfaces;
}
diff --git a/t/tools/linux.t b/t/tools/linux.t
index a57d8e5..7949408 100755
--- a/t/tools/linux.t
+++ b/t/tools/linux.t
@@ -674,19 +674,21 @@ my %ifconfig_tests = (
my %ipaddrshow_tests = (
'ip_addr-1' => [
{
- IPSUBNET => undef,
+ IPSUBNET => '127.0.0.0',
IPMASK => '255.0.0.0',
DESCRIPTION => 'lo',
STATUS => 'Up',
- IPADDRESS => '127.0.0.1'
+ IPADDRESS => '127.0.0.1',
+ MACADDR => undef
},
{
DESCRIPTION => 'lo',
STATUS => 'Up',
- IPADDRESS6 => '::1'
+ IPADDRESS6 => '::1',
+ MACADDR => undef
},
{
- IPSUBNET => undef,
+ IPSUBNET => '192.168.0.0',
IPMASK => '255.255.255.0',
MACADDR => '00:23:18:91:db:8d',
DESCRIPTION => 'eth0',
@@ -707,11 +709,19 @@ my %ipaddrshow_tests = (
},
{
STATUS => 'Up',
- DESCRIPTION => 'tun0'
+ DESCRIPTION => 'tun0',
+ IPADDRESS => '192.168.41.6',
+ IPSUBNET => undef,
+ IPMASK => undef,
+ MACADDR => undef
},
{
STATUS => 'Up',
- DESCRIPTION => 'tun1'
+ DESCRIPTION => 'tun1',
+ IPADDRESS => '192.168.222.14',
+ IPSUBNET => undef,
+ IPMASK => undef,
+ MACADDR => undef
},
{
STATUS => 'Down',
@@ -719,7 +729,7 @@ my %ipaddrshow_tests = (
MACADDR => 'e8:39:df:3f:7d:ef'
},
{
- IPSUBNET => undef,
+ IPSUBNET => '172.28.218.0',
IPMASK => '255.255.255.0',
MACADDR => '8a:84:99:29:46:05',
DESCRIPTION => 'tap0',
@@ -735,19 +745,21 @@ my %ipaddrshow_tests = (
],
'ip_addr-2' => [
{
- IPSUBNET => undef,
+ IPSUBNET => '127.0.0.0',
IPMASK => '255.0.0.0',
DESCRIPTION => 'lo',
STATUS => 'Up',
- IPADDRESS => '127.0.0.1'
+ IPADDRESS => '127.0.0.1',
+ MACADDR => undef
},
{
DESCRIPTION => 'lo',
STATUS => 'Up',
- IPADDRESS6 => '::1'
+ IPADDRESS6 => '::1',
+ MACADDR => undef
},
{
- IPSUBNET => undef,
+ IPSUBNET => '11.11.11.0',
IPMASK => '255.255.255.128',
MACADDR => '0f:0f:0f:0f:0f:0f',
DESCRIPTION => 'eth0',
@@ -755,7 +767,7 @@ my %ipaddrshow_tests = (
IPADDRESS => '11.11.11.11'
},
{
- IPSUBNET => undef,
+ IPSUBNET => '172.16.0.0',
IPMASK => '255.255.128.0',
MACADDR => '0f:0f:0f:0f:0f:0f',
DESCRIPTION => 'eth0',
@@ -770,11 +782,11 @@ my %ipaddrshow_tests = (
},
{
STATUS => 'Down',
- DESCRIPTION => 'eql'
+ DESCRIPTION => 'eql',
},
{
STATUS => 'Down',
- DESCRIPTION => 'sit0'
+ DESCRIPTION => 'sit0',
},
{
STATUS => 'Down',
@@ -785,24 +797,26 @@ my %ipaddrshow_tests = (
# RHEL 5.6
'ip_addr-3' => [
{
- IPSUBNET => undef,
+ IPSUBNET => '127.0.0.0',
IPMASK => '255.0.0.0',
DESCRIPTION => 'lo',
STATUS => 'Up',
- IPADDRESS => '127.0.0.1'
+ IPADDRESS => '127.0.0.1',
+ MACADDR => undef
},
{
DESCRIPTION => 'lo',
STATUS => 'Up',
- IPADDRESS6 => '::1'
+ IPADDRESS6 => '::1',
+ MACADDR => undef
},
{
- IPSUBNET => undef,
+ IPSUBNET => '10.40.1.0',
IPMASK => '255.255.255.0',
MACADDR => '00:50:56:8b:70:b7',
DESCRIPTION => 'eth0',
STATUS => 'Up',
- IPADDRESS => '10.40.1.16'
+ IPADDRESS => '10.40.1.16',
},
{
MACADDR => '00:50:56:8b:70:b7',
@@ -810,9 +824,6 @@ my %ipaddrshow_tests = (
STATUS => 'Up',
IPADDRESS6 => 'fe80::250:56ff:fe8b:70b7'
},
- {
- DESCRIPTION => 'sit0'
- }
]
);
================================================================
Commit: 8927940fab52a78f4882c0ffefe720b7b8395131
https://github.com/fusinv/fusioninventory-agent/commit/8927940fab52a78f4882c0ffefe720b7b8395131
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-05 (Thu, 05 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Linux.pm
M t/tools/linux.t
Log Message:
-----------
parsing improvements
- check interface status when second line is reached, not when new
interface is found
- change condition to report all interfaces, even when status is unknown
diff --git a/lib/FusionInventory/Agent/Tools/Linux.pm b/lib/FusionInventory/Agent/Tools/Linux.pm
index 293a831..1d93f1e 100644
--- a/lib/FusionInventory/Agent/Tools/Linux.pm
+++ b/lib/FusionInventory/Agent/Tools/Linux.pm
@@ -316,11 +316,6 @@ sub getInterfacesFromIp {
while (my $line = <$handle>) {
if ($line =~ /^\d+:\s+(\S+): <(.+?)>(.*)/) {
- # push previous interface if down, as there was no related address
- push @interfaces, $interface
- if $interface &&
- $interface->{STATUS} &&
- $interface->{STATUS} eq 'Down';
$interface = {
DESCRIPTION => $1
@@ -337,8 +332,12 @@ sub getInterfacesFromIp {
$interface->{STATUS} = ucfirst(lc($flag));
}
}
- } elsif ($line =~ /link\/ether ($mac_address_pattern)/) {
+ } elsif ($line =~ /link\/\S+ ($mac_address_pattern)?/) {
$interface->{MACADDR} = $1;
+
+ # if courrent interface is not up, there won't be any address lines
+ push @interfaces, $interface
+ unless $interface->{STATUS} && $interface->{STATUS} eq 'Up';
} elsif ($line =~ /inet6 (\S+)\//) {
push @interfaces, {
IPADDRESS6 => $1,
@@ -363,12 +362,6 @@ sub getInterfacesFromIp {
}
}
- # push last interface if down, as there was no related address
- push @interfaces, $interface
- if $interface &&
- $interface->{STATUS} &&
- $interface->{STATUS} eq 'Down';
-
return @interfaces;
}
diff --git a/t/tools/linux.t b/t/tools/linux.t
index 7949408..0446db4 100755
--- a/t/tools/linux.t
+++ b/t/tools/linux.t
@@ -679,13 +679,13 @@ my %ipaddrshow_tests = (
DESCRIPTION => 'lo',
STATUS => 'Up',
IPADDRESS => '127.0.0.1',
- MACADDR => undef
+ MACADDR => '00:00:00:00:00:00',
},
{
DESCRIPTION => 'lo',
STATUS => 'Up',
IPADDRESS6 => '::1',
- MACADDR => undef
+ MACADDR => '00:00:00:00:00:00',
},
{
IPSUBNET => '192.168.0.0',
@@ -750,13 +750,13 @@ my %ipaddrshow_tests = (
DESCRIPTION => 'lo',
STATUS => 'Up',
IPADDRESS => '127.0.0.1',
- MACADDR => undef
+ MACADDR => '00:00:00:00:00:00',
},
{
DESCRIPTION => 'lo',
STATUS => 'Up',
IPADDRESS6 => '::1',
- MACADDR => undef
+ MACADDR => '00:00:00:00:00:00',
},
{
IPSUBNET => '11.11.11.0',
@@ -783,10 +783,12 @@ my %ipaddrshow_tests = (
{
STATUS => 'Down',
DESCRIPTION => 'eql',
+ MACADDR => undef
},
{
STATUS => 'Down',
DESCRIPTION => 'sit0',
+ MACADDR => undef
},
{
STATUS => 'Down',
@@ -802,13 +804,13 @@ my %ipaddrshow_tests = (
DESCRIPTION => 'lo',
STATUS => 'Up',
IPADDRESS => '127.0.0.1',
- MACADDR => undef
+ MACADDR => '00:00:00:00:00:00',
},
{
DESCRIPTION => 'lo',
STATUS => 'Up',
IPADDRESS6 => '::1',
- MACADDR => undef
+ MACADDR => '00:00:00:00:00:00',
},
{
IPSUBNET => '10.40.1.0',
@@ -824,6 +826,10 @@ my %ipaddrshow_tests = (
STATUS => 'Up',
IPADDRESS6 => 'fe80::250:56ff:fe8b:70b7'
},
+ {
+ DESCRIPTION => 'sit0',
+ MACADDR => undef
+ },
]
);
================================================================
Commit: 0c4292b7b3391c976d15fe2dc0b23a27e50daf6f
https://github.com/fusinv/fusioninventory-agent/commit/0c4292b7b3391c976d15fe2dc0b23a27e50daf6f
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-05 (Thu, 05 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VirtualBox.pm
Log Message:
-----------
Merge remote-tracking branch 'forge/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VirtualBox.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VirtualBox.pm
index 6fcaf90..ccbbccf 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VirtualBox.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VirtualBox.pm
@@ -28,12 +28,9 @@ sub doInventory {
my $command = "VBoxManage -nologo list --long vms";
- my $owner = getpwuid($REAL_USER_ID)->name();
-
foreach my $machine (_parseVBoxManage(
logger => $logger, command => $command
)) {
- $machine->{OWNER} = $owner;
$inventory->addEntry(
section => 'VIRTUALMACHINES', entry => $machine
);
================================================================
Commit: f923a9b949f1c39140e95ef23fc5ab6d7d92dab5
https://github.com/fusinv/fusioninventory-agent/commit/f923a9b949f1c39140e95ef23fc5ab6d7d92dab5
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-05 (Thu, 05 Apr 2012)
Changed paths:
M resources/generic/lspci/dell-xt2
M t/tools/generic.t
Log Message:
-----------
update test sample, using a single -v flag
diff --git a/resources/generic/lspci/dell-xt2 b/resources/generic/lspci/dell-xt2
index 9171e9d..0b43c66 100644
--- a/resources/generic/lspci/dell-xt2
+++ b/resources/generic/lspci/dell-xt2
@@ -1,284 +1,241 @@
00:00.0 Host bridge [0600]: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub [8086:2a40] (rev 07)
Subsystem: Dell Device [1028:0252]
- Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
- Latency: 0
- Capabilities: <access denied>
+ Flags: bus master, fast devsel, latency 0
+ Capabilities: [e0] Vendor Specific Information: Len=0a <?>
Kernel driver in use: agpgart-intel
00:02.0 VGA compatible controller [0300]: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller [8086:2a42] (rev 07) (prog-if 00 [VGA controller])
Subsystem: Dell Device [1028:0252]
- Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0
- Interrupt: pin A routed to IRQ 28
- Region 0: Memory at f6c00000 (64-bit, non-prefetchable) [size=4M]
- Region 2: Memory at e0000000 (64-bit, prefetchable) [size=256M]
- Region 4: I/O ports at ef98 [size=8]
+ Flags: bus master, fast devsel, latency 0, IRQ 43
+ Memory at f6c00000 (64-bit, non-prefetchable) [size=4M]
+ Memory at e0000000 (64-bit, prefetchable) [size=256M]
+ I/O ports at ef98 [size=8]
Expansion ROM at <unassigned> [disabled]
- Capabilities: <access denied>
+ Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
+ Capabilities: [d0] Power Management version 3
Kernel driver in use: i915
Kernel modules: i915
00:02.1 Display controller [0380]: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller [8086:2a43] (rev 07)
Subsystem: Dell Device [1028:0252]
- Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0
- Region 0: Memory at f6b00000 (64-bit, non-prefetchable) [size=1M]
- Capabilities: <access denied>
+ Flags: bus master, fast devsel, latency 0
+ Memory at f6b00000 (64-bit, non-prefetchable) [size=1M]
+ Capabilities: [d0] Power Management version 3
00:19.0 Ethernet controller [0200]: Intel Corporation 82567LM Gigabit Network Connection [8086:10f5] (rev 03)
Subsystem: Dell Device [1028:0252]
- Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0
- Interrupt: pin A routed to IRQ 29
- Region 0: Memory at f6ae0000 (32-bit, non-prefetchable) [size=128K]
- Region 1: Memory at f6adb000 (32-bit, non-prefetchable) [size=4K]
- Region 2: I/O ports at efe0 [size=32]
- Capabilities: <access denied>
+ Flags: bus master, fast devsel, latency 0, IRQ 45
+ Memory at f6ae0000 (32-bit, non-prefetchable) [size=128K]
+ Memory at f6adb000 (32-bit, non-prefetchable) [size=4K]
+ I/O ports at efe0 [size=32]
+ Capabilities: [c8] Power Management version 2
+ Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
+ Capabilities: [e0] PCI Advanced Features
Kernel driver in use: e1000e
Kernel modules: e1000e
-00:1a.0 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 [8086:2937] (rev 03) (prog-if 00 [UHCI])
+00:1a.0 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 [8086:2937] (rev 03) (prog-if 00 [UHCI])
Subsystem: Dell Device [1028:0252]
- Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0
- Interrupt: pin A routed to IRQ 20
- Region 4: I/O ports at 6f60 [size=32]
- Capabilities: <access denied>
+ Flags: bus master, medium devsel, latency 0, IRQ 20
+ I/O ports at 6f60 [size=32]
+ Capabilities: [50] PCI Advanced Features
Kernel driver in use: uhci_hcd
Kernel modules: uhci-hcd
-00:1a.1 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 [8086:2938] (rev 03) (prog-if 00 [UHCI])
+00:1a.1 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 [8086:2938] (rev 03) (prog-if 00 [UHCI])
Subsystem: Dell Device [1028:0252]
- Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0
- Interrupt: pin B routed to IRQ 21
- Region 4: I/O ports at 6f80 [size=32]
- Capabilities: <access denied>
+ Flags: bus master, medium devsel, latency 0, IRQ 21
+ I/O ports at 6f80 [size=32]
+ Capabilities: [50] PCI Advanced Features
Kernel driver in use: uhci_hcd
Kernel modules: uhci-hcd
-00:1a.2 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 [8086:2939] (rev 03) (prog-if 00 [UHCI])
+00:1a.2 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 [8086:2939] (rev 03) (prog-if 00 [UHCI])
Subsystem: Dell Device [1028:0252]
- Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0
- Interrupt: pin C routed to IRQ 22
- Region 4: I/O ports at 6fa0 [size=32]
- Capabilities: <access denied>
+ Flags: bus master, medium devsel, latency 0, IRQ 22
+ I/O ports at 6fa0 [size=32]
+ Capabilities: [50] PCI Advanced Features
Kernel driver in use: uhci_hcd
Kernel modules: uhci-hcd
-00:1a.7 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 [8086:293c] (rev 03) (prog-if 20 [EHCI])
+00:1a.7 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 [8086:293c] (rev 03) (prog-if 20 [EHCI])
Subsystem: Dell Device [1028:0252]
- Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0
- Interrupt: pin C routed to IRQ 22
- Region 0: Memory at fed1c400 (32-bit, non-prefetchable) [size=1K]
- Capabilities: <access denied>
+ Flags: bus master, medium devsel, latency 0, IRQ 22
+ Memory at fed1c400 (32-bit, non-prefetchable) [size=1K]
+ Capabilities: [50] Power Management version 2
+ Capabilities: [58] Debug port: BAR=1 offset=00a0
+ Capabilities: [98] PCI Advanced Features
Kernel driver in use: ehci_hcd
Kernel modules: ehci-hcd
00:1b.0 Audio device [0403]: Intel Corporation 82801I (ICH9 Family) HD Audio Controller [8086:293e] (rev 03)
Subsystem: Dell Device [1028:0252]
- Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0, Cache Line Size: 64 bytes
- Interrupt: pin A routed to IRQ 30
- Region 0: Memory at f6adc000 (64-bit, non-prefetchable) [size=16K]
- Capabilities: <access denied>
- Kernel driver in use: HDA Intel
+ Flags: bus master, fast devsel, latency 0, IRQ 46
+ Memory at f6adc000 (64-bit, non-prefetchable) [size=16K]
+ Capabilities: [50] Power Management version 2
+ Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
+ Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
+ Capabilities: [100] Virtual Channel
+ Capabilities: [130] Root Complex Link
+ Kernel driver in use: snd_hda_intel
Kernel modules: snd-hda-intel
00:1c.0 PCI bridge [0604]: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 [8086:2940] (rev 03) (prog-if 00 [Normal decode])
- Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0, Cache Line Size: 64 bytes
+ Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=0b, subordinate=0b, sec-latency=0
- I/O behind bridge: 00002000-00002fff
- Memory behind bridge: c4000000-c41fffff
- Prefetchable memory behind bridge: 00000000c4200000-00000000c43fffff
- Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
- BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
- Capabilities: <access denied>
+ I/O behind bridge: 00004000-00004fff
+ Memory behind bridge: c4200000-c43fffff
+ Prefetchable memory behind bridge: 00000000c4400000-00000000c45fffff
+ Capabilities: [40] Express Root Port (Slot+), MSI 00
+ Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
+ Capabilities: [90] Subsystem: Dell Device [1028:0252]
+ Capabilities: [a0] Power Management version 2
+ Capabilities: [100] Virtual Channel
+ Capabilities: [180] Root Complex Link
Kernel driver in use: pcieport
Kernel modules: shpchp
00:1c.1 PCI bridge [0604]: Intel Corporation 82801I (ICH9 Family) PCI Express Port 2 [8086:2942] (rev 03) (prog-if 00 [Normal decode])
- Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0, Cache Line Size: 64 bytes
+ Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=0c, subordinate=0c, sec-latency=0
I/O behind bridge: 00003000-00003fff
Memory behind bridge: f6900000-f69fffff
- Prefetchable memory behind bridge: 00000000c4400000-00000000c45fffff
- Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
- BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
- Capabilities: <access denied>
+ Prefetchable memory behind bridge: 00000000c4000000-00000000c41fffff
+ Capabilities: [40] Express Root Port (Slot+), MSI 00
+ Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
+ Capabilities: [90] Subsystem: Dell Device [1028:0252]
+ Capabilities: [a0] Power Management version 2
+ Capabilities: [100] Virtual Channel
+ Capabilities: [180] Root Complex Link
Kernel driver in use: pcieport
Kernel modules: shpchp
00:1c.3 PCI bridge [0604]: Intel Corporation 82801I (ICH9 Family) PCI Express Port 4 [8086:2946] (rev 03) (prog-if 00 [Normal decode])
- Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0, Cache Line Size: 64 bytes
+ Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=0d, subordinate=0e, sec-latency=0
I/O behind bridge: 0000d000-0000dfff
Memory behind bridge: f6600000-f68fffff
Prefetchable memory behind bridge: 00000000f0000000-00000000f01fffff
- Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
- BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
- Capabilities: <access denied>
+ Capabilities: [40] Express Root Port (Slot+), MSI 00
+ Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
+ Capabilities: [90] Subsystem: Dell Device [1028:0252]
+ Capabilities: [a0] Power Management version 2
+ Capabilities: [100] Virtual Channel
+ Capabilities: [180] Root Complex Link
Kernel driver in use: pcieport
Kernel modules: shpchp
-00:1d.0 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 [8086:2934] (rev 03) (prog-if 00 [UHCI])
+00:1d.0 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 [8086:2934] (rev 03) (prog-if 00 [UHCI])
Subsystem: Dell Device [1028:0252]
- Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0
- Interrupt: pin A routed to IRQ 20
- Region 4: I/O ports at 6f00 [size=32]
- Capabilities: <access denied>
+ Flags: bus master, medium devsel, latency 0, IRQ 20
+ I/O ports at 6f00 [size=32]
+ Capabilities: [50] PCI Advanced Features
Kernel driver in use: uhci_hcd
Kernel modules: uhci-hcd
-00:1d.1 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 [8086:2935] (rev 03) (prog-if 00 [UHCI])
+00:1d.1 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 [8086:2935] (rev 03) (prog-if 00 [UHCI])
Subsystem: Dell Device [1028:0252]
- Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0
- Interrupt: pin B routed to IRQ 21
- Region 4: I/O ports at 6f20 [size=32]
- Capabilities: <access denied>
+ Flags: bus master, medium devsel, latency 0, IRQ 21
+ I/O ports at 6f20 [size=32]
+ Capabilities: [50] PCI Advanced Features
Kernel driver in use: uhci_hcd
Kernel modules: uhci-hcd
-00:1d.2 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 [8086:2936] (rev 03) (prog-if 00 [UHCI])
+00:1d.2 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 [8086:2936] (rev 03) (prog-if 00 [UHCI])
Subsystem: Dell Device [1028:0252]
- Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0
- Interrupt: pin C routed to IRQ 22
- Region 4: I/O ports at 6f40 [size=32]
- Capabilities: <access denied>
+ Flags: bus master, medium devsel, latency 0, IRQ 22
+ I/O ports at 6f40 [size=32]
+ Capabilities: [50] PCI Advanced Features
Kernel driver in use: uhci_hcd
Kernel modules: uhci-hcd
-00:1d.7 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 [8086:293a] (rev 03) (prog-if 20 [EHCI])
+00:1d.7 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 [8086:293a] (rev 03) (prog-if 20 [EHCI])
Subsystem: Dell Device [1028:0252]
- Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0
- Interrupt: pin A routed to IRQ 20
- Region 0: Memory at fed1c000 (32-bit, non-prefetchable) [size=1K]
- Capabilities: <access denied>
+ Flags: bus master, medium devsel, latency 0, IRQ 20
+ Memory at fed1c000 (32-bit, non-prefetchable) [size=1K]
+ Capabilities: [50] Power Management version 2
+ Capabilities: [58] Debug port: BAR=1 offset=00a0
+ Capabilities: [98] PCI Advanced Features
Kernel driver in use: ehci_hcd
Kernel modules: ehci-hcd
00:1e.0 PCI bridge [0604]: Intel Corporation 82801 Mobile PCI Bridge [8086:2448] (rev 93) (prog-if 01 [Subtractive decode])
- Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0
- Bus: primary=00, secondary=02, subordinate=06, sec-latency=32
- I/O behind bridge: 00004000-00004fff
+ Flags: bus master, fast devsel, latency 0
+ Bus: primary=00, secondary=02, subordinate=0a, sec-latency=32
+ I/O behind bridge: 00002000-00002fff
Memory behind bridge: f6500000-f65fffff
Prefetchable memory behind bridge: 00000000c0000000-00000000c3ffffff
- Secondary status: 66MHz- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
- BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
- Capabilities: <access denied>
+ Capabilities: [50] Subsystem: Dell Device [1028:0252]
00:1f.0 ISA bridge [0601]: Intel Corporation ICH9M-E LPC Interface Controller [8086:2917] (rev 03)
Subsystem: Dell Device [1028:0252]
- Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0
- Capabilities: <access denied>
+ Flags: bus master, medium devsel, latency 0
+ Capabilities: [e0] Vendor Specific Information: Len=0c <?>
Kernel modules: iTCO_wdt
-00:1f.2 RAID bus controller [0104]: Intel Corporation Mobile 82801 SATA RAID Controller [8086:282a] (rev 03)
- Subsystem: Dell Device [1028:0252]
- Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
- Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0
- Interrupt: pin D routed to IRQ 27
- Region 0: I/O ports at 6e70 [size=8]
- Region 1: I/O ports at 6e78 [size=4]
- Region 2: I/O ports at 6e80 [size=8]
- Region 3: I/O ports at 6e88 [size=4]
- Region 4: I/O ports at 6ea0 [size=32]
- Region 5: Memory at fed1c800 (32-bit, non-prefetchable) [size=2K]
- Capabilities: <access denied>
+00:1f.2 RAID bus controller [0104]: Intel Corporation 82801 Mobile SATA Controller [RAID mode] [8086:282a] (rev 03)
+ Subsystem: Dell Device [1028:0252]
+ Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 44
+ I/O ports at 6e70 [size=8]
+ I/O ports at 6e78 [size=4]
+ I/O ports at 6e80 [size=8]
+ I/O ports at 6e88 [size=4]
+ I/O ports at 6ea0 [size=32]
+ Memory at fed1c800 (32-bit, non-prefetchable) [size=2K]
+ Capabilities: [80] MSI: Enable+ Count=1/16 Maskable- 64bit-
+ Capabilities: [70] Power Management version 3
+ Capabilities: [a8] SATA HBA v1.0
+ Capabilities: [b0] PCI Advanced Features
Kernel driver in use: ahci
Kernel modules: ahci
00:1f.3 SMBus [0c05]: Intel Corporation 82801I (ICH9 Family) SMBus Controller [8086:2930] (rev 03)
Subsystem: Dell Device [1028:0252]
- Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Interrupt: pin B routed to IRQ 19
- Region 0: Memory at f6adaf00 (64-bit, non-prefetchable) [size=256]
- Region 4: I/O ports at 1100 [size=32]
+ Flags: medium devsel, IRQ 19
+ Memory at f6adaf00 (64-bit, non-prefetchable) [size=256]
+ I/O ports at 1100 [size=32]
Kernel driver in use: i801_smbus
Kernel modules: i2c-i801
02:01.0 CardBus bridge [0607]: Texas Instruments PCIxx12 Cardbus Controller [104c:8039]
- Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 168, Cache Line Size: 64 bytes
- Interrupt: pin A routed to IRQ 18
- Region 0: Memory at f6500000 (32-bit, non-prefetchable) [size=4K]
- Bus: primary=02, secondary=03, subordinate=06, sec-latency=176
- Memory window 0: c0000000-c3fff000 (prefetchable)
- Memory window 1: c8000000-cbfff000
- I/O window 0: 00004000-000040ff
- I/O window 1: 00004400-000044ff
- BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt+ PostWrite+
- <access denied to the rest>
+ Subsystem: Dell Device [1028:0252]
+ Flags: bus master, medium devsel, latency 168, IRQ 18
+ Memory at c8000000 (32-bit, non-prefetchable) [size=4K]
+ Bus: primary=02, secondary=40, subordinate=43, sec-latency=176
+ Memory window 0: c0000000-c3ffffff (prefetchable)
+ Memory window 1: cc000000-cfffffff
+ I/O window 0: 00002400-000024ff
+ I/O window 1: 00002000-000020ff
+ 16-bit legacy interface ports at 0001
Kernel driver in use: yenta_cardbus
Kernel modules: yenta_socket
02:01.1 FireWire (IEEE 1394) [0c00]: Texas Instruments PCIxx12 OHCI Compliant IEEE 1394 Host Controller [104c:803a] (prog-if 10 [OHCI])
Subsystem: Dell Device [1028:0252]
- Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 64 (500ns min, 1000ns max), Cache Line Size: 64 bytes
- Interrupt: pin B routed to IRQ 19
- Region 0: Memory at f65fb800 (32-bit, non-prefetchable) [size=2K]
- Region 1: Memory at f65fc000 (32-bit, non-prefetchable) [size=16K]
- Capabilities: <access denied>
- Kernel driver in use: ohci1394
- Kernel modules: ohci1394
+ Flags: bus master, medium devsel, latency 64, IRQ 19
+ Memory at f65fb800 (32-bit, non-prefetchable) [size=2K]
+ Memory at f65fc000 (32-bit, non-prefetchable) [size=16K]
+ Capabilities: [44] Power Management version 2
+ Kernel driver in use: firewire_ohci
+ Kernel modules: firewire-ohci
02:01.3 SD Host controller [0805]: Texas Instruments PCIxx12 SDA Standard Compliant SD Host Controller [104c:803c] (prog-if 01)
Subsystem: Dell Device [1028:0252]
- Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 64 (1750ns min, 1000ns max), Cache Line Size: 64 bytes
- Interrupt: pin A routed to IRQ 18
- Region 0: Memory at f65fb700 (32-bit, non-prefetchable) [size=256]
- Capabilities: <access denied>
+ Flags: bus master, medium devsel, latency 64, IRQ 18
+ Memory at f65fb700 (32-bit, non-prefetchable) [size=256]
+ Capabilities: [80] Power Management version 2
Kernel driver in use: sdhci-pci
Kernel modules: sdhci-pci
-0c:00.0 Network controller [0280]: Intel Corporation Wireless WiFi Link 5100 [8086:4232]
- Subsystem: Intel Corporation Wireless WiFi Link 5100 [8086:1321]
- Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
- Latency: 0, Cache Line Size: 64 bytes
- Interrupt: pin A routed to IRQ 31
- Region 0: Memory at f69fe000 (64-bit, non-prefetchable) [size=8K]
- Capabilities: <access denied>
- Kernel driver in use: iwlagn
- Kernel modules: iwlagn
+0c:00.0 Network controller [0280]: Intel Corporation WiFi Link 5100 [8086:4232]
+ Subsystem: Intel Corporation WiFi Link 5100 AGN [8086:1321]
+ Flags: bus master, fast devsel, latency 0, IRQ 47
+ Memory at f69fe000 (64-bit, non-prefetchable) [size=8K]
+ Capabilities: [c8] Power Management version 3
+ Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
+ Capabilities: [e0] Express Endpoint, MSI 00
+ Capabilities: [100] Advanced Error Reporting
+ Capabilities: [140] Device Serial Number 00-24-d6-ff-ff-6f-81-3a
+ Kernel driver in use: iwlwifi
+ Kernel modules: iwlwifi
diff --git a/t/tools/generic.t b/t/tools/generic.t
index 671d570..42f4c6d 100755
--- a/t/tools/generic.t
+++ b/t/tools/generic.t
@@ -6000,7 +6000,7 @@ my %lspci_tests = (
},
{
PCICLASS => '0c03',
- NAME => 'USB Controller',
+ NAME => 'USB controller',
MANUFACTURER => 'Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4',
REV => '03',
PCIID => '8086:2937',
@@ -6009,7 +6009,7 @@ my %lspci_tests = (
},
{
PCICLASS => '0c03',
- NAME => 'USB Controller',
+ NAME => 'USB controller',
MANUFACTURER => 'Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5',
REV => '03',
PCIID => '8086:2938',
@@ -6018,7 +6018,7 @@ my %lspci_tests = (
},
{
PCICLASS => '0c03',
- NAME => 'USB Controller',
+ NAME => 'USB controller',
MANUFACTURER => 'Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6',
REV => '03',
PCIID => '8086:2939',
@@ -6027,7 +6027,7 @@ my %lspci_tests = (
},
{
PCICLASS => '0c03',
- NAME => 'USB Controller',
+ NAME => 'USB controller',
MANUFACTURER => 'Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2',
REV => '03',
PCIID => '8086:293c',
@@ -6040,7 +6040,7 @@ my %lspci_tests = (
MANUFACTURER => 'Intel Corporation 82801I (ICH9 Family) HD Audio Controller',
REV => '03',
PCIID => '8086:293e',
- DRIVER => 'HDA',
+ DRIVER => 'snd_hda_intel',
PCISLOT => '00:1b.0'
},
{
@@ -6072,7 +6072,7 @@ my %lspci_tests = (
},
{
PCICLASS => '0c03',
- NAME => 'USB Controller',
+ NAME => 'USB controller',
MANUFACTURER => 'Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1',
REV => '03',
PCIID => '8086:2934',
@@ -6081,7 +6081,7 @@ my %lspci_tests = (
},
{
PCICLASS => '0c03',
- NAME => 'USB Controller',
+ NAME => 'USB controller',
MANUFACTURER => 'Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2',
REV => '03',
PCIID => '8086:2935',
@@ -6090,7 +6090,7 @@ my %lspci_tests = (
},
{
PCICLASS => '0c03',
- NAME => 'USB Controller',
+ NAME => 'USB controller',
MANUFACTURER => 'Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3',
REV => '03',
PCIID => '8086:2936',
@@ -6099,7 +6099,7 @@ my %lspci_tests = (
},
{
PCICLASS => '0c03',
- NAME => 'USB Controller',
+ NAME => 'USB controller',
MANUFACTURER => 'Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1',
REV => '03',
PCIID => '8086:293a',
@@ -6123,15 +6123,6 @@ my %lspci_tests = (
PCISLOT => '00:1f.0'
},
{
- PCICLASS => '0104',
- NAME => 'RAID bus controller',
- MANUFACTURER => 'Intel Corporation Mobile 82801 SATA RAID Controller',
- REV => '03',
- PCIID => '8086:282a',
- DRIVER => 'ahci',
- PCISLOT => '00:1f.2'
- },
- {
PCICLASS => '0c05',
NAME => 'SMBus',
MANUFACTURER => 'Intel Corporation 82801I (ICH9 Family) SMBus Controller',
@@ -6155,7 +6146,7 @@ my %lspci_tests = (
MANUFACTURER => 'Texas Instruments PCIxx12 OHCI Compliant IEEE 1394 Host Controller',
REV => undef,
PCIID => '104c:803a',
- DRIVER => 'ohci1394',
+ DRIVER => 'firewire_ohci',
PCISLOT => '02:01.1'
},
{
@@ -6170,10 +6161,10 @@ my %lspci_tests = (
{
PCICLASS => '0280',
NAME => 'Network controller',
- MANUFACTURER => 'Intel Corporation Wireless WiFi Link 5100',
+ MANUFACTURER => 'Intel Corporation WiFi Link 5100',
REV => undef,
PCIID => '8086:4232',
- DRIVER => 'iwlagn',
+ DRIVER => 'iwlwifi',
PCISLOT => '0c:00.0'
}
]
================================================================
Commit: bf0939c383f2aa0666b10a4d6c5367ed4a8ef459
https://github.com/fusinv/fusioninventory-agent/commit/bf0939c383f2aa0666b10a4d6c5367ed4a8ef459
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-05 (Thu, 05 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Generic.pm
Log Message:
-----------
a single -v flag is enough for lspci
this produce a less verbose output, and protect against buggy hardware
side-effects such as http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=631359
diff --git a/lib/FusionInventory/Agent/Tools/Generic.pm b/lib/FusionInventory/Agent/Tools/Generic.pm
index 03c1cc5..25ac7ba 100644
--- a/lib/FusionInventory/Agent/Tools/Generic.pm
+++ b/lib/FusionInventory/Agent/Tools/Generic.pm
@@ -125,7 +125,7 @@ sub getCpusFromDmidecode {
sub getPCIDevices {
my (%params) = (
- command => 'lspci -vvv -nn',
+ command => 'lspci -v -nn',
@_
);
my $handle = getFileHandle(%params);
================================================================
Commit: acdd0ccde871f71b9d13d05d6cfbf9b09f1fdedd
https://github.com/fusinv/fusioninventory-agent/commit/acdd0ccde871f71b9d13d05d6cfbf9b09f1fdedd
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-05 (Thu, 05 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
M t/inventory/windows/networks.t
Log Message:
-----------
enforce consistent behaviour with Linux
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index 58314a7..047783b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -79,17 +79,7 @@ sub _getInterfaces {
if ($object->{IPAddress}) {
foreach my $address (@{$object->{IPAddress}}) {
my $mask = shift @{$object->{IPSubnet}};
- if ($address =~ /$ip_address_pattern/) {
- push @{$configuration->{IPADDRESS}}, $address;
- push @{$configuration->{IPMASK}}, $mask;
- push @{$configuration->{IPSUBNET}},
- getSubnetAddress($address, $mask);
- } elsif ($address =~ /\S+/) {
- push @{$configuration->{IPADDRESS6}}, $address;
- push @{$configuration->{IPMASK6}}, $mask;
- push @{$configuration->{IPSUBNET6}},
- getSubnetAddressIPv6($address, $mask);
- }
+ push @{$configuration->{addresses}}, [ $address, $mask ];
}
}
@@ -107,47 +97,63 @@ sub _getInterfaces {
my $configuration = $configurations[$object->{Index}];
- next unless
- $configuration->{IPADDRESS} ||
- $configuration->{IPADDRESS6} ||
- $configuration->{MACADDR};
-
- my $interface = {
- SPEED => $object->{Speed},
- PNPDEVICEID => $object->{PNPDeviceID},
- MACADDR => $configuration->{MACADDR},
- DESCRIPTION => $configuration->{DESCRIPTION},
- STATUS => $configuration->{STATUS},
- IPDHCP => $configuration->{IPDHCP},
- MTU => $configuration->{MTU},
- IPGATEWAY => $configuration->{IPGATEWAY},
- IPADDRESS => $configuration->{IPADDRESS},
- IPMASK => $configuration->{IPMASK},
- IPSUBNET => $configuration->{IPSUBNET},
- IPADDRESS6 => $configuration->{IPADDRESS6},
- IPMASK6 => $configuration->{IPMASK6},
- IPSUBNET6 => $configuration->{IPSUBNET6},
- dns => $configuration->{dns},
- };
+ if ($configuration->{addresses}) {
+ foreach my $address (@{$configuration->{addresses}}) {
+
+ my $interface = {
+ SPEED => $object->{Speed},
+ PNPDEVICEID => $object->{PNPDeviceID},
+ MACADDR => $configuration->{MACADDR},
+ DESCRIPTION => $configuration->{DESCRIPTION},
+ STATUS => $configuration->{STATUS},
+ IPDHCP => $configuration->{IPDHCP},
+ MTU => $configuration->{MTU},
+ IPGATEWAY => $configuration->{IPGATEWAY},
+ dns => $configuration->{dns},
+ };
+
+ if ($address->[0] =~ /$ip_address_pattern/) {
+ $interface->{IPADDRESS} = $address->[0];
+ $interface->{IPMASK} = $address->[1];
+ $interface->{IPSUBNET} = getSubnetAddress(
+ $address->[0],
+ $address->[1]
+ );
+ } else {
+ $interface->{IPADDRESS6} = $address->[0];
+ $interface->{IPMASK6} = $address->[1];
+ $interface->{IPSUBNET6} = getSubnetAddressIPv6(
+ $address->[0],
+ $address->[1]
+ );
+ }
- # PhysicalAdapter only work on OS > XP
- if (defined $object->{PhysicalAdapter}) {
- $interface->{VIRTUALDEV} = $object->{PhysicalAdapter} ? 0 : 1;
- # http://forge.fusioninventory.org/issues/1166
- } elsif ($interface->{DESCRIPTION}
- && $interface->{DESCRIPTION} =~ /RAS/
- && $interface->{DESCRIPTION} =~ /Adapter/i) {
- $interface->{VIRTUALDEV} = 1;
- } else {
- $interface->{VIRTUALDEV} = $object->{PNPDeviceID} =~ /^ROOT/ ? 1 : 0;
- }
+ $interface->{VIRTUALDEV} = _isVirtual($object, $configuration);
+ $interface->{TYPE} = _getType($object);
- if (defined $object->{AdapterType}) {
- $interface->{TYPE} = $object->{AdapterType};
- $interface->{TYPE} =~ s/Ethernet.*/Ethernet/;
+ push @interfaces, $interface;
+ }
+ } else {
+ next unless $configuration->{MACADDR};
+
+ my $interface = {
+ SPEED => $object->{Speed},
+ PNPDEVICEID => $object->{PNPDeviceID},
+ MACADDR => $configuration->{MACADDR},
+ DESCRIPTION => $configuration->{DESCRIPTION},
+ STATUS => $configuration->{STATUS},
+ IPDHCP => $configuration->{IPDHCP},
+ MTU => $configuration->{MTU},
+ IPGATEWAY => $configuration->{IPGATEWAY},
+ dns => $configuration->{dns},
+ };
+
+ $interface->{VIRTUALDEV} = _isVirtual($object, $configuration);
+ $interface->{TYPE} = _getType($object);
+
+ push @interfaces, $interface;
}
- push @interfaces, $interface;
}
return
@@ -155,4 +161,34 @@ sub _getInterfaces {
}
+sub _isVirtual {
+ my ($object, $configuration) = @_;
+
+ # PhysicalAdapter only work on OS > XP
+ if (defined $object->{PhysicalAdapter}) {
+ return $object->{PhysicalAdapter} ? 0 : 1;
+ }
+
+ # http://forge.fusioninventory.org/issues/1166
+ if ($configuration->{DESCRIPTION} &&
+ $configuration->{DESCRIPTION} =~ /RAS/ &&
+ $configuration->{DESCRIPTION} =~ /Adapter/i
+ ) {
+ return 1;
+ }
+
+ return $object->{PNPDeviceID} =~ /^ROOT/ ? 1 : 0;
+}
+
+sub _getType {
+ my ($object) = @_;
+
+ return unless $object->{AdapterType};
+
+ my $type = $object->{AdapterType};
+ $type =~ s/Ethernet.*/Ethernet/;
+
+ return $type;
+}
+
1;
diff --git a/t/inventory/windows/networks.t b/t/inventory/windows/networks.t
index b854a24..460c9d8 100755
--- a/t/inventory/windows/networks.t
+++ b/t/inventory/windows/networks.t
@@ -22,18 +22,31 @@ my %tests = (
7 => [
{
dns => '192.168.0.254',
- IPMASK6 => [ '64' ],
- IPMASK => [ '255.255.255.0' ],
+ IPMASK => '255.255.255.0',
IPGATEWAY => '192.168.0.254',
MACADDR => 'F4:6D:04:97:2D:3E',
STATUS => 'Up',
- IPADDRESS6 => [ 'fe80::311a:2127:dded:6618' ],
IPDHCP => '192.168.0.254',
- IPSUBNET => [ '192.168.0.0' ],
+ IPSUBNET => '192.168.0.0',
MTU => undef,
- IPSUBNET6 => [],
DESCRIPTION => 'Realtek PCIe GBE Family Controller',
- IPADDRESS => [ '192.168.0.1' ],
+ IPADDRESS => '192.168.0.1',
+ VIRTUALDEV => 0,
+ SPEED => 100000000,
+ PNPDEVICEID => 'PCI\VEN_10EC&DEV_8168&SUBSYS_84321043&REV_06\4&87D54EE&0&00E5',
+ TYPE => 'Ethernet'
+ },
+ {
+ dns => '192.168.0.254',
+ IPMASK6 => '64',
+ IPGATEWAY => '192.168.0.254',
+ MACADDR => 'F4:6D:04:97:2D:3E',
+ STATUS => 'Up',
+ IPADDRESS6 => 'fe80::311a:2127:dded:6618',
+ IPDHCP => '192.168.0.254',
+ MTU => undef,
+ IPSUBNET6 => undef,
+ DESCRIPTION => 'Realtek PCIe GBE Family Controller',
VIRTUALDEV => 0,
SPEED => 100000000,
PNPDEVICEID => 'PCI\VEN_10EC&DEV_8168&SUBSYS_84321043&REV_06\4&87D54EE&0&00E5',
@@ -42,12 +55,6 @@ my %tests = (
{
dns => undef,
IPGATEWAY => undef,
- IPADDRESS6 => undef,
- IPMASK6 => undef,
- IPSUBNET6 => undef,
- IPADDRESS => undef,
- IPMASK => undef,
- IPSUBNET => undef,
MTU => undef,
MACADDR => '00:26:83:12:FB:0B',
STATUS => 'Up',
@@ -62,12 +69,6 @@ my %tests = (
xp => [
{
dns => undef,
- IPADDRESS6 => undef,
- IPMASK6 => undef,
- IPSUBNET6 => undef,
- IPADDRESS => undef,
- IPMASK => undef,
- IPSUBNET => undef,
IPGATEWAY => undef,
VIRTUALDEV => 1,
PNPDEVICEID => 'ROOT\\MS_PPTPMINIPORT\\0000',
@@ -81,12 +82,6 @@ my %tests = (
},
{
dns => undef,
- IPADDRESS6 => undef,
- IPMASK6 => undef,
- IPSUBNET6 => undef,
- IPADDRESS => undef,
- IPMASK => undef,
- IPSUBNET => undef,
IPGATEWAY => undef,
VIRTUALDEV => 1,
PNPDEVICEID => 'ROOT\\MS_PPPOEMINIPORT\\0000',
@@ -100,12 +95,6 @@ my %tests = (
},
{
dns => undef,
- IPADDRESS6 => undef,
- IPMASK6 => undef,
- IPSUBNET6 => undef,
- IPADDRESS => undef,
- IPMASK => undef,
- IPSUBNET => undef,
IPGATEWAY => undef,
VIRTUALDEV => 1,
PNPDEVICEID => 'ROOT\\MS_PSCHEDMP\\0000',
@@ -119,7 +108,7 @@ my %tests = (
},
{
dns => '10.36.6.100',
- IPMASK => [ '255.255.254.0' ],
+ IPMASK => '255.255.254.0',
IPGATEWAY => '10.36.6.1',
VIRTUALDEV => 0,
PNPDEVICEID => 'PCI\\VEN_14E4&DEV_1677&SUBSYS_3006103C&REV_01\\4&1886B119&0&00E1',
@@ -128,22 +117,13 @@ my %tests = (
TYPE => 'Ethernet',
SPEED => undef,
IPDHCP => '10.36.6.100',
- IPSUBNET => [ '10.36.6.0' ],
+ IPSUBNET => '10.36.6.0',
MTU => undef,
DESCRIPTION => 'Broadcom NetXtreme Gigabit Ethernet - Teefer2 Miniport',
- IPADDRESS => [ '10.36.6.30' ],
- IPADDRESS6 => undef,
- IPMASK6 => undef,
- IPSUBNET6 => undef,
+ IPADDRESS => '10.36.6.30',
},
{
dns => undef,
- IPADDRESS6 => undef,
- IPMASK6 => undef,
- IPSUBNET6 => undef,
- IPADDRESS => undef,
- IPMASK => undef,
- IPSUBNET => undef,
IPGATEWAY => undef,
VIRTUALDEV => 1,
PNPDEVICEID => 'ROOT\\MS_PSCHEDMP\\0002',
@@ -157,12 +137,6 @@ my %tests = (
},
{
dns => undef,
- IPADDRESS6 => undef,
- IPMASK6 => undef,
- IPSUBNET6 => undef,
- IPADDRESS => undef,
- IPMASK => undef,
- IPSUBNET => undef,
IPGATEWAY => undef,
VIRTUALDEV => 1,
PNPDEVICEID => 'ROOT\\SYMC_TEEFER2MP\\0000',
@@ -176,12 +150,6 @@ my %tests = (
},
{
dns => undef,
- IPADDRESS6 => undef,
- IPMASK6 => undef,
- IPSUBNET6 => undef,
- IPADDRESS => undef,
- IPMASK => undef,
- IPSUBNET => undef,
IPGATEWAY => undef,
VIRTUALDEV => 1,
PNPDEVICEID => 'ROOT\\SYMC_TEEFER2MP\\0002',
@@ -213,5 +181,6 @@ foreach my $test (keys %tests) {
\@interfaces,
$tests{$test},
"$test sample"
- );
+ ) or print Dumper(\@interfaces);
+use Data::Dumper;
}
================================================================
Commit: 025733414ba5ae66e583ce82b1989370e2608947
https://github.com/fusinv/fusioninventory-agent/commit/025733414ba5ae66e583ce82b1989370e2608947
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-05 (Thu, 05 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Linux.pm
Log Message:
-----------
better regexp
use explicit character class rather than non-greedy quantifier, for
consistency
diff --git a/lib/FusionInventory/Agent/Tools/Linux.pm b/lib/FusionInventory/Agent/Tools/Linux.pm
index 1d93f1e..fed5844 100644
--- a/lib/FusionInventory/Agent/Tools/Linux.pm
+++ b/lib/FusionInventory/Agent/Tools/Linux.pm
@@ -315,7 +315,7 @@ sub getInterfacesFromIp {
my $interface;
while (my $line = <$handle>) {
- if ($line =~ /^\d+:\s+(\S+): <(.+?)>(.*)/) {
+ if ($line =~ /^\d+:\s+(\S+): <([^>]+)>(.*)/) {
$interface = {
DESCRIPTION => $1
================================================================
Commit: a26b229a9c2b63d838131ea6855ec1f94414ba99
https://github.com/fusinv/fusioninventory-agent/commit/a26b229a9c2b63d838131ea6855ec1f94414ba99
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-05 (Thu, 05 Apr 2012)
Changed paths:
M t/inventory/windows/networks.t
Log Message:
-----------
remove debug code
diff --git a/t/inventory/windows/networks.t b/t/inventory/windows/networks.t
index 460c9d8..b6367c0 100755
--- a/t/inventory/windows/networks.t
+++ b/t/inventory/windows/networks.t
@@ -181,6 +181,5 @@ foreach my $test (keys %tests) {
\@interfaces,
$tests{$test},
"$test sample"
- ) or print Dumper(\@interfaces);
-use Data::Dumper;
+ );
}
================================================================
Commit: 711d919980aa51b052f476d46bc8b08d38b4fe69
https://github.com/fusinv/fusioninventory-agent/commit/711d919980aa51b052f476d46bc8b08d38b4fe69
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-06 (Fri, 06 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Network.pm
Log Message:
-----------
add getNetworkMaskIPv6 function
diff --git a/lib/FusionInventory/Agent/Tools/Network.pm b/lib/FusionInventory/Agent/Tools/Network.pm
index 27bdd20..636c0d1 100644
--- a/lib/FusionInventory/Agent/Tools/Network.pm
+++ b/lib/FusionInventory/Agent/Tools/Network.pm
@@ -17,6 +17,7 @@ our @EXPORT = qw(
getSubnetAddress
getSubnetAddressIPv6
getNetworkMask
+ getNetworkMaskIPv6
hex2canonical
alt2canonical
);
@@ -96,6 +97,12 @@ sub getNetworkMask {
return join ('.', map { oct('0b' . $_) } @bytes);
}
+sub getNetworkMaskIPv6 {
+ my ($prefix) = @_;
+
+ return ip_compress_address(ip_bintoip(ip_get_mask($prefix, 6), 6), 6);
+}
+
1;
__END__
@@ -145,4 +152,8 @@ Returns the subnet address for IPv6.
=head2 getNetworkMask($prefix)
-Returns the network mask.
+Returns the network mask for IPv4.
+
+=head2 getNetworkMaskIPv6($prefix)
+
+Returns the network mask for IPv6.
================================================================
Commit: 525d3e607b29ad7f0945303f64d1c9797499ff4d
https://github.com/fusinv/fusioninventory-agent/commit/525d3e607b29ad7f0945303f64d1c9797499ff4d
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-06 (Fri, 06 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Network.pm
Log Message:
-----------
fix getSubnetAddressIPv6 function
diff --git a/lib/FusionInventory/Agent/Tools/Network.pm b/lib/FusionInventory/Agent/Tools/Network.pm
index 636c0d1..c3e08b5 100644
--- a/lib/FusionInventory/Agent/Tools/Network.pm
+++ b/lib/FusionInventory/Agent/Tools/Network.pm
@@ -62,14 +62,11 @@ sub getSubnetAddressIPv6 {
return unless $address && $mask;
- my $binaddress = ip_iptobin($address, 6);
- my $binmask = ip_iptobin($mask, 6);
-
- return unless $binaddress && $binmask;
-
+ my $binaddress = ip_iptobin(ip_expand_address($address, 6), 6);
+ my $binmask = ip_iptobin(ip_expand_address($mask, 6), 6);
my $binsubnet = $binaddress & $binmask; ## no critic (ProhibitBitwise)
- return ip_bintoip($binsubnet, 6);
+ return ip_compress_address(ip_bintoip($binsubnet, 6), 6);
}
sub hex2canonical {
================================================================
Commit: d8e75b063b8d37391715626a16a46c9cc7cd0f13
https://github.com/fusinv/fusioninventory-agent/commit/d8e75b063b8d37391715626a16a46c9cc7cd0f13
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-06 (Fri, 06 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Network.pm
Log Message:
-----------
return explicit undef for invalid arguments
diff --git a/lib/FusionInventory/Agent/Tools/Network.pm b/lib/FusionInventory/Agent/Tools/Network.pm
index c3e08b5..3428fb0 100644
--- a/lib/FusionInventory/Agent/Tools/Network.pm
+++ b/lib/FusionInventory/Agent/Tools/Network.pm
@@ -48,7 +48,7 @@ our $network_pattern = qr/
sub getSubnetAddress {
my ($address, $mask) = @_;
- return unless $address && $mask;
+ return undef unless $address && $mask; ## no critic (ExplicitReturnUndef)
my $binaddress = ip_iptobin($address, 4);
my $binmask = ip_iptobin($mask, 4);
@@ -60,7 +60,7 @@ sub getSubnetAddress {
sub getSubnetAddressIPv6 {
my ($address, $mask) = @_;
- return unless $address && $mask;
+ return undef unless $address && $mask; ## no critic (ExplicitReturnUndef)
my $binaddress = ip_iptobin(ip_expand_address($address, 6), 6);
my $binmask = ip_iptobin(ip_expand_address($mask, 6), 6);
@@ -86,6 +86,8 @@ sub alt2canonical {
sub getNetworkMask {
my ($prefix) = @_;
+ return undef unless $prefix; ## no critic (ExplicitReturnUndef)
+
my $mask;
$mask .= 1 foreach(1..$prefix);
$mask .= 0 foreach(1..(32-$prefix));
@@ -97,6 +99,8 @@ sub getNetworkMask {
sub getNetworkMaskIPv6 {
my ($prefix) = @_;
+ return undef unless $prefix; ## no critic (ExplicitReturnUndef)
+
return ip_compress_address(ip_bintoip(ip_get_mask($prefix, 6), 6), 6);
}
================================================================
Commit: d08d2d9145327988d25f4077bcd2ad4eef1b4bb8
https://github.com/fusinv/fusioninventory-agent/commit/d08d2d9145327988d25f4077bcd2ad4eef1b4bb8
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-06 (Fri, 06 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Network.pm
Log Message:
-----------
keep code consistent between v4/v6 versions
No need to ressort to custom code as long as Net::IP is required anyway
diff --git a/lib/FusionInventory/Agent/Tools/Network.pm b/lib/FusionInventory/Agent/Tools/Network.pm
index 3428fb0..a544bf9 100644
--- a/lib/FusionInventory/Agent/Tools/Network.pm
+++ b/lib/FusionInventory/Agent/Tools/Network.pm
@@ -88,12 +88,7 @@ sub getNetworkMask {
return undef unless $prefix; ## no critic (ExplicitReturnUndef)
- my $mask;
- $mask .= 1 foreach(1..$prefix);
- $mask .= 0 foreach(1..(32-$prefix));
-
- my @bytes = $mask =~ /^(\d{8})(\d{8})(\d{8})(\d{8})$/;
- return join ('.', map { oct('0b' . $_) } @bytes);
+ return ip_bintoip(ip_get_mask($prefix, 4), 4);
}
sub getNetworkMaskIPv6 {
================================================================
Commit: f1c420d5d6f75e314b967e4712fbc505b91d5001
https://github.com/fusinv/fusioninventory-agent/commit/f1c420d5d6f75e314b967e4712fbc505b91d5001
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-06 (Fri, 06 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Linux.pm
M t/tools/linux.t
Log Message:
-----------
capture all IPv6 parameters
diff --git a/lib/FusionInventory/Agent/Tools/Linux.pm b/lib/FusionInventory/Agent/Tools/Linux.pm
index fed5844..5399bbe 100644
--- a/lib/FusionInventory/Agent/Tools/Linux.pm
+++ b/lib/FusionInventory/Agent/Tools/Linux.pm
@@ -338,9 +338,16 @@ sub getInterfacesFromIp {
# if courrent interface is not up, there won't be any address lines
push @interfaces, $interface
unless $interface->{STATUS} && $interface->{STATUS} eq 'Up';
- } elsif ($line =~ /inet6 (\S+)\//) {
+ } elsif ($line =~ /inet6 (\S+)\/(\d{1,2})/) {
+ my $address = $1;
+ my $mask = $2 ? getNetworkMaskIPv6($2) : undef;
+ my $subnet = $address && $mask ?
+ getSubnetAddressIPv6($address, $mask) : undef;
+
push @interfaces, {
- IPADDRESS6 => $1,
+ IPADDRESS6 => $address,
+ IPMASK6 => $mask,
+ IPSUBNET6 => $subnet,
STATUS => $interface->{STATUS},
DESCRIPTION => $interface->{DESCRIPTION},
MACADDR => $interface->{MACADDR}
diff --git a/t/tools/linux.t b/t/tools/linux.t
index 0446db4..9ca970d 100755
--- a/t/tools/linux.t
+++ b/t/tools/linux.t
@@ -685,6 +685,8 @@ my %ipaddrshow_tests = (
DESCRIPTION => 'lo',
STATUS => 'Up',
IPADDRESS6 => '::1',
+ IPMASK6 => 'fff0::',
+ IPSUBNET6 => '::',
MACADDR => '00:00:00:00:00:00',
},
{
@@ -699,13 +701,17 @@ my %ipaddrshow_tests = (
MACADDR => '00:23:18:91:db:8d',
DESCRIPTION => 'eth0',
STATUS => 'Up',
- IPADDRESS6 => '2a01:e34:ef9c:64d0:223:18ff:fe91:db8d'
+ IPADDRESS6 => '2a01:e34:ef9c:64d0:223:18ff:fe91:db8d',
+ IPMASK6 => 'ffff:ffff:ffff:ffff::',
+ IPSUBNET6 => '2a01:e34:ef9c:64d0::'
},
{
MACADDR => '00:23:18:91:db:8d',
DESCRIPTION => 'eth0',
STATUS => 'Up',
- IPADDRESS6 => 'fe80::223:18ff:fe91:db8d'
+ IPADDRESS6 => 'fe80::223:18ff:fe91:db8d',
+ IPMASK6 => 'ffff:ffff:ffff:ffff::',
+ IPSUBNET6 => 'fe80::'
},
{
STATUS => 'Up',
@@ -740,7 +746,9 @@ my %ipaddrshow_tests = (
MACADDR => '8a:84:99:29:46:05',
DESCRIPTION => 'tap0',
STATUS => 'Up',
- IPADDRESS6 => 'fe80::8884:99ff:fe29:4605'
+ IPADDRESS6 => 'fe80::8884:99ff:fe29:4605',
+ IPMASK6 => 'ffff:ffff:ffff:ffff::',
+ IPSUBNET6 => 'fe80::'
}
],
'ip_addr-2' => [
@@ -756,6 +764,8 @@ my %ipaddrshow_tests = (
DESCRIPTION => 'lo',
STATUS => 'Up',
IPADDRESS6 => '::1',
+ IPMASK6 => 'fff0::',
+ IPSUBNET6 => '::',
MACADDR => '00:00:00:00:00:00',
},
{
@@ -778,7 +788,9 @@ my %ipaddrshow_tests = (
MACADDR => '0f:0f:0f:0f:0f:0f',
DESCRIPTION => 'eth0',
STATUS => 'Up',
- IPADDRESS6 => 'fe80::201:29ff:fed1:feb4'
+ IPADDRESS6 => 'fe80::201:29ff:fed1:feb4',
+ IPMASK6 => 'ffff:ffff:ffff:ffff::',
+ IPSUBNET6 => 'fe80::'
},
{
STATUS => 'Down',
@@ -810,6 +822,8 @@ my %ipaddrshow_tests = (
DESCRIPTION => 'lo',
STATUS => 'Up',
IPADDRESS6 => '::1',
+ IPMASK6 => 'fff0::',
+ IPSUBNET6 => '::',
MACADDR => '00:00:00:00:00:00',
},
{
@@ -824,7 +838,9 @@ my %ipaddrshow_tests = (
MACADDR => '00:50:56:8b:70:b7',
DESCRIPTION => 'eth0',
STATUS => 'Up',
- IPADDRESS6 => 'fe80::250:56ff:fe8b:70b7'
+ IPADDRESS6 => 'fe80::250:56ff:fe8b:70b7',
+ IPMASK6 => 'ffff:ffff:ffff:ffff::',
+ IPSUBNET6 => 'fe80::'
},
{
DESCRIPTION => 'sit0',
================================================================
Commit: d49702406d57956bcd66fa37deec3fd6d5da8c21
https://github.com/fusinv/fusioninventory-agent/commit/d49702406d57956bcd66fa37deec3fd6d5da8c21
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-06 (Fri, 06 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Linux.pm
Log Message:
-----------
simplification
diff --git a/lib/FusionInventory/Agent/Tools/Linux.pm b/lib/FusionInventory/Agent/Tools/Linux.pm
index 5399bbe..94a38c8 100644
--- a/lib/FusionInventory/Agent/Tools/Linux.pm
+++ b/lib/FusionInventory/Agent/Tools/Linux.pm
@@ -340,9 +340,8 @@ sub getInterfacesFromIp {
unless $interface->{STATUS} && $interface->{STATUS} eq 'Up';
} elsif ($line =~ /inet6 (\S+)\/(\d{1,2})/) {
my $address = $1;
- my $mask = $2 ? getNetworkMaskIPv6($2) : undef;
- my $subnet = $address && $mask ?
- getSubnetAddressIPv6($address, $mask) : undef;
+ my $mask = getNetworkMaskIPv6($2);
+ my $subnet = getSubnetAddressIPv6($address, $mask);
push @interfaces, {
IPADDRESS6 => $address,
@@ -354,9 +353,8 @@ sub getInterfacesFromIp {
};
} elsif ($line =~ /inet ($ip_address_pattern)(?:\/(\d{1,3}))?/) {
my $address = $1;
- my $mask = $2 ? getNetworkMask($2) : undef;
- my $subnet = $address && $mask ?
- getSubnetAddress($address, $mask) : undef;
+ my $mask = getNetworkMask($2);
+ my $subnet = getSubnetAddress($address, $mask);
push @interfaces, {
IPADDRESS => $address,
================================================================
Commit: 8a613a5582a21e433a28d1a3e2cecfe5f2d428e6
https://github.com/fusinv/fusioninventory-agent/commit/8a613a5582a21e433a28d1a3e2cecfe5f2d428e6
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-06 (Fri, 06 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
M t/inventory/windows/networks.t
Log Message:
-----------
fix IPv6 mask and subnet computation
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index 047783b..a7ae01c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -78,8 +78,8 @@ sub _getInterfaces {
if ($object->{IPAddress}) {
foreach my $address (@{$object->{IPAddress}}) {
- my $mask = shift @{$object->{IPSubnet}};
- push @{$configuration->{addresses}}, [ $address, $mask ];
+ my $prefix = shift @{$object->{IPSubnet}};
+ push @{$configuration->{addresses}}, [ $address, $prefix ];
}
}
@@ -116,15 +116,15 @@ sub _getInterfaces {
$interface->{IPADDRESS} = $address->[0];
$interface->{IPMASK} = $address->[1];
$interface->{IPSUBNET} = getSubnetAddress(
- $address->[0],
- $address->[1]
+ $interface->{IPADDRESS},
+ $interface->{IPMASK}
);
} else {
$interface->{IPADDRESS6} = $address->[0];
- $interface->{IPMASK6} = $address->[1];
+ $interface->{IPMASK6} = getNetworkMaskIPv6($address->[1]);
$interface->{IPSUBNET6} = getSubnetAddressIPv6(
- $address->[0],
- $address->[1]
+ $interface->{IPADDRESS6},
+ $interface->{IPMASK6}
);
}
diff --git a/t/inventory/windows/networks.t b/t/inventory/windows/networks.t
index b6367c0..f943441 100755
--- a/t/inventory/windows/networks.t
+++ b/t/inventory/windows/networks.t
@@ -38,14 +38,14 @@ my %tests = (
},
{
dns => '192.168.0.254',
- IPMASK6 => '64',
+ IPMASK6 => 'ffff:ffff:ffff:ffff::',
IPGATEWAY => '192.168.0.254',
MACADDR => 'F4:6D:04:97:2D:3E',
STATUS => 'Up',
IPADDRESS6 => 'fe80::311a:2127:dded:6618',
IPDHCP => '192.168.0.254',
MTU => undef,
- IPSUBNET6 => undef,
+ IPSUBNET6 => 'fe80::',
DESCRIPTION => 'Realtek PCIe GBE Family Controller',
VIRTUALDEV => 0,
SPEED => 100000000,
================================================================
Commit: 2c3775059e4611bd31198b6cbe76050586804768
https://github.com/fusinv/fusioninventory-agent/commit/2c3775059e4611bd31198b6cbe76050586804768
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-07 (Sat, 07 Apr 2012)
Changed paths:
A resources/virtualization/vboxmanage/sample3
M t/inventory/virtualization/virtualbox.t
Log Message:
-----------
new virtualbox sample
diff --git a/resources/virtualization/vboxmanage/sample3 b/resources/virtualization/vboxmanage/sample3
new file mode 100644
index 0000000..985648d
--- /dev/null
+++ b/resources/virtualization/vboxmanage/sample3
@@ -0,0 +1,507 @@
+Name: Node 1 : Debian
+Guest OS: Debian (64 bit)
+UUID: e8e1f52d-700b-4fe8-b024-db04550eaddc
+Config file: /home/normation/VirtualBox VMs/Node 1 : Debian/Node 1 : Debian.vbox
+Snapshot folder: /home/normation/VirtualBox VMs/Node 1 : Debian/Snapshots
+Log folder: /home/normation/VirtualBox VMs/Node 1 : Debian/Logs
+Hardware UUID: e8e1f52d-700b-4fe8-b024-db04550eaddc
+Memory size: 256MB
+Page Fusion: off
+VRAM size: 12MB
+CPU exec cap: 100%
+HPET: off
+Chipset: piix3
+Firmware: BIOS
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: off
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2012-04-04T17:47:16.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): Contrôleur IDE
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Bootable (0): on
+Storage Controller Name (1): Contrôleur SATA
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+Storage Controller Bootable (1): on
+Contrôleur IDE (1, 0): Empty
+Contrôleur SATA (0, 0): /home/normation/VirtualBox VMs/Node 1 : Debian/Node 1 : Debian.vdi (UUID: 741fe4ad-0581-45c8-94b5-0d4cd6b23e14)
+NIC 1: MAC: 0800272C26F0, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
+NIC 2: MAC: 0800270C5FB5, Attachment: Host-only Interface 'vboxnet0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: disabled
+Clipboard Mode: Bidirectional
+VRDE: disabled
+USB: enabled
+
+USB Device Filters:
+
+<none>
+
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Node 2 : Debian
+Guest OS: Debian (64 bit)
+UUID: 1922b52b-aa28-4d4a-b384-2d3429e3a6ad
+Config file: /home/normation/VirtualBox VMs/Node 2 : Debian/Node 2 : Debian.vbox
+Snapshot folder: /home/normation/VirtualBox VMs/Node 2 : Debian/Snapshots
+Log folder: /home/normation/VirtualBox VMs/Node 2 : Debian/Logs
+Hardware UUID: 1922b52b-aa28-4d4a-b384-2d3429e3a6ad
+Memory size: 256MB
+Page Fusion: off
+VRAM size: 12MB
+CPU exec cap: 100%
+HPET: off
+Chipset: piix3
+Firmware: BIOS
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: off
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2012-04-01T15:33:33.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): Contrôleur IDE
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Bootable (0): on
+Storage Controller Name (1): Contrôleur SATA
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+Storage Controller Bootable (1): on
+Contrôleur IDE (1, 0): Empty
+Contrôleur SATA (0, 0): /home/normation/VirtualBox VMs/Node 2 : Debian/Node 2 : Debian.vdi (UUID: 2a667060-5634-44e2-8727-f9a9c44cdcc4)
+NIC 1: MAC: 08002714E92D, Attachment: NAT, Cable connected: off, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
+NIC 2: MAC: 0800271B1CE0, Attachment: Host-only Interface 'vboxnet0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: disabled
+Clipboard Mode: Bidirectional
+VRDE: disabled
+USB: enabled
+
+USB Device Filters:
+
+<none>
+
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Node 3 : CentOS
+Guest OS: Red Hat (64 bit)
+UUID: a93b30fb-c0f8-4dbf-b439-f6e26d923cf7
+Config file: /home/normation/VirtualBox VMs/Node 3 : CentOS/Node 3 : CentOS.vbox
+Snapshot folder: /home/normation/VirtualBox VMs/Node 3 : CentOS/Snapshots
+Log folder: /home/normation/VirtualBox VMs/Node 3 : CentOS/Logs
+Hardware UUID: a93b30fb-c0f8-4dbf-b439-f6e26d923cf7
+Memory size: 256MB
+Page Fusion: off
+VRAM size: 12MB
+CPU exec cap: 100%
+HPET: off
+Chipset: piix3
+Firmware: BIOS
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: on
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2012-04-04T15:38:21.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): Contrôleur IDE
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Bootable (0): on
+Storage Controller Name (1): Contrôleur SATA
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+Storage Controller Bootable (1): on
+Contrôleur IDE (1, 0): Empty
+Contrôleur SATA (0, 0): /home/normation/VirtualBox VMs/Node 3 : CentOS/Node 3 : CentOS.vdi (UUID: 7e1f77f5-a17a-4fdd-9e23-f3547f8db25b)
+NIC 1: MAC: 080027B572C5, Attachment: NAT, Cable connected: off, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
+NIC 2: MAC: 080027243CFA, Attachment: Host-only Interface 'vboxnet0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: disabled
+Clipboard Mode: Bidirectional
+VRDE: disabled
+USB: enabled
+
+USB Device Filters:
+
+<none>
+
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Node 4 : CentOS
+Guest OS: Red Hat (64 bit)
+UUID: 677daaa1-3e7a-441a-91be-449e02c82dd0
+Config file: /home/normation/VirtualBox VMs/Node 4 : CentOS/Node 4 : CentOS.vbox
+Snapshot folder: /home/normation/VirtualBox VMs/Node 4 : CentOS/Snapshots
+Log folder: /home/normation/VirtualBox VMs/Node 4 : CentOS/Logs
+Hardware UUID: 677daaa1-3e7a-441a-91be-449e02c82dd0
+Memory size: 256MB
+Page Fusion: off
+VRAM size: 12MB
+CPU exec cap: 100%
+HPET: off
+Chipset: piix3
+Firmware: BIOS
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: on
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2012-04-01T15:33:47.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): Contrôleur IDE
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Bootable (0): on
+Storage Controller Name (1): Contrôleur SATA
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+Storage Controller Bootable (1): on
+Contrôleur IDE (1, 0): Empty
+Contrôleur SATA (0, 0): /home/normation/VirtualBox VMs/Node 4 : CentOS/Node 4 : CentOS.vdi (UUID: 771d6b7b-eb29-464b-b9eb-9e4d03e43ea9)
+NIC 1: MAC: 080027C989C8, Attachment: NAT, Cable connected: off, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
+NIC 2: MAC: 0800276684E9, Attachment: Host-only Interface 'vboxnet0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: disabled
+Clipboard Mode: Bidirectional
+VRDE: disabled
+USB: enabled
+
+USB Device Filters:
+
+<none>
+
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: FormationCFengine
+Guest OS: Debian (64 bit)
+UUID: b8b35683-eb17-4689-8213-6a46b28b139f
+Config file: /home/normation/VirtualBox VMs/FormationCFengine/FormationCFengine.vbox
+Snapshot folder: /home/normation/VirtualBox VMs/FormationCFengine/Snapshots
+Log folder: /home/normation/VirtualBox VMs/FormationCFengine/Logs
+Hardware UUID: b8b35683-eb17-4689-8213-6a46b28b139f
+Memory size: 384MB
+Page Fusion: off
+VRAM size: 12MB
+CPU exec cap: 100%
+HPET: off
+Chipset: piix3
+Firmware: BIOS
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): HardDisk
+Boot Device (2): Not Assigned
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: off
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2011-06-17T14:51:25.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): Contrôleur IDE
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Bootable (0): on
+Storage Controller Name (1): Contrôleur SATA
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+Storage Controller Bootable (1): on
+Contrôleur IDE (1, 0): /dev/sr0 (UUID: 00445644-0000-0000-2f64-65762f737230)
+Contrôleur SATA (0, 0): /home/normation/VirtualBox VMs/FormationCFengine/FormationCFengine.vdi (UUID: c126e75e-b5d5-41e6-b148-541eed583c96)
+NIC 1: MAC: 0800279BA8C4, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
+NIC 2: MAC: 080027F037C9, Attachment: Host-only Interface 'vboxnet0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: PulseAudio, Controller: AC97)
+Clipboard Mode: Bidirectional
+VRDE: disabled
+USB: enabled
+
+USB Device Filters:
+
+Index: 0
+Active: yes
+Name: USB DISK 2.0 [0100]
+VendorId: 13fe
+ProductId: 1a00
+Revision: 0100
+Manufacturer:
+Product: USB DISK 2.0
+Remote: 0
+Serial Number: 07731D3906F9
+
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Debian Maître - Squeeze
+Guest OS: Debian (64 bit)
+UUID: ab6afdd6-aa78-4a22-8fc9-02b471c9084c
+Config file: /home/normation/VirtualBox VMs/Debian Maître - Squeeze/Debian Maître - Squeeze.vbox
+Snapshot folder: /home/normation/VirtualBox VMs/Debian Maître - Squeeze/Snapshots
+Log folder: /home/normation/VirtualBox VMs/Debian Maître - Squeeze/Logs
+Hardware UUID: ab6afdd6-aa78-4a22-8fc9-02b471c9084c
+Memory size: 1024MB
+Page Fusion: off
+VRAM size: 12MB
+CPU exec cap: 100%
+HPET: off
+Chipset: piix3
+Firmware: BIOS
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: off
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2012-04-04T17:47:33.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): Contrôleur IDE
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Bootable (0): on
+Storage Controller Name (1): Contrôleur SATA
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+Storage Controller Bootable (1): on
+Contrôleur IDE (1, 0): Empty
+Contrôleur SATA (0, 0): /home/normation/VirtualBox VMs/Debian Maître - Squeeze/Debian Maître - Squeeze.vdi (UUID: 19db8e90-4fd6-4294-81da-0a5d0d6cf94e)
+NIC 1: MAC: 0800279FE582, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
+NIC 2: MAC: 080027DC79DF, Attachment: Host-only Interface 'vboxnet0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: disabled
+Clipboard Mode: Bidirectional
+VRDE: disabled
+USB: enabled
+
+USB Device Filters:
+
+<none>
+
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
diff --git a/t/inventory/virtualization/virtualbox.t b/t/inventory/virtualization/virtualbox.t
index 8a77466..51b4a9e 100755
--- a/t/inventory/virtualization/virtualbox.t
+++ b/t/inventory/virtualization/virtualbox.t
@@ -209,6 +209,62 @@ my %tests = (
UUID => 'd1fe6cfa-80c6-41ae-9f4b-2a15dbafcf2c',
VCPU => 1
}
+ ],
+ sample3 => [
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Node 1 : Debian',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '256MB',
+ UUID => 'e8e1f52d-700b-4fe8-b024-db04550eaddc',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Node 2 : Debian',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '256MB',
+ UUID => '1922b52b-aa28-4d4a-b384-2d3429e3a6ad',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Node 3 : CentOS',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '256MB',
+ UUID => 'a93b30fb-c0f8-4dbf-b439-f6e26d923cf7',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Node 4 : CentOS',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '256MB',
+ UUID => '677daaa1-3e7a-441a-91be-449e02c82dd0',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'FormationCFengine',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '384MB',
+ UUID => 'b8b35683-eb17-4689-8213-6a46b28b139f',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Debian Maître - Squeeze',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '1024MB',
+ UUID => 'ab6afdd6-aa78-4a22-8fc9-02b471c9084c',
+ VCPU => 1
+ }
]
);
================================================================
Commit: dc1be653f4e501bf53a7a2cd14918abfe9497df9
https://github.com/fusinv/fusioninventory-agent/commit/dc1be653f4e501bf53a7a2cd14918abfe9497df9
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-07 (Sat, 07 Apr 2012)
Changed paths:
M t/inventory/generic/lspci/controllers.t
Log Message:
-----------
update the expected test result
diff --git a/t/inventory/generic/lspci/controllers.t b/t/inventory/generic/lspci/controllers.t
index 2550eb1..0faab3d 100755
--- a/t/inventory/generic/lspci/controllers.t
+++ b/t/inventory/generic/lspci/controllers.t
@@ -100,7 +100,7 @@ my %tests = (
NAME => '82801I (ICH9 Family) HD Audio Controller',
TYPE => 'Audio device',
CAPTION => '82801I (ICH9 Family) HD Audio Controller',
- DRIVER => 'HDA',
+ DRIVER => 'snd_hda_intel',
PCISLOT => '00:1b.0',
PCICLASS => '0403',
MANUFACTURER => 'Intel Corporation',
@@ -205,17 +205,6 @@ my %tests = (
PCIID => '8086:2917'
},
{
- NAME => 'Mobile 82801 SATA RAID Controller',
- TYPE => 'RAID bus controller',
- CAPTION => 'Mobile 82801 SATA RAID Controller',
- DRIVER => 'ahci',
- PCISLOT => '00:1f.2',
- PCICLASS => '0104',
- MANUFACTURER => 'Intel Corporation',
- REV => '03',
- PCIID => '8086:282a'
- },
- {
NAME => '82801I (ICH9 Family) SMBus Controller',
TYPE => 'SMBus',
CAPTION => '82801I (ICH9 Family) SMBus Controller',
@@ -241,7 +230,7 @@ my %tests = (
NAME => 'PCIxx12 OHCI Compliant IEEE 1394 Host Controller',
TYPE => 'FireWire (IEEE 1394)',
CAPTION => 'PCIxx12 OHCI Compliant IEEE 1394 Host Controller',
- DRIVER => 'ohci1394',
+ DRIVER => 'firewire_ohci',
PCISLOT => '02:01.1',
PCICLASS => '0c00',
MANUFACTURER => 'Texas Instruments',
@@ -263,7 +252,7 @@ my %tests = (
NAME => 'WiFi Link 5100',
TYPE => 'Network controller',
CAPTION => 'WiFi Link 5100',
- DRIVER => 'iwlagn',
+ DRIVER => 'iwlwifi',
PCISLOT => '0c:00.0',
PCICLASS => '0280',
MANUFACTURER => 'Intel Corporation',
================================================================
Commit: 5383d74f9718383d875dec0ff1aa4f86a4f3080c
https://github.com/fusinv/fusioninventory-agent/commit/5383d74f9718383d875dec0ff1aa4f86a4f3080c
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-07 (Sat, 07 Apr 2012)
Changed paths:
M Changes
Log Message:
-----------
update the Changes
diff --git a/Changes b/Changes
index 2d8ea9c..a464ea5 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,6 @@
Revision history for FusionInventory agent
-2.2.0 Tue, 03 Apr 2012 11:36:51 +0200
+2.2.0 Sat, 07 Apr 2012 18:57:49 +0200
Major changes:
* large speed improvement: up to 150% for a local inventory
================================================================
Commit: 6a358dff36e2cabce7a33d25304d5f4bc73176bb
https://github.com/fusinv/fusioninventory-agent/commit/6a358dff36e2cabce7a33d25304d5f4bc73176bb
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-09 (Mon, 09 Apr 2012)
Changed paths:
M Changes
M t/inventory/generic/lspci/controllers.t
Log Message:
-----------
Merge remote-tracking branch 'forge/2.2.x' into 2.2.x
diff --git a/Changes b/Changes
index 2d8ea9c..a464ea5 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,6 @@
Revision history for FusionInventory agent
-2.2.0 Tue, 03 Apr 2012 11:36:51 +0200
+2.2.0 Sat, 07 Apr 2012 18:57:49 +0200
Major changes:
* large speed improvement: up to 150% for a local inventory
diff --git a/t/inventory/generic/lspci/controllers.t b/t/inventory/generic/lspci/controllers.t
index 2550eb1..0faab3d 100755
--- a/t/inventory/generic/lspci/controllers.t
+++ b/t/inventory/generic/lspci/controllers.t
@@ -100,7 +100,7 @@ my %tests = (
NAME => '82801I (ICH9 Family) HD Audio Controller',
TYPE => 'Audio device',
CAPTION => '82801I (ICH9 Family) HD Audio Controller',
- DRIVER => 'HDA',
+ DRIVER => 'snd_hda_intel',
PCISLOT => '00:1b.0',
PCICLASS => '0403',
MANUFACTURER => 'Intel Corporation',
@@ -205,17 +205,6 @@ my %tests = (
PCIID => '8086:2917'
},
{
- NAME => 'Mobile 82801 SATA RAID Controller',
- TYPE => 'RAID bus controller',
- CAPTION => 'Mobile 82801 SATA RAID Controller',
- DRIVER => 'ahci',
- PCISLOT => '00:1f.2',
- PCICLASS => '0104',
- MANUFACTURER => 'Intel Corporation',
- REV => '03',
- PCIID => '8086:282a'
- },
- {
NAME => '82801I (ICH9 Family) SMBus Controller',
TYPE => 'SMBus',
CAPTION => '82801I (ICH9 Family) SMBus Controller',
@@ -241,7 +230,7 @@ my %tests = (
NAME => 'PCIxx12 OHCI Compliant IEEE 1394 Host Controller',
TYPE => 'FireWire (IEEE 1394)',
CAPTION => 'PCIxx12 OHCI Compliant IEEE 1394 Host Controller',
- DRIVER => 'ohci1394',
+ DRIVER => 'firewire_ohci',
PCISLOT => '02:01.1',
PCICLASS => '0c00',
MANUFACTURER => 'Texas Instruments',
@@ -263,7 +252,7 @@ my %tests = (
NAME => 'WiFi Link 5100',
TYPE => 'Network controller',
CAPTION => 'WiFi Link 5100',
- DRIVER => 'iwlagn',
+ DRIVER => 'iwlwifi',
PCISLOT => '0c:00.0',
PCICLASS => '0280',
MANUFACTURER => 'Intel Corporation',
================================================================
Commit: 00d4db565dd5212377dd2850f53715cbd53b203e
https://github.com/fusinv/fusioninventory-agent/commit/00d4db565dd5212377dd2850f53715cbd53b203e
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-10 (Tue, 10 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
Log Message:
-----------
fix the network inventory on Windows
closes: #1549
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index a7ae01c..e370379 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -20,11 +20,10 @@ sub doInventory {
foreach my $interface (_getInterfaces()) {
push @gateways, $interface->{IPGATEWAY}
if $interface->{IPGATEWAY};
-
push @dns, $interface->{dns}
if $interface->{dns};
- push @ips, @{$interface->{IPADDRESS}}
+ push @ips, $interface->{IPADDRESS}
if $interface->{IPADDRESS};
delete $interface->{dns};
@@ -32,6 +31,7 @@ sub doInventory {
# flatten multivalued keys
foreach my $key (qw/IPADDRESS IPMASK IPSUBNET IPADDRESS6/) {
next unless $interface->{$key};
+ next unless ref($interface->{$key}) eq 'ARRAY';
$interface->{$key} = join('/', @{$interface->{$key}});
}
================================================================
Commit: fe67d4e5ec396bae92870fc79ff5bbcfe81f7e3b
https://github.com/fusinv/fusioninventory-agent/commit/fe67d4e5ec396bae92870fc79ff5bbcfe81f7e3b
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-10 (Tue, 10 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
Log Message:
-----------
Merge remote-tracking branch 'forge/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index a7ae01c..e370379 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -20,11 +20,10 @@ sub doInventory {
foreach my $interface (_getInterfaces()) {
push @gateways, $interface->{IPGATEWAY}
if $interface->{IPGATEWAY};
-
push @dns, $interface->{dns}
if $interface->{dns};
- push @ips, @{$interface->{IPADDRESS}}
+ push @ips, $interface->{IPADDRESS}
if $interface->{IPADDRESS};
delete $interface->{dns};
@@ -32,6 +31,7 @@ sub doInventory {
# flatten multivalued keys
foreach my $key (qw/IPADDRESS IPMASK IPSUBNET IPADDRESS6/) {
next unless $interface->{$key};
+ next unless ref($interface->{$key}) eq 'ARRAY';
$interface->{$key} = join('/', @{$interface->{$key}});
}
================================================================
Commit: d796148d9fefd82dc65186f0013863c4a9e831b3
https://github.com/fusinv/fusioninventory-agent/commit/d796148d9fefd82dc65186f0013863c4a9e831b3
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-10 (Tue, 10 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
Log Message:
-----------
no more multivalued properties
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index e370379..f9ea784 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -28,13 +28,6 @@ sub doInventory {
delete $interface->{dns};
- # flatten multivalued keys
- foreach my $key (qw/IPADDRESS IPMASK IPSUBNET IPADDRESS6/) {
- next unless $interface->{$key};
- next unless ref($interface->{$key}) eq 'ARRAY';
- $interface->{$key} = join('/', @{$interface->{$key}});
- }
-
$inventory->addEntry(
section => 'NETWORKS',
entry => $interface
================================================================
Commit: 25b45f9371a82e51f6fde53fb0a2879ba5902742
https://github.com/fusinv/fusioninventory-agent/commit/25b45f9371a82e51f6fde53fb0a2879ba5902742
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-10 (Tue, 10 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Win32.pm
Log Message:
-----------
fix: force UTF-8 encoding on WMI output
After upgrading Fusioninventory Agent to 2.2.0 there's a problem
with encoding in several fields with Russian version of Windows.
So it looks like:
Microsoft Windows 7 Ïðîôåññèîíàëüíàÿ
Instead of:
Microsoft Windows 7 Профессиональная
Same problem happens with hardware names.
Reported-by: akrus akrus <akrus at flygroup.st>
diff --git a/lib/FusionInventory/Agent/Tools/Win32.pm b/lib/FusionInventory/Agent/Tools/Win32.pm
index 42c854a..920427b 100644
--- a/lib/FusionInventory/Agent/Tools/Win32.pm
+++ b/lib/FusionInventory/Agent/Tools/Win32.pm
@@ -10,7 +10,7 @@ use constant KEY_WOW64_32 => 0x200;
use Encode;
use English qw(-no_match_vars);
-use Win32::OLE qw(in CP_UTF8);
+use Win32::OLE qw(in);
use Win32::OLE::Const;
use Win32::TieRegistry (
Delimiter => '/',
@@ -18,7 +18,7 @@ use Win32::TieRegistry (
qw/KEY_READ/
);
-Win32::OLE->Option(CP => 'CP_UTF8');
+Win32::OLE->Option(CP => Win32::OLE::CP_UTF8);
use FusionInventory::Agent::Tools;
================================================================
Commit: 50657e2de7128a1a0ac15587cba89d44b87a549b
https://github.com/fusinv/fusioninventory-agent/commit/50657e2de7128a1a0ac15587cba89d44b87a549b
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-10 (Tue, 10 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Win32.pm
Log Message:
-----------
Merge remote-tracking branch 'forge/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Tools/Win32.pm b/lib/FusionInventory/Agent/Tools/Win32.pm
index 42c854a..920427b 100644
--- a/lib/FusionInventory/Agent/Tools/Win32.pm
+++ b/lib/FusionInventory/Agent/Tools/Win32.pm
@@ -10,7 +10,7 @@ use constant KEY_WOW64_32 => 0x200;
use Encode;
use English qw(-no_match_vars);
-use Win32::OLE qw(in CP_UTF8);
+use Win32::OLE qw(in);
use Win32::OLE::Const;
use Win32::TieRegistry (
Delimiter => '/',
@@ -18,7 +18,7 @@ use Win32::TieRegistry (
qw/KEY_READ/
);
-Win32::OLE->Option(CP => 'CP_UTF8');
+Win32::OLE->Option(CP => Win32::OLE::CP_UTF8);
use FusionInventory::Agent::Tools;
================================================================
Commit: bf7de3a1473120fa8afaffe3887db2df894ff580
https://github.com/fusinv/fusioninventory-agent/commit/bf7de3a1473120fa8afaffe3887db2df894ff580
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-10 (Tue, 10 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Sound.pm
Log Message:
-----------
fix: addEntry() odd number of element
closes: #1559
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Sound.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Sound.pm
index dd9ae96..72166df 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Sound.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/MacOS/Sound.pm
@@ -22,14 +22,14 @@ sub doInventory {
# add sound cards
foreach my $x (keys %$info){
- $inventory->addEntry({
+ $inventory->addEntry(
section => 'SOUNDS',
entry => {
NAME => $x,
MANUFACTURER => $x,
DESCRIPTION => $x,
}
- });
+ );
}
}
================================================================
Commit: c5ee51251cafa216285509854a56711ec1d16928
https://github.com/fusinv/fusioninventory-agent/commit/c5ee51251cafa216285509854a56711ec1d16928
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-10 (Tue, 10 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
A resources/virtualization/vboxmanage/sample3
M t/inventory/virtualization/virtualbox.t
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
index e370379..f9ea784 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Networks.pm
@@ -28,13 +28,6 @@ sub doInventory {
delete $interface->{dns};
- # flatten multivalued keys
- foreach my $key (qw/IPADDRESS IPMASK IPSUBNET IPADDRESS6/) {
- next unless $interface->{$key};
- next unless ref($interface->{$key}) eq 'ARRAY';
- $interface->{$key} = join('/', @{$interface->{$key}});
- }
-
$inventory->addEntry(
section => 'NETWORKS',
entry => $interface
diff --git a/resources/virtualization/vboxmanage/sample3 b/resources/virtualization/vboxmanage/sample3
new file mode 100644
index 0000000..985648d
--- /dev/null
+++ b/resources/virtualization/vboxmanage/sample3
@@ -0,0 +1,507 @@
+Name: Node 1 : Debian
+Guest OS: Debian (64 bit)
+UUID: e8e1f52d-700b-4fe8-b024-db04550eaddc
+Config file: /home/normation/VirtualBox VMs/Node 1 : Debian/Node 1 : Debian.vbox
+Snapshot folder: /home/normation/VirtualBox VMs/Node 1 : Debian/Snapshots
+Log folder: /home/normation/VirtualBox VMs/Node 1 : Debian/Logs
+Hardware UUID: e8e1f52d-700b-4fe8-b024-db04550eaddc
+Memory size: 256MB
+Page Fusion: off
+VRAM size: 12MB
+CPU exec cap: 100%
+HPET: off
+Chipset: piix3
+Firmware: BIOS
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: off
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2012-04-04T17:47:16.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): Contrôleur IDE
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Bootable (0): on
+Storage Controller Name (1): Contrôleur SATA
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+Storage Controller Bootable (1): on
+Contrôleur IDE (1, 0): Empty
+Contrôleur SATA (0, 0): /home/normation/VirtualBox VMs/Node 1 : Debian/Node 1 : Debian.vdi (UUID: 741fe4ad-0581-45c8-94b5-0d4cd6b23e14)
+NIC 1: MAC: 0800272C26F0, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
+NIC 2: MAC: 0800270C5FB5, Attachment: Host-only Interface 'vboxnet0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: disabled
+Clipboard Mode: Bidirectional
+VRDE: disabled
+USB: enabled
+
+USB Device Filters:
+
+<none>
+
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Node 2 : Debian
+Guest OS: Debian (64 bit)
+UUID: 1922b52b-aa28-4d4a-b384-2d3429e3a6ad
+Config file: /home/normation/VirtualBox VMs/Node 2 : Debian/Node 2 : Debian.vbox
+Snapshot folder: /home/normation/VirtualBox VMs/Node 2 : Debian/Snapshots
+Log folder: /home/normation/VirtualBox VMs/Node 2 : Debian/Logs
+Hardware UUID: 1922b52b-aa28-4d4a-b384-2d3429e3a6ad
+Memory size: 256MB
+Page Fusion: off
+VRAM size: 12MB
+CPU exec cap: 100%
+HPET: off
+Chipset: piix3
+Firmware: BIOS
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: off
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2012-04-01T15:33:33.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): Contrôleur IDE
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Bootable (0): on
+Storage Controller Name (1): Contrôleur SATA
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+Storage Controller Bootable (1): on
+Contrôleur IDE (1, 0): Empty
+Contrôleur SATA (0, 0): /home/normation/VirtualBox VMs/Node 2 : Debian/Node 2 : Debian.vdi (UUID: 2a667060-5634-44e2-8727-f9a9c44cdcc4)
+NIC 1: MAC: 08002714E92D, Attachment: NAT, Cable connected: off, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
+NIC 2: MAC: 0800271B1CE0, Attachment: Host-only Interface 'vboxnet0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: disabled
+Clipboard Mode: Bidirectional
+VRDE: disabled
+USB: enabled
+
+USB Device Filters:
+
+<none>
+
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Node 3 : CentOS
+Guest OS: Red Hat (64 bit)
+UUID: a93b30fb-c0f8-4dbf-b439-f6e26d923cf7
+Config file: /home/normation/VirtualBox VMs/Node 3 : CentOS/Node 3 : CentOS.vbox
+Snapshot folder: /home/normation/VirtualBox VMs/Node 3 : CentOS/Snapshots
+Log folder: /home/normation/VirtualBox VMs/Node 3 : CentOS/Logs
+Hardware UUID: a93b30fb-c0f8-4dbf-b439-f6e26d923cf7
+Memory size: 256MB
+Page Fusion: off
+VRAM size: 12MB
+CPU exec cap: 100%
+HPET: off
+Chipset: piix3
+Firmware: BIOS
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: on
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2012-04-04T15:38:21.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): Contrôleur IDE
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Bootable (0): on
+Storage Controller Name (1): Contrôleur SATA
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+Storage Controller Bootable (1): on
+Contrôleur IDE (1, 0): Empty
+Contrôleur SATA (0, 0): /home/normation/VirtualBox VMs/Node 3 : CentOS/Node 3 : CentOS.vdi (UUID: 7e1f77f5-a17a-4fdd-9e23-f3547f8db25b)
+NIC 1: MAC: 080027B572C5, Attachment: NAT, Cable connected: off, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
+NIC 2: MAC: 080027243CFA, Attachment: Host-only Interface 'vboxnet0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: disabled
+Clipboard Mode: Bidirectional
+VRDE: disabled
+USB: enabled
+
+USB Device Filters:
+
+<none>
+
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Node 4 : CentOS
+Guest OS: Red Hat (64 bit)
+UUID: 677daaa1-3e7a-441a-91be-449e02c82dd0
+Config file: /home/normation/VirtualBox VMs/Node 4 : CentOS/Node 4 : CentOS.vbox
+Snapshot folder: /home/normation/VirtualBox VMs/Node 4 : CentOS/Snapshots
+Log folder: /home/normation/VirtualBox VMs/Node 4 : CentOS/Logs
+Hardware UUID: 677daaa1-3e7a-441a-91be-449e02c82dd0
+Memory size: 256MB
+Page Fusion: off
+VRAM size: 12MB
+CPU exec cap: 100%
+HPET: off
+Chipset: piix3
+Firmware: BIOS
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: on
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2012-04-01T15:33:47.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): Contrôleur IDE
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Bootable (0): on
+Storage Controller Name (1): Contrôleur SATA
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+Storage Controller Bootable (1): on
+Contrôleur IDE (1, 0): Empty
+Contrôleur SATA (0, 0): /home/normation/VirtualBox VMs/Node 4 : CentOS/Node 4 : CentOS.vdi (UUID: 771d6b7b-eb29-464b-b9eb-9e4d03e43ea9)
+NIC 1: MAC: 080027C989C8, Attachment: NAT, Cable connected: off, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
+NIC 2: MAC: 0800276684E9, Attachment: Host-only Interface 'vboxnet0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: PS/2 Mouse
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: disabled
+Clipboard Mode: Bidirectional
+VRDE: disabled
+USB: enabled
+
+USB Device Filters:
+
+<none>
+
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: FormationCFengine
+Guest OS: Debian (64 bit)
+UUID: b8b35683-eb17-4689-8213-6a46b28b139f
+Config file: /home/normation/VirtualBox VMs/FormationCFengine/FormationCFengine.vbox
+Snapshot folder: /home/normation/VirtualBox VMs/FormationCFengine/Snapshots
+Log folder: /home/normation/VirtualBox VMs/FormationCFengine/Logs
+Hardware UUID: b8b35683-eb17-4689-8213-6a46b28b139f
+Memory size: 384MB
+Page Fusion: off
+VRAM size: 12MB
+CPU exec cap: 100%
+HPET: off
+Chipset: piix3
+Firmware: BIOS
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): HardDisk
+Boot Device (2): Not Assigned
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: off
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2011-06-17T14:51:25.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): Contrôleur IDE
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Bootable (0): on
+Storage Controller Name (1): Contrôleur SATA
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+Storage Controller Bootable (1): on
+Contrôleur IDE (1, 0): /dev/sr0 (UUID: 00445644-0000-0000-2f64-65762f737230)
+Contrôleur SATA (0, 0): /home/normation/VirtualBox VMs/FormationCFengine/FormationCFengine.vdi (UUID: c126e75e-b5d5-41e6-b148-541eed583c96)
+NIC 1: MAC: 0800279BA8C4, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
+NIC 2: MAC: 080027F037C9, Attachment: Host-only Interface 'vboxnet0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: enabled (Driver: PulseAudio, Controller: AC97)
+Clipboard Mode: Bidirectional
+VRDE: disabled
+USB: enabled
+
+USB Device Filters:
+
+Index: 0
+Active: yes
+Name: USB DISK 2.0 [0100]
+VendorId: 13fe
+ProductId: 1a00
+Revision: 0100
+Manufacturer:
+Product: USB DISK 2.0
+Remote: 0
+Serial Number: 07731D3906F9
+
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
+Name: Debian Maître - Squeeze
+Guest OS: Debian (64 bit)
+UUID: ab6afdd6-aa78-4a22-8fc9-02b471c9084c
+Config file: /home/normation/VirtualBox VMs/Debian Maître - Squeeze/Debian Maître - Squeeze.vbox
+Snapshot folder: /home/normation/VirtualBox VMs/Debian Maître - Squeeze/Snapshots
+Log folder: /home/normation/VirtualBox VMs/Debian Maître - Squeeze/Logs
+Hardware UUID: ab6afdd6-aa78-4a22-8fc9-02b471c9084c
+Memory size: 1024MB
+Page Fusion: off
+VRAM size: 12MB
+CPU exec cap: 100%
+HPET: off
+Chipset: piix3
+Firmware: BIOS
+Number of CPUs: 1
+Synthetic Cpu: off
+CPUID overrides: None
+Boot menu mode: message and menu
+Boot Device (1): Floppy
+Boot Device (2): DVD
+Boot Device (3): HardDisk
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: off
+Time offset: 0 ms
+RTC: UTC
+Hardw. virt.ext: on
+Hardw. virt.ext exclusive: on
+Nested Paging: on
+Large Pages: off
+VT-x VPID: on
+State: powered off (since 2012-04-04T17:47:33.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller Name (0): Contrôleur IDE
+Storage Controller Type (0): PIIX4
+Storage Controller Instance Number (0): 0
+Storage Controller Max Port Count (0): 2
+Storage Controller Port Count (0): 2
+Storage Controller Bootable (0): on
+Storage Controller Name (1): Contrôleur SATA
+Storage Controller Type (1): IntelAhci
+Storage Controller Instance Number (1): 0
+Storage Controller Max Port Count (1): 30
+Storage Controller Port Count (1): 1
+Storage Controller Bootable (1): on
+Contrôleur IDE (1, 0): Empty
+Contrôleur SATA (0, 0): /home/normation/VirtualBox VMs/Debian Maître - Squeeze/Debian Maître - Squeeze.vdi (UUID: 19db8e90-4fd6-4294-81da-0a5d0d6cf94e)
+NIC 1: MAC: 0800279FE582, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
+NIC 2: MAC: 080027DC79DF, Attachment: Host-only Interface 'vboxnet0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+Pointing Device: USB Tablet
+Keyboard Device: PS/2 Keyboard
+UART 1: disabled
+UART 2: disabled
+Audio: disabled
+Clipboard Mode: Bidirectional
+VRDE: disabled
+USB: enabled
+
+USB Device Filters:
+
+<none>
+
+Shared folders: <none>
+
+Guest:
+
+Configured memory balloon size: 0 MB
+
+
diff --git a/t/inventory/virtualization/virtualbox.t b/t/inventory/virtualization/virtualbox.t
index 8a77466..51b4a9e 100755
--- a/t/inventory/virtualization/virtualbox.t
+++ b/t/inventory/virtualization/virtualbox.t
@@ -209,6 +209,62 @@ my %tests = (
UUID => 'd1fe6cfa-80c6-41ae-9f4b-2a15dbafcf2c',
VCPU => 1
}
+ ],
+ sample3 => [
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Node 1 : Debian',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '256MB',
+ UUID => 'e8e1f52d-700b-4fe8-b024-db04550eaddc',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Node 2 : Debian',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '256MB',
+ UUID => '1922b52b-aa28-4d4a-b384-2d3429e3a6ad',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Node 3 : CentOS',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '256MB',
+ UUID => 'a93b30fb-c0f8-4dbf-b439-f6e26d923cf7',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Node 4 : CentOS',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '256MB',
+ UUID => '677daaa1-3e7a-441a-91be-449e02c82dd0',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'FormationCFengine',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '384MB',
+ UUID => 'b8b35683-eb17-4689-8213-6a46b28b139f',
+ VCPU => 1
+ },
+ {
+ VMTYPE => 'VirtualBox',
+ NAME => 'Debian Maître - Squeeze',
+ SUBSYSTEM => 'Oracle VM VirtualBox',
+ STATUS => 'off',
+ MEMORY => '1024MB',
+ UUID => 'ab6afdd6-aa78-4a22-8fc9-02b471c9084c',
+ VCPU => 1
+ }
]
);
================================================================
Commit: 0de099950db488ebe78263fafad0bb760c94b254
https://github.com/fusinv/fusioninventory-agent/commit/0de099950db488ebe78263fafad0bb760c94b254
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-11 (Wed, 11 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent.pm
Log Message:
-----------
don't hide useful debug message
If a package fails to build, we show the error message on debug2
diff --git a/lib/FusionInventory/Agent.pm b/lib/FusionInventory/Agent.pm
index ce06f78..f9f4e14 100644
--- a/lib/FusionInventory/Agent.pm
+++ b/lib/FusionInventory/Agent.pm
@@ -385,7 +385,7 @@ sub _getTaskVersion {
my $logger = $self->{logger};
if (!$module->require()) {
- $logger->debug2("module $module does not compile") if $logger;
+ $logger->debug2("module $module does not compile: $@") if $logger;
return;
}
================================================================
Commit: e40321b1ac7e4946ece59af068e4bc9394c28554
https://github.com/fusinv/fusioninventory-agent/commit/e40321b1ac7e4946ece59af068e4bc9394c28554
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-11 (Wed, 11 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
R resources/virtualization/xm/sample1
A resources/virtualization/xm/xm_list
A resources/virtualization/xm/xm_list_-l_vmname
M t/inventory/virtualization/xen.t
Log Message:
-----------
fix: UUID in Xen have ")"
Without this patch, the Xen VM UUID includes a trailing ')' caracter.
closes: #1562
Reported-by: DuyLong LE <dle at unistra.fr>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
index 60c5ba1..b1efe5f 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
@@ -19,9 +19,8 @@ sub doInventory {
my $command = 'xm list';
foreach my $machine (_getVirtualMachines(command => $command, logger => $logger)) {
- my $uuid = getFirstMatch(
+ my $uuid = _getUUID(
command => "xm list -l $machine->{NAME}",
- pattern => qr/\s+.*uuid\s+(.*)/,
logger => $logger
);
$machine->{UUID} = $uuid;
@@ -31,6 +30,17 @@ sub doInventory {
}
}
+sub _getUUID {
+ my (%params) = @_;
+
+ my $uuid = getFirstMatch(
+ pattern => qr/\s+.*uuid\s+([^\)]*)/,
+ %params
+ );
+
+ return $uuid;
+}
+
sub _getVirtualMachines {
my $handle = getFileHandle(@_);
diff --git a/resources/virtualization/xm/sample1 b/resources/virtualization/xm/sample1
deleted file mode 100644
index 850746a..0000000
--- a/resources/virtualization/xm/sample1
+++ /dev/null
@@ -1,7 +0,0 @@
-Name ID Mem(MiB) VCPUs State Time(s)
-Domain-0 0 98 1 r----- 5068.6
-Fedora3 164 128 1 r----- 7.6
-Fedora4 165 128 1 ------ 0.6
-Mandrake2006 166 128 1 -b---- 3.6
-Mandrake10.2 167 128 1 ------ 2.5
-Suse9.2 168 100 1 ------ 1.8
diff --git a/resources/virtualization/xm/xm_list b/resources/virtualization/xm/xm_list
new file mode 100644
index 0000000..850746a
--- /dev/null
+++ b/resources/virtualization/xm/xm_list
@@ -0,0 +1,7 @@
+Name ID Mem(MiB) VCPUs State Time(s)
+Domain-0 0 98 1 r----- 5068.6
+Fedora3 164 128 1 r----- 7.6
+Fedora4 165 128 1 ------ 0.6
+Mandrake2006 166 128 1 -b---- 3.6
+Mandrake10.2 167 128 1 ------ 2.5
+Suse9.2 168 100 1 ------ 1.8
diff --git a/resources/virtualization/xm/xm_list_-l_vmname b/resources/virtualization/xm/xm_list_-l_vmname
new file mode 100644
index 0000000..17ef4a8
--- /dev/null
+++ b/resources/virtualization/xm/xm_list_-l_vmname
@@ -0,0 +1,95 @@
+(domain
+ (domid 34)
+ (cpu_weight 27500)
+ (cpu_cap 0)
+ (on_crash restart)
+ (uuid 0004fb00-0006-0000-4acc-3678187fb85c)
+ (bootloader_args -q)
+ (vcpus 2)
+ (name 0004fb00000600004acc3678187fb85c)
+ (on_poweroff destroy)
+ (on_reboot restart)
+ (cpus (() ()))
+ (description '')
+ (bootloader /usr/bin/pygrub)
+ (maxmem 2048)
+ (memory 2048)
+ (shadow_memory 0)
+ (features '')
+ (on_xend_start ignore)
+ (on_xend_stop ignore)
+ (start_time 1332281343.74)
+ (cpu_time 4822.14137234)
+ (online_vcpus 2)
+ (image
+ (linux
+ (kernel '')
+ (expose_host_uuid 0)
+ (superpages 0)
+ (tsc_mode 0)
+ (videoram 4)
+ (pci ())
+ (nomigrate 0)
+ (device_model /usr/lib/xen/bin/qemu-dm)
+ (notes
+ (HV_START_LOW 18446603336221196288)
+ (FEATURES '!writable_page_tables|pae_pgdir_above_4gb')
+ (VIRT_BASE 18446744071562067968)
+ (GUEST_VERSION 2.6)
+ (PADDR_OFFSET 0)
+ (GUEST_OS linux)
+ (HYPERCALL_PAGE 18446744071578882048)
+ (LOADER generic)
+ (SUSPEND_CANCEL 1)
+ (PAE_MODE yes)
+ (ENTRY 18446744071590609408)
+ (XEN_VERSION xen-3.0)
+ )
+ )
+ )
+ (status 2)
+ (state -b----)
+ (store_mfn 36383344)
+ (console_mfn 36383343)
+ (device
+ (vif
+ (bridge 0004fb0010baa08)
+ (mac 00:21:f6:01:02:03)
+ (script /etc/xen/scripts/vif-bridge)
+ (uuid 866122fd-86e0-51f5-a1a8-a0d3345390d2)
+ (backend 0)
+ )
+ )
+ (device
+ (vbd
+ (protocol x86_64-abi)
+ (uuid 696f80bd-204d-8e8d-c446-fdeb33587b41)
+ (bootable 1)
+ (dev xvda:disk)
+ (uname
+ file:/Repositories/0004fb00000300006629b4e4211cf999/VirtualDisks/0004fb0000120000fd104eecf5e5926b.img
+ )
+ (mode w)
+ (backend 0)
+ (VDI '')
+ )
+ )
+ (device (vkbd (backend 0)))
+ (device
+ (vfb
+ (vncunused 1)
+ (vnc 1)
+ (xauthority //.Xauthority)
+ (vnclisten 127.0.0.1)
+ (location 127.0.0.1:5905)
+ (uuid bf589d9a-57e2-aaa2-add7-db481bf3af69)
+ )
+ )
+ (device
+ (console
+ (protocol vt100)
+ (location 2)
+ (uuid ab6c0df7-966a-5a56-5e19-514d473d9a3f)
+ )
+ )
+)
diff --git a/t/inventory/virtualization/xen.t b/t/inventory/virtualization/xen.t
index 2786ac2..f68ceba 100755
--- a/t/inventory/virtualization/xen.t
+++ b/t/inventory/virtualization/xen.t
@@ -7,8 +7,8 @@ use Test::More;
use FusionInventory::Agent::Task::Inventory::Input::Virtualization::Xen;
-my %tests = (
- sample1 => [
+my %tests_xm_list = (
+ xm_list => [
{
NAME => 'Fedora3',
SUBSYSTEM => 'xm',
@@ -57,11 +57,22 @@ my %tests = (
]
);
-plan tests => scalar keys %tests;
-foreach my $test (keys %tests) {
+my %tests_getUUID = (
+ 'xm_list_-l_vmname' => '0004fb00-0006-0000-4acc-3678187fb85c'
+);
+
+plan tests => scalar keys (%tests_xm_list) + scalar keys (%tests_getUUID);
+
+foreach my $test (keys %tests_xm_list) {
my $file = "resources/virtualization/xm/$test";
my @machines = FusionInventory::Agent::Task::Inventory::Input::Virtualization::Xen::_getVirtualMachines(file => $file);
- is_deeply(\@machines, $tests{$test}, $test);
+ is_deeply(\@machines, $tests_xm_list{$test}, $test);
+}
+
+foreach my $test (keys %tests_getUUID) {
+ my $file = "resources/virtualization/xm/$test";
+ my $uuid = FusionInventory::Agent::Task::Inventory::Input::Virtualization::Xen::_getUUID(file => $file);
+ is_deeply($uuid, $tests_getUUID{$test}, $test);
}
================================================================
Commit: 459b43bb954275b76a7f25ef92c5789f06c989b2
https://github.com/fusinv/fusioninventory-agent/commit/459b43bb954275b76a7f25ef92c5789f06c989b2
Author: Vincent Membré <vincent.membre at normation.com>
Date: 2012-04-12 (Thu, 12 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/SPARC.pm
Log Message:
-----------
SPARC arch type mismatch
for SPARC Architecture, ARCH is set to ARM (line 42)
closes: #1573
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/SPARC.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/SPARC.pm
index e0eef88..60e9bfa 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/SPARC.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/SPARC.pm
@@ -39,7 +39,7 @@ sub _getCPUsFromProc {
my @cpus;
foreach (1 .. $cpu->{'ncpus probed'}) {
push @cpus, {
- ARCH => 'ARM',
+ ARCH => 'SPARC',
TYPE => $cpu->{cpu},
};
}
================================================================
Commit: d9adcc658d7726f4c1a5e2410f4f5058e3c4be38
https://github.com/fusinv/fusioninventory-agent/commit/d9adcc658d7726f4c1a5e2410f4f5058e3c4be38
Author: Vincent Membré <vincent.membre at normation.com>
Date: 2012-04-12 (Thu, 12 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VirtualBox.pm
Log Message:
-----------
VM : Invalid status with VirtualBox
This changes add support most (all?) of VirtalBox support status.
closes: #1547
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VirtualBox.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VirtualBox.pm
index ccbbccf..c9c08e5 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VirtualBox.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/VirtualBox.pm
@@ -71,6 +71,21 @@ sub _parseVBoxManage {
my (@machines, $machine, $index);
+ my %status_list = (
+ 'powered off' => 'off',
+ 'saved' => 'off',
+ 'teleported' => 'off',
+ 'aborted' => 'crashed',
+ 'stuck' => 'blocked',
+ 'teleporting' => 'paused',
+ 'live snapshotting' => 'running',
+ 'starting' => 'running',
+ 'stopping' => 'dying',
+ 'saving' => 'dying',
+ 'restoring' => 'running',
+ 'running' => 'running',
+ 'paused' => 'paused'
+ );
while (my $line = <$handle>) {
chomp $line;
@@ -93,7 +108,7 @@ sub _parseVBoxManage {
} elsif ($line =~ m/^Memory size:\s+(.+)/ ) {
$machine->{MEMORY} = $1;
} elsif ($line =~ m/^State:\s+(.+) \(/) {
- $machine->{STATUS} = $1 eq 'powered off' ? 'off' : $1;
+ $machine->{STATUS} = $status_list{$1};
} elsif ($line =~ m/^Index:\s+(\d+)$/) {
$index = $1;
}
================================================================
Commit: 0d6b7787938d51a0d18a0cc3674e43e4f7df2812
https://github.com/fusinv/fusioninventory-agent/commit/0d6b7787938d51a0d18a0cc3674e43e4f7df2812
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-12 (Thu, 12 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
Log Message:
-----------
drop useless intermediate variable
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
index b1efe5f..b1cd9bb 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
@@ -33,12 +33,10 @@ sub doInventory {
sub _getUUID {
my (%params) = @_;
- my $uuid = getFirstMatch(
- pattern => qr/\s+.*uuid\s+([^\)]*)/,
- %params
- );
-
- return $uuid;
+ return getFirstMatch(
+ pattern => qr/\s+.*uuid\s+([^\)]*)/,
+ %params
+ );
}
sub _getVirtualMachines {
================================================================
Commit: 9c47555de9dcf78ed79127507ddba4c2abed831a
https://github.com/fusinv/fusioninventory-agent/commit/9c47555de9dcf78ed79127507ddba4c2abed831a
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-12 (Thu, 12 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
Log Message:
-----------
more readable regexp
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
index b1cd9bb..91437fc 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
@@ -34,7 +34,7 @@ sub _getUUID {
my (%params) = @_;
return getFirstMatch(
- pattern => qr/\s+.*uuid\s+([^\)]*)/,
+ pattern => qr/\( uuid \s ([^)]+) \)/x,
%params
);
}
================================================================
Commit: 3735ae16c336980facd89b1216d1651946df3db2
https://github.com/fusinv/fusioninventory-agent/commit/3735ae16c336980facd89b1216d1651946df3db2
Author: Marcel Werner <marcel.werner at bt.com>
Date: 2012-04-13 (Fri, 13 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Memory.pm
Log Message:
-----------
fix: Solaris 8 / 9 / 10 SWAP Bug
With the version fusion-inventory-agent 2.2.0-2/3
we have problems with the <SWAP> entry.
The SWAP - Entry in the ocs file is filled with :
<SWAP>free</SWAP>
but should be a number.
like <SWAP>203720256</SWAP>
the problem is located in :
perl/agent/FusionInventory/Agent/Task/Inventory/Input/Solaris/Memory.pm
my $swapSize = getFirstMatch(
command => 'swap -l',
logger => $logger,
pattern => qr/\s+(\S+)$/
);
It should be look like :
my $swapSize = getFirstMatch(
command => 'swap -l',
logger => $logger,
pattern => qr/\s+(\d+)$/
);
A other problem "free" is not the complete swap space on Solaris.
swap -l
swapfile dev swaplo blocks free
/dev/md/dsk/d1 85,1 16 8568176 8568176
better way you do it with:
swap -s
total: 365600k bytes allocated + 14992k reserved = 380592k used, 4472248k available
rg
marcel
closes: #1577
There was an error trying to read the diff from github.com (execution expired)
================================================================
Commit: 33effcd4426f6301bd672bf266c981dd93b99efc
https://github.com/fusinv/fusioninventory-agent/commit/33effcd4426f6301bd672bf266c981dd93b99efc
Author: Gonéri Le Bouder <goneri at rulezlan.org>
Date: 2012-04-13 (Fri, 13 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
Log Message:
-----------
Merge remote-tracking branch 'origin/2.2.x' into 2.2.x
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
index b1efe5f..91437fc 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/Xen.pm
@@ -33,12 +33,10 @@ sub doInventory {
sub _getUUID {
my (%params) = @_;
- my $uuid = getFirstMatch(
- pattern => qr/\s+.*uuid\s+([^\)]*)/,
- %params
- );
-
- return $uuid;
+ return getFirstMatch(
+ pattern => qr/\( uuid \s ([^)]+) \)/x,
+ %params
+ );
}
sub _getVirtualMachines {
================================================================
Commit: d9c31d1e85217fd11be28f1f0df699a855ae3df1
https://github.com/fusinv/fusioninventory-agent/commit/d9c31d1e85217fd11be28f1f0df699a855ae3df1
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-16 (Mon, 16 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Solaris.pm
Log Message:
-----------
more explicit implementation and documentation
diff --git a/lib/FusionInventory/Agent/Tools/Solaris.pm b/lib/FusionInventory/Agent/Tools/Solaris.pm
index c249d71..3e6588e 100644
--- a/lib/FusionInventory/Agent/Tools/Solaris.pm
+++ b/lib/FusionInventory/Agent/Tools/Solaris.pm
@@ -37,12 +37,9 @@ memoize('getModel');
memoize('getClass');
sub getZone {
-
- return 'global' unless canRun('zonename');
-
- my $zone = getFirstLine(command => 'zonename');
-
- return $zone;
+ return canRun('zonename') ?
+ getFirstLine(command => 'zonename') : # actual zone name
+ 'global'; # outside zone name
}
sub getModel {
@@ -118,7 +115,7 @@ This module provides some generic functions for Solaris.
=head2 getZone()
-Returns system zone.
+Returns current zone name, or 'global' if there is no defined zone.
=head2 getModel()
================================================================
Commit: 160683a2f49a35abc7f7e8df2e6c67226a0dc225
https://github.com/fusinv/fusioninventory-agent/commit/160683a2f49a35abc7f7e8df2e6c67226a0dc225
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-16 (Mon, 16 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Tools/Solaris.pm
Log Message:
-----------
more explicit implementation and documentation
diff --git a/lib/FusionInventory/Agent/Tools/Solaris.pm b/lib/FusionInventory/Agent/Tools/Solaris.pm
index 3e6588e..bc7778b 100644
--- a/lib/FusionInventory/Agent/Tools/Solaris.pm
+++ b/lib/FusionInventory/Agent/Tools/Solaris.pm
@@ -43,21 +43,9 @@ sub getZone {
}
sub getModel {
-
- my $zone = getZone();
-
- my $model;
- if ($zone) {
- # first, we need determinate on which model of Sun Server we run,
- # because prtdiags output (and with that memconfs output) is differend
- # from server model to server model
- # we try to classified our box in one of the known classes
- $model = getFirstLine(command => 'uname -i');
- } else {
- $model = "Solaris Containers";
- }
-
- return $model;
+ return getZone() eq 'global' ?
+ getFirstLine(command => 'uname -i') :
+ 'Solaris Containers';
}
sub getClass {
@@ -119,8 +107,8 @@ Returns current zone name, or 'global' if there is no defined zone.
=head2 getModel()
-Returns system model.
+Returns system model, as a string.
=head2 getclass()
-Returns system class.
+Returns system class, as a symbolic constant.
================================================================
Commit: 2390678af5a2bbf0af58c627796cf2cdb7606fa6
https://github.com/fusinv/fusioninventory-agent/commit/2390678af5a2bbf0af58c627796cf2cdb7606fa6
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-16 (Mon, 16 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/SolarisZones.pm
Log Message:
-----------
disable inside containers (close #1586)
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/SolarisZones.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/SolarisZones.pm
index 2909a3e..8f913f0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/SolarisZones.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Virtualization/SolarisZones.pm
@@ -4,10 +4,12 @@ use strict;
use warnings;
use FusionInventory::Agent::Tools;
+use FusionInventory::Agent::Tools::Solaris;
sub isEnabled {
return
canRun('zoneadm') &&
+ getZone() eq 'global' &&
_check_solaris_valid_release('/etc/release');
}
================================================================
Commit: 7a77851dfb9834e51a51ab5a320fbebc0b5dd81c
https://github.com/fusinv/fusioninventory-agent/commit/7a77851dfb9834e51a51ab5a320fbebc0b5dd81c
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-16 (Mon, 16 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
Log Message:
-----------
fix container detection (close #1586)
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
index 65c1546..975b91a 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Bios.pm
@@ -20,9 +20,7 @@ sub doInventory {
my ($bios, $hardware);
- my $zone = getZone();
- if ($zone) {
-
+ if (getZone() eq 'global') {
my $arch;
if (canRun('showrev')) {
my $infos = _parseShowRev(logger => $logger);
================================================================
Commit: 44748cb376111c18b59c3b4dbe438cc65029103c
https://github.com/fusinv/fusioninventory-agent/commit/44748cb376111c18b59c3b4dbe438cc65029103c
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-16 (Mon, 16 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Memory.pm
Log Message:
-----------
no need to identify model for generic informations
Close: #1594
Reported-by: Marcel Werner <marcel.werner at bt.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Memory.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Memory.pm
index 75345ea..4c7bef8 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Memory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/Memory.pm
@@ -16,10 +16,29 @@ sub doInventory {
my $inventory = $params{inventory};
my $logger = $params{logger};
+ my $memorySize = getFirstMatch(
+ command => 'prtconf',
+ logger => $logger,
+ pattern => qr/^Memory\ssize:\s+(\S+)/
+ );
+
+ my $swapSize = getFirstMatch(
+ command => 'swap -l',
+ logger => $logger,
+ pattern => qr/\s+(\d+)$/
+ );
+
+ $inventory->setHardware({
+ MEMORY => $memorySize,
+ SWAP => $swapSize
+ });
+
my $class = getClass();
if (!$class) {
- $logger->debug("sorry, unknown model, could not detect memory configuration");
+ $logger->debug(
+ "Unknown model, impossible to detect memory configuration"
+ );
return;
}
@@ -39,24 +58,6 @@ sub doInventory {
entry => $memory
);
}
-
- my $memorySize = getFirstMatch(
- command => 'prtconf',
- logger => $logger,
- pattern => qr/^Memory\ssize:\s+(\S+)/
- );
-
- my $swapSize = getFirstMatch(
- command => 'swap -l',
- logger => $logger,
- pattern => qr/\s+(\d+)$/
- );
-
- $inventory->setHardware({
- MEMORY => $memorySize,
- SWAP => $swapSize
- });
-
}
sub _getMemories1 {
================================================================
Commit: 6984f218ead6e378e77158d1fb735ed5967c7b6e
https://github.com/fusinv/fusioninventory-agent/commit/6984f218ead6e378e77158d1fb735ed5967c7b6e
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-16 (Mon, 16 Apr 2012)
Changed paths:
A resources/solaris/memconf/sample3
Log Message:
-----------
initial import
diff --git a/resources/solaris/memconf/sample3 b/resources/solaris/memconf/sample3
new file mode 100644
index 0000000..5fa3f0d
--- /dev/null
+++ b/resources/solaris/memconf/sample3
@@ -0,0 +1,13 @@
+hostname: xxxxxxxxxxxx
+Sun/Oracle America, Inc. SPARC T3-1 (16-Core 8-Thread SPARC-T3 1649MHz)
+Memory Interleave Factor: 2-way
+socket MB/CMP0/BOB0/CH0/D0 has a Samsung 511-1616 2GB DDR3 DIMM
+socket MB/CMP0/BOB0/CH1/D0 has a Samsung 511-1616 2GB DDR3 DIMM
+socket MB/CMP0/BOB1/CH0/D0 has a Samsung 511-1616 2GB DDR3 DIMM
+socket MB/CMP0/BOB1/CH1/D0 has a Samsung 511-1616 2GB DDR3 DIMM
+socket MB/CMP0/BOB2/CH0/D0 has a Samsung 511-1616 2GB DDR3 DIMM
+socket MB/CMP0/BOB2/CH1/D0 has a Samsung 511-1616 2GB DDR3 DIMM
+socket MB/CMP0/BOB3/CH0/D0 has a Samsung 511-1616 2GB DDR3 DIMM
+socket MB/CMP0/BOB3/CH1/D0 has a Samsung 511-1616 2GB DDR3 DIMM
+empty sockets: MB/CMP0/BOB0/CH1/D1 MB/CMP0/BOB1/CH1/D1 MB/CMP0/BOB2/CH1/D1 MB/CMP0/BOB3/CH1/D1 MB/CMP0/BOB0/CH0/D1 MB/CMP0/BOB1/CH0/D1 MB/CMP0/BOB2/CH0/D1 MB/CMP0/BOB3/CH0/D1
+total memory = 32768MB (32GB)
================================================================
Commit: ae88d8e176342fb2460173a5c21fbeb75c185cb1
https://github.com/fusinv/fusioninventory-agent/commit/ae88d8e176342fb2460173a5c21fbeb75c185cb1
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-16 (Mon, 16 Apr 2012)
Changed paths:
M t/inventory/solaris/cpu.t
Log Message:
-----------
oops
diff --git a/t/inventory/solaris/cpu.t b/t/inventory/solaris/cpu.t
index c71b4ea..27d9f8e 100755
--- a/t/inventory/solaris/cpu.t
+++ b/t/inventory/solaris/cpu.t
@@ -17,6 +17,16 @@ my %memconf_tests = (
CORE => '2'
},
],
+ sample3 => [
+ 1,
+ {
+ NAME => 'SPARC-T3 (16-Core 8-Thread)',
+ MANUFACTURER => 'Sun Microsystems',
+ SPEED => '1649',
+ CORE => '16',
+ THREAD => '8'
+ },
+ ],
sample2 => [
1,
{
================================================================
Commit: 32251413f6bda06c04ca273acb0d7807b2273848
https://github.com/fusinv/fusioninventory-agent/commit/32251413f6bda06c04ca273acb0d7807b2273848
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-16 (Mon, 16 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
Log Message:
-----------
fix Sun pattern matching
Close: #1583
Reported-by: Marcel Werner <marcel.werner at bt.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
index 6fc0d9f..80a64bb 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
@@ -53,7 +53,7 @@ sub doInventory {
sub _getCPUFromMemconf {
my $spec = getFirstMatch(
command => 'memconf',
- pattern => qr/^((Sun\s|Fujitsu|Intel).*\d+(G|M)Hz\)).*$/x,
+ pattern => qr/^((Sun|Fujitsu|Intel).*\d+(G|M)Hz\)).*$/x,
@_
);
return _parseSpec($spec);
@@ -63,9 +63,9 @@ sub _parseCoreString {
my ($v) = @_;
return
- $v =~ /dual/i ? 2 :
- $v =~ /quad/i ? 4 :
- $v =~ /(\d+)-(core|thread)/ ? $1 :
+ $v =~ /dual/i ? 2 :
+ $v =~ /quad/i ? 4 :
+ $v =~ /(\d+)-\w+/ ? $1 :
$v;
}
@@ -75,9 +75,8 @@ sub _parseSpec {
my $manufacturer;
if ($spec =~ /(AMD|Fujitsu|Intel)\s/g) {
$manufacturer = $1;
- } elsif ($spec =~ /(Sun)\s/) {
- $manufacturer = $1;
- $manufacturer =~ s/.*Sun.*/Sun Microsystems/;
+ } elsif ($spec =~ /Sun/) {
+ $manufacturer = 'Sun Microsystems';
}
# 4 X UltraSPARC-III 750MHz
@@ -103,7 +102,8 @@ sub _parseSpec {
# 8-core quad-thread UltraSPARC-T1 1000MHz
# 8-core 8-thread UltraSPARC-T2 1165MHz
- if ($spec =~ /(\d+ -core) \s (\S+) \s (\S+) \s (\d+) MHz/x) {
+ # 16-Core 8-Thread SPARC-T3 1649MHz
+ if ($spec =~ /(\d+ -[cC]ore) \s (\S+) \s (\S+) \s (\d+) MHz/x) {
return 1, {
MANUFACTURER => $manufacturer,
NAME => $3 . " (" . $1 . " " . $2 . ")",
================================================================
Commit: 37e1cedf254d1aa60945f0349e4cbd8e951da084
https://github.com/fusinv/fusioninventory-agent/commit/37e1cedf254d1aa60945f0349e4cbd8e951da084
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-16 (Mon, 16 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
Log Message:
-----------
better regexp
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
index 80a64bb..81a0076 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Solaris/CPU.pm
@@ -53,7 +53,7 @@ sub doInventory {
sub _getCPUFromMemconf {
my $spec = getFirstMatch(
command => 'memconf',
- pattern => qr/^((Sun|Fujitsu|Intel).*\d+(G|M)Hz\)).*$/x,
+ pattern => qr/^((?:Sun|Fujitsu|Intel) .* \d+ [GM]Hz\))/x,
@_
);
return _parseSpec($spec);
================================================================
Commit: 234955cd8389ce166c60fbc4a7ab6e28f6eb9021
https://github.com/fusinv/fusioninventory-agent/commit/234955cd8389ce166c60fbc4a7ab6e28f6eb9021
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-16 (Mon, 16 Apr 2012)
Changed paths:
A resources/lvm/linux/pvs/linux-2
Log Message:
-----------
initial import
diff --git a/resources/lvm/linux/pvs/linux-2 b/resources/lvm/linux/pvs/linux-2
new file mode 100644
index 0000000..eddce83
--- /dev/null
+++ b/resources/lvm/linux/pvs/linux-2
@@ -0,0 +1,3 @@
+ /dev/sda2 vg00 lvm2 a-- 311452.24 125694.90 CnCKHH-tnlS-BFL5-qRMa-HaV2-10zm-kNIpEp 9282 311452.24 OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn
+ /dev/sdb2 vg00 lvm2 a-- 58921.58 18119.39 XMzcNr-5qrL-pXk1-9Ycl-FyfN-nXPe-ndRvHF 1756 58921.58 OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn
+ /dev/sdc1 vg00 lvm2 a-- 500095.25 241323.47 GnT78t-kb92-k8di-1uUv-28HK-H6za-SXe2EZ 14904 500095.25 OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn
================================================================
Commit: 4261c7068fa1a80d4d097b966f92be7c2bf1e9e8
https://github.com/fusinv/fusioninventory-agent/commit/4261c7068fa1a80d4d097b966f92be7c2bf1e9e8
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-16 (Mon, 16 Apr 2012)
Changed paths:
M t/inventory/linux/lvm.t
Log Message:
-----------
add new test case
diff --git a/t/inventory/linux/lvm.t b/t/inventory/linux/lvm.t
index b0aa3a3..e1417be 100644
--- a/t/inventory/linux/lvm.t
+++ b/t/inventory/linux/lvm.t
@@ -1,14 +1,12 @@
#!/usr/bin/perl
-use strict;
+use strict;
use warnings;
-use FusionInventory::Agent::Task::Inventory::Input::Linux::LVM;
-
use Test::More;
+use FusionInventory::Agent::Task::Inventory::Input::Linux::LVM;
-plan tests => 3;
my %lvs = (
'linux-1' => [
{
@@ -113,6 +111,41 @@ my %pvs = (
PV_UUID => 'xkxfmu-fQLt-DtKZ-YnkY-vwcj-JqC2-WmQddD',
PE_SIZE => 4
}
+ ],
+ 'linux-2' => [
+ {
+ SIZE => 311452,
+ FORMAT => 'lvm2',
+ ATTR => 'a--',
+ FREE => 125694,
+ DEVICE => '/dev/sda2',
+ PV_NAME => 'vg00',
+ PV_PE_COUNT => 9282,
+ PE_SIZE => 33,
+ PV_UUID => 'CnCKHH-tnlS-BFL5-qRMa-HaV2-10zm-kNIpEp'
+ },
+ {
+ SIZE => 58921,
+ FORMAT => 'lvm2',
+ ATTR => 'a--',
+ FREE => 18119,
+ DEVICE => '/dev/sdb2',
+ PV_NAME => 'vg00',
+ PV_PE_COUNT => 1756,
+ PE_SIZE => 33,
+ PV_UUID => 'XMzcNr-5qrL-pXk1-9Ycl-FyfN-nXPe-ndRvHF'
+ },
+ {
+ SIZE => 500095,
+ FORMAT => 'lvm2',
+ ATTR => 'a--',
+ FREE => 241323,
+ DEVICE => '/dev/sdc1',
+ PV_NAME => 'vg00',
+ PV_PE_COUNT => 14904,
+ PE_SIZE => 33,
+ PV_UUID => 'GnT78t-kb92-k8di-1uUv-28HK-H6za-SXe2EZ'
+ }
]
);
@@ -151,6 +184,11 @@ my %vgs = (
]
);
+plan tests =>
+ (scalar keys %pvs) +
+ (scalar keys %lvs) +
+ (scalar keys %vgs);
+
foreach my $test (keys %pvs) {
my @pvs = FusionInventory::Agent::Task::Inventory::Input::Linux::LVM::_getPhysicalVolumes(file => 'resources/lvm/linux/pvs/'.$test);
is_deeply(\@pvs, $pvs{$test}, '_parsePvs()');
================================================================
Commit: afac647c0bc98b4f0168563f9976f76a56ccb4a3
https://github.com/fusinv/fusioninventory-agent/commit/afac647c0bc98b4f0168563f9976f76a56ccb4a3
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-16 (Mon, 16 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
M lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
M resources/lvm/linux/pvs/README
M t/inventory/linux/lvm.t
Log Message:
-----------
Add volume group identifier
Close: #1585
Reported-by: Remi Collet <Remi at FamilleCollet.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
index 143f50d..57e9241 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
@@ -25,7 +25,7 @@ sub doInventory {
}
foreach my $volume (_getPhysicalVolumes(
- command => 'pvs --noheading --nosuffix --units M -o +pv_uuid,pv_pe_count,pv_size',
+ command => 'pvs --noheading --nosuffix --units M -o +pv_uuid,pv_pe_count,pv_size,vg_uuid',
logger => $logger
)) {
$inventory->addEntry(section => 'PHYSICAL_VOLUMES', entry => $volume);
@@ -79,7 +79,8 @@ sub _getPhysicalVolumes {
FREE => int($infos[6]||0),
PV_UUID => $infos[7],
PV_PE_COUNT => $infos[8],
- PE_SIZE => int($infos[5] / $infos[8])
+ PE_SIZE => int($infos[5] / $infos[8]),
+ VG_UUID => $infos[10]
};
}
close $handle;
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
index 1242d90..99bcf9a 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
@@ -70,7 +70,7 @@ my %fields = (
LOGICAL_VOLUMES => [ qw/LV_NAME VGN_AME ATTR SIZE LV_UUID SEG_COUNT
VG_UUID/ ],
PHYSICAL_VOLUMES => [ qw/DEVICE PV_NAME PV_PE_COUNT PV_UUID FORMAT ATTR
- SIZE FREE PE_SIZE/ ],
+ SIZE FREE PE_SIZE VG_UUID/ ],
VOLUME_GROUPS => [ qw/VG_NAME PV_COUNT LV_COUNT ATTR SIZE FREE VG_UUID
VG_EXTENT_SIZE/ ],
);
diff --git a/resources/lvm/linux/pvs/README b/resources/lvm/linux/pvs/README
index 34869b4..d3d797f 100644
--- a/resources/lvm/linux/pvs/README
+++ b/resources/lvm/linux/pvs/README
@@ -1 +1 @@
-pvs --noheading --nosuffix --units M -o +pv_uuid,pv_pe_count,pv_size,pv_attr
+pvs --noheading --nosuffix --units M -o +pv_uuid,pv_pe_count,pv_size,pv_attr,vg_uuid
diff --git a/t/inventory/linux/lvm.t b/t/inventory/linux/lvm.t
index e1417be..c7a9153 100644
--- a/t/inventory/linux/lvm.t
+++ b/t/inventory/linux/lvm.t
@@ -86,8 +86,9 @@ my %pvs = (
DEVICE => '/dev/sda5',
PV_NAME => 'lvm',
PV_PE_COUNT => '3778',
+ PE_SIZE => 4,
PV_UUID => 'MjsnP7-GaGC-NIo7-tS3o-gf2t-di2R-eP3Au7',
- PE_SIZE => 4
+ VG_UUID => undef
},
{
SIZE => 2466,
@@ -97,8 +98,9 @@ my %pvs = (
DEVICE => '/dev/sdb1',
PV_NAME => 'lvm2',
PV_PE_COUNT => '588',
+ PE_SIZE => 4,
PV_UUID => 'LNDa6y-PQGQ-gtnc-c7Wc-W2lS-Soaf-Bwu2Me',
- PE_SIZE => 4
+ VG_UUID => undef
},
{
SIZE => 2894,
@@ -108,8 +110,9 @@ my %pvs = (
DEVICE => '/dev/sdb2',
PV_NAME => 'lvm2',
PV_PE_COUNT => '690',
+ PE_SIZE => 4,
PV_UUID => 'xkxfmu-fQLt-DtKZ-YnkY-vwcj-JqC2-WmQddD',
- PE_SIZE => 4
+ VG_UUID => undef
}
],
'linux-2' => [
@@ -122,7 +125,8 @@ my %pvs = (
PV_NAME => 'vg00',
PV_PE_COUNT => 9282,
PE_SIZE => 33,
- PV_UUID => 'CnCKHH-tnlS-BFL5-qRMa-HaV2-10zm-kNIpEp'
+ PV_UUID => 'CnCKHH-tnlS-BFL5-qRMa-HaV2-10zm-kNIpEp',
+ VG_UUID => 'OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn'
},
{
SIZE => 58921,
@@ -133,7 +137,8 @@ my %pvs = (
PV_NAME => 'vg00',
PV_PE_COUNT => 1756,
PE_SIZE => 33,
- PV_UUID => 'XMzcNr-5qrL-pXk1-9Ycl-FyfN-nXPe-ndRvHF'
+ PV_UUID => 'XMzcNr-5qrL-pXk1-9Ycl-FyfN-nXPe-ndRvHF',
+ VG_UUID => 'OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn'
},
{
SIZE => 500095,
@@ -144,7 +149,8 @@ my %pvs = (
PV_NAME => 'vg00',
PV_PE_COUNT => 14904,
PE_SIZE => 33,
- PV_UUID => 'GnT78t-kb92-k8di-1uUv-28HK-H6za-SXe2EZ'
+ PV_UUID => 'GnT78t-kb92-k8di-1uUv-28HK-H6za-SXe2EZ',
+ VG_UUID => 'OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn'
}
]
);
================================================================
Commit: e893713ae13c4e6ca910943301ae09eab402baa7
https://github.com/fusinv/fusioninventory-agent/commit/e893713ae13c4e6ca910943301ae09eab402baa7
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-16 (Mon, 16 Apr 2012)
Changed paths:
A resources/lvm/linux/vgs/linux-2
Log Message:
-----------
initial import
diff --git a/resources/lvm/linux/vgs/linux-2 b/resources/lvm/linux/vgs/linux-2
new file mode 100644
index 0000000..5f6c13c
--- /dev/null
+++ b/resources/lvm/linux/vgs/linux-2
@@ -0,0 +1 @@
+ vg00 3 16 0 wz--n- 870469.07 385137.77 OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn 33.55 CnCKHH-tnlS-BFL5-qRMa-HaV2-10zm-kNIpEp
================================================================
Commit: b2d5a0be7bcfed269ed0ac48a1a5746c4f16bbba
https://github.com/fusinv/fusioninventory-agent/commit/b2d5a0be7bcfed269ed0ac48a1a5746c4f16bbba
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-16 (Mon, 16 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
M resources/lvm/linux/vgs/README
M resources/lvm/linux/vgs/linux-1
M t/inventory/linux/lvm.t
Log Message:
-----------
don't get PV identifier from VG list
As one VG may have several PV, this just result in multiple lines for
the same VG in the output.
Close: #1582
Reported-by: Remi Collet <Remi at FamilleCollet.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
index 57e9241..2c4e802 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
@@ -32,7 +32,7 @@ sub doInventory {
}
foreach my $group (_getVolumeGroups(
- command => 'vgs --noheading --nosuffix --units M -o +vg_uuid,vg_extent_size,pv_uuid',
+ command => 'vgs --noheading --nosuffix --units M -o +vg_uuid,vg_extent_size',
logger => $logger
)) {
$inventory->addEntry(section => 'VOLUME_GROUPS', entry => $group);
diff --git a/resources/lvm/linux/vgs/README b/resources/lvm/linux/vgs/README
index e94e849..dfee8f8 100644
--- a/resources/lvm/linux/vgs/README
+++ b/resources/lvm/linux/vgs/README
@@ -1 +1 @@
-vgs --noheading --nosuffix --units M -o +vg_uuid,vg_extent_size,pv_uuid
+vgs --noheading --nosuffix --units M -o +vg_uuid,vg_extent_size
diff --git a/resources/lvm/linux/vgs/linux-1 b/resources/lvm/linux/vgs/linux-1
index 2b99c60..ff5c9c2 100644
--- a/resources/lvm/linux/vgs/linux-1
+++ b/resources/lvm/linux/vgs/linux-1
@@ -1,3 +1,2 @@
- lvm 1 6 0 wz--n- 15846.08 0 Eubwcw-UFh2-P3Kn-aI6y-qcLT-VCzU-ls49ha 4.19 MjsnP7-GaGC-NIo7-tS3o-gf2t-di2R-eP3Au7
- lvm2 2 2 0 wz--n- 5360.32 5150.61 ZHOqQg-SNQJ-a79U-Jfn1-Az84-e04w-d9zH23 4.19 LNDa6y-PQGQ-gtnc-c7Wc-W2lS-Soaf-Bwu2Me
- lvm2 2 2 0 wz--n- 5360.32 5150.61 ZHOqQg-SNQJ-a79U-Jfn1-Az84-e04w-d9zH23 4.19 xkxfmu-fQLt-DtKZ-YnkY-vwcj-JqC2-WmQddD
+ lvm 1 6 0 wz--n- 15846.08 0 Eubwcw-UFh2-P3Kn-aI6y-qcLT-VCzU-ls49ha 4.19
+ lvm2 2 2 0 wz--n- 5360.32 5150.61 ZHOqQg-SNQJ-a79U-Jfn1-Az84-e04w-d9zH23 4.19
diff --git a/t/inventory/linux/lvm.t b/t/inventory/linux/lvm.t
index c7a9153..5a38065 100644
--- a/t/inventory/linux/lvm.t
+++ b/t/inventory/linux/lvm.t
@@ -176,16 +176,18 @@ my %vgs = (
VG_UUID => 'ZHOqQg-SNQJ-a79U-Jfn1-Az84-e04w-d9zH23',
LV_COUNT => '2',
VG_EXTENT_SIZE => '4.19'
- },
+ }
+ ],
+ 'linux-2' => [
{
- SIZE => 5360,
- ATTR => 'wz--n-',
- VG_NAME => 'lvm2',
- FREE => 5150,
- PV_COUNT => '2',
- VG_UUID => 'ZHOqQg-SNQJ-a79U-Jfn1-Az84-e04w-d9zH23',
- LV_COUNT => '2',
- VG_EXTENT_SIZE => '4.19'
+ 'SIZE' => 870469,
+ 'ATTR' => 'wz--n-',
+ 'VG_NAME' => 'vg00',
+ 'FREE' => 385137,
+ 'PV_COUNT' => '3',
+ 'VG_UUID' => 'OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn',
+ 'LV_COUNT' => '16',
+ 'VG_EXTENT_SIZE' => '33.55'
}
]
);
================================================================
Commit: 6056908a46720665fe918a64403dd8425643098f
https://github.com/fusinv/fusioninventory-agent/commit/6056908a46720665fe918a64403dd8425643098f
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-16 (Mon, 16 Apr 2012)
Changed paths:
M t/inventory/linux/lvm.t
Log Message:
-----------
cosmetics
diff --git a/t/inventory/linux/lvm.t b/t/inventory/linux/lvm.t
index 5a38065..16112df 100644
--- a/t/inventory/linux/lvm.t
+++ b/t/inventory/linux/lvm.t
@@ -180,14 +180,14 @@ my %vgs = (
],
'linux-2' => [
{
- 'SIZE' => 870469,
- 'ATTR' => 'wz--n-',
- 'VG_NAME' => 'vg00',
- 'FREE' => 385137,
- 'PV_COUNT' => '3',
- 'VG_UUID' => 'OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn',
- 'LV_COUNT' => '16',
- 'VG_EXTENT_SIZE' => '33.55'
+ SIZE => 870469,
+ ATTR => 'wz--n-',
+ VG_NAME => 'vg00',
+ FREE => 385137,
+ PV_COUNT => '3',
+ VG_UUID => 'OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn',
+ LV_COUNT => '16',
+ VG_EXTENT_SIZE => '33.55'
}
]
);
@@ -198,16 +198,16 @@ plan tests =>
(scalar keys %vgs);
foreach my $test (keys %pvs) {
- my @pvs = FusionInventory::Agent::Task::Inventory::Input::Linux::LVM::_getPhysicalVolumes(file => 'resources/lvm/linux/pvs/'.$test);
- is_deeply(\@pvs, $pvs{$test}, '_parsePvs()');
+ my @pvs = FusionInventory::Agent::Task::Inventory::Input::Linux::LVM::_getPhysicalVolumes(file => "resources/lvm/linux/pvs/$test");
+ is_deeply(\@pvs, $pvs{$test}, "physical volumes list: $test");
}
foreach my $test (keys %lvs) {
- my @lvs = FusionInventory::Agent::Task::Inventory::Input::Linux::LVM::_getLogicalVolumes(file => 'resources/lvm/linux/lvs/'.$test);
- is_deeply(\@lvs, $lvs{$test}, '_parseLvs()');
+ my @lvs = FusionInventory::Agent::Task::Inventory::Input::Linux::LVM::_getLogicalVolumes(file => "resources/lvm/linux/lvs/$test");
+ is_deeply(\@lvs, $lvs{$test}, "logical volumes list: $test");
}
foreach my $test (keys %vgs) {
- my @vgs = FusionInventory::Agent::Task::Inventory::Input::Linux::LVM::_getVolumeGroups(file => 'resources/lvm/linux/vgs/'.$test);
- is_deeply(\@vgs, $vgs{$test}, '_parseVgs()');
+ my @vgs = FusionInventory::Agent::Task::Inventory::Input::Linux::LVM::_getVolumeGroups(file => "resources/lvm/linux/vgs/$test");
+ is_deeply(\@vgs, $vgs{$test}, "volume groups list: $test");
}
================================================================
Commit: d211274aa8c71602c2d606cb4d219b3b0cfe5f6c
https://github.com/fusinv/fusioninventory-agent/commit/d211274aa8c71602c2d606cb4d219b3b0cfe5f6c
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-17 (Tue, 17 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
M lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
M t/inventory/linux/lvm.t
Log Message:
-----------
There is no name for physical volume, just uuid
Close: #1587
Reported-by: Remi Collet <Remi at FamilleCollet.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
index 2c4e802..1ac7695 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
@@ -72,7 +72,6 @@ sub _getPhysicalVolumes {
push @volumes, {
DEVICE => $infos[1],
- PV_NAME => $infos[2],
FORMAT => $infos[3],
ATTR => $infos[4],
SIZE => int($infos[5]||0),
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
index 99bcf9a..82f2b58 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
@@ -69,7 +69,7 @@ my %fields = (
VMID MAC COMMENT OWNER/ ],
LOGICAL_VOLUMES => [ qw/LV_NAME VGN_AME ATTR SIZE LV_UUID SEG_COUNT
VG_UUID/ ],
- PHYSICAL_VOLUMES => [ qw/DEVICE PV_NAME PV_PE_COUNT PV_UUID FORMAT ATTR
+ PHYSICAL_VOLUMES => [ qw/DEVICE PV_PE_COUNT PV_UUID FORMAT ATTR
SIZE FREE PE_SIZE VG_UUID/ ],
VOLUME_GROUPS => [ qw/VG_NAME PV_COUNT LV_COUNT ATTR SIZE FREE VG_UUID
VG_EXTENT_SIZE/ ],
diff --git a/t/inventory/linux/lvm.t b/t/inventory/linux/lvm.t
index 16112df..3d6e1aa 100644
--- a/t/inventory/linux/lvm.t
+++ b/t/inventory/linux/lvm.t
@@ -84,7 +84,6 @@ my %pvs = (
ATTR => 'a-',
FREE => 0,
DEVICE => '/dev/sda5',
- PV_NAME => 'lvm',
PV_PE_COUNT => '3778',
PE_SIZE => 4,
PV_UUID => 'MjsnP7-GaGC-NIo7-tS3o-gf2t-di2R-eP3Au7',
@@ -96,7 +95,6 @@ my %pvs = (
ATTR => 'a-',
FREE => 2256,
DEVICE => '/dev/sdb1',
- PV_NAME => 'lvm2',
PV_PE_COUNT => '588',
PE_SIZE => 4,
PV_UUID => 'LNDa6y-PQGQ-gtnc-c7Wc-W2lS-Soaf-Bwu2Me',
@@ -108,7 +106,6 @@ my %pvs = (
ATTR => 'a-',
FREE => 2894,
DEVICE => '/dev/sdb2',
- PV_NAME => 'lvm2',
PV_PE_COUNT => '690',
PE_SIZE => 4,
PV_UUID => 'xkxfmu-fQLt-DtKZ-YnkY-vwcj-JqC2-WmQddD',
@@ -122,7 +119,6 @@ my %pvs = (
ATTR => 'a--',
FREE => 125694,
DEVICE => '/dev/sda2',
- PV_NAME => 'vg00',
PV_PE_COUNT => 9282,
PE_SIZE => 33,
PV_UUID => 'CnCKHH-tnlS-BFL5-qRMa-HaV2-10zm-kNIpEp',
@@ -134,7 +130,6 @@ my %pvs = (
ATTR => 'a--',
FREE => 18119,
DEVICE => '/dev/sdb2',
- PV_NAME => 'vg00',
PV_PE_COUNT => 1756,
PE_SIZE => 33,
PV_UUID => 'XMzcNr-5qrL-pXk1-9Ycl-FyfN-nXPe-ndRvHF',
@@ -146,7 +141,6 @@ my %pvs = (
ATTR => 'a--',
FREE => 241323,
DEVICE => '/dev/sdc1',
- PV_NAME => 'vg00',
PV_PE_COUNT => 14904,
PE_SIZE => 33,
PV_UUID => 'GnT78t-kb92-k8di-1uUv-28HK-H6za-SXe2EZ',
================================================================
Commit: 1c3897959ab43805d696e5f9f4d044853ca06012
https://github.com/fusinv/fusioninventory-agent/commit/1c3897959ab43805d696e5f9f4d044853ca06012
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-17 (Tue, 17 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
Log Message:
-----------
move command definition in parsing function
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
index 1ac7695..0cf3bb1 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
@@ -17,30 +17,26 @@ sub doInventory {
my $inventory = $params{inventory};
my $logger = $params{inventory};
- foreach my $volume (_getLogicalVolumes(
- command => 'lvs -a --noheading --nosuffix --units M -o lv_name,vg_name,lv_attr,lv_size,lv_uuid,seg_count',
- logger => $logger
- )) {
+ foreach my $volume (_getLogicalVolumes(logger => $logger)) {
$inventory->addEntry(section => 'LOGICAL_VOLUMES', entry => $volume);
}
- foreach my $volume (_getPhysicalVolumes(
- command => 'pvs --noheading --nosuffix --units M -o +pv_uuid,pv_pe_count,pv_size,vg_uuid',
- logger => $logger
- )) {
+ foreach my $volume (_getPhysicalVolumes(logger => $logger)) {
$inventory->addEntry(section => 'PHYSICAL_VOLUMES', entry => $volume);
}
- foreach my $group (_getVolumeGroups(
- command => 'vgs --noheading --nosuffix --units M -o +vg_uuid,vg_extent_size',
- logger => $logger
- )) {
+ foreach my $group (_getVolumeGroups(logger => $logger)) {
$inventory->addEntry(section => 'VOLUME_GROUPS', entry => $group);
}
}
sub _getLogicalVolumes {
- my $handle = getFileHandle(@_);
+ my (%params) = (
+ command => 'lvs -a --noheading --nosuffix --units M -o lv_name,vg_name,lv_attr,lv_size,lv_uuid,seg_count',
+ @_
+ );
+
+ my $handle = getFileHandle(%params);
return unless $handle;
my @volumes;
@@ -63,7 +59,12 @@ sub _getLogicalVolumes {
}
sub _getPhysicalVolumes {
- my $handle = getFileHandle(@_);
+ my (%params) = (
+ command => 'pvs --noheading --nosuffix --units M -o +pv_uuid,pv_pe_count,pv_size,vg_uuid',
+ @_
+ );
+
+ my $handle = getFileHandle(%params);
return unless $handle;
my @volumes;
@@ -88,7 +89,12 @@ sub _getPhysicalVolumes {
}
sub _getVolumeGroups {
- my $handle = getFileHandle(@_);
+ my (%params) = (
+ command => 'vgs --noheading --nosuffix --units M -o +vg_uuid,vg_extent_size',
+ @_
+ );
+
+ my $handle = getFileHandle(%params);
return unless $handle;
my @groups;
================================================================
Commit: 384643b914bcf67c933acfe4acb3b111c60509b9
https://github.com/fusinv/fusioninventory-agent/commit/384643b914bcf67c933acfe4acb3b111c60509b9
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-17 (Tue, 17 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
Log Message:
-----------
ask for VG id, not name
Close: #1584
Reported-by: Remi Collet <Remi at FamilleCollet.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
index 0cf3bb1..58b86b0 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
@@ -32,7 +32,7 @@ sub doInventory {
sub _getLogicalVolumes {
my (%params) = (
- command => 'lvs -a --noheading --nosuffix --units M -o lv_name,vg_name,lv_attr,lv_size,lv_uuid,seg_count',
+ command => 'lvs -a --noheading --nosuffix --units M -o lv_name,vg_uuid,lv_attr,lv_size,lv_uuid,seg_count',
@_
);
================================================================
Commit: e9aa0f62ce6b56626036783fd636817f9cc120a1
https://github.com/fusinv/fusioninventory-agent/commit/e9aa0f62ce6b56626036783fd636817f9cc120a1
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-17 (Tue, 17 Apr 2012)
Changed paths:
A contrib/fedora/fusioninventory-agent.service
Log Message:
-----------
initial import
Author: Remi Collet <Remi at FamilleCollet.com>
diff --git a/contrib/fedora/fusioninventory-agent.service b/contrib/fedora/fusioninventory-agent.service
new file mode 100644
index 0000000..0e14f59
--- /dev/null
+++ b/contrib/fedora/fusioninventory-agent.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=FusionInventory agent
+After=syslog.target network.target
+
+[Service]
+EnvironmentFile=/etc/sysconfig/fusioninventory-agent
+ExecStart=/usr/bin/fusioninventory-agent $OPTIONS
+
+[Install]
+WantedBy=multi-user.target
================================================================
Commit: c2923f441fb7defa3a63c00f5fb5328cbab01a48
https://github.com/fusinv/fusioninventory-agent/commit/c2923f441fb7defa3a63c00f5fb5328cbab01a48
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-17 (Tue, 17 Apr 2012)
Changed paths:
R contrib/fedora/fusioninventory-agent.spec
Log Message:
-----------
no need to ship an outdated spec file
diff --git a/contrib/fedora/fusioninventory-agent.spec b/contrib/fedora/fusioninventory-agent.spec
deleted file mode 100644
index 922ff1f..0000000
--- a/contrib/fedora/fusioninventory-agent.spec
+++ /dev/null
@@ -1,202 +0,0 @@
-%global gitver ddfdeaf
-
-Name: fusioninventory-agent
-Summary: FusionInventory agent
-Summary(fr): Agent FusionInventory
-
-Version: 2.0.4
-
-%if 0%{?gitver:1}
-Release: 4.git%{gitver}%{?dist}
-Source0: fusinv-fusioninventory-agent-2.0.4-9-gddfdeaf.tar.gz
-%else
-Release: 1.%{?dist}
-Source0: http://search.cpan.org/CPAN/authors/id/F/FU/FUSINV/FusionInventory-Agent-%{version}.tar.gz
-%endif
-
-Source1: %{name}.cron
-Source2: %{name}.init
-
-Group: Applications/System
-License: GPLv2+
-URL: http://fusioninventory.org/
-
-BuildArch: noarch
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-
-BuildRequires: perl(Module::Install)
-Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
-Requires: perl(LWP) perl(Net::IP) perl(HTTP::Status) perl(Net::SSLeay) perl(Crypt::SSLeay)
-Requires: perl(Proc::Daemon) perl(Proc::PID::File)
-# Not yet available in EPEL ...
-%if %{?fedora}%{?rhel} > 4
-Requires: perl(Archive::Extract)
-Requires: perl(Net::CUPS)
-%endif
-Requires(post): /sbin/chkconfig
-Requires(preun): /sbin/chkconfig, /sbin/service
-Requires(postun): /sbin/service
-
-%{?perl_default_filter}
-
-
-%description
-FusionInventory Agent is an application designed to help a network
-or system administrator to keep track of the hardware and software
-configurations of computers that are installed on the network.
-
-This agent can send information about the computer to a OCS Inventory NG
-or GLPI server with the FusionInventory for GLPI plugin.
-
-You can add additional packages for optionnal tasks:
-
-* perl-FusionInventory-Agent-Task-OcsDeploy
- OCS Inventory Software deployment support
-
-
-%description -l fr
-L'agent FusionInventory est une application destinée à aider l'administrateur
-système ou réseau à surveiller la configuration des machines du réseau
-et les logiciels qui y sont installés.
-
-Cet agent peut envoyer les informations de l'ordinateur à un serveur
-OCS Inventory NG ou à un serveur GLPI disposant de l'extension FusionInventory.
-
-Vous pouvez ajouter les paquets additionnels pour les tâches optionnelles :
-
-* perl-FusionInventory-Agent-Task-OcsDeploy
- Gestion du déploiement logiciel OCS Inventory
-
-
-%prep
-%if 0%{?gitver:1}
-%setup -q -n fusinv-fusioninventory-agent-%{gitver}
-%else
-%setup -q -n FusionInventory-Agent-%{version}
-%endif
-
-cat <<EOF | tee logrotate
-%{_localstatedir}/log/%{name}/*.log {
- weekly
- rotate 7
- compress
- notifempty
- missingok
-}
-EOF
-
-cat <<EOF | tee %{name}.conf
-#
-# Fusion Inventory Agent Configuration File
-# used by hourly cron job used to override the %{name}.cfg setup.
-#
-# Add tools directory if needed (tw_cli, hpacucli, ipssend, ...)
-PATH=/sbin:/bin:/usr/sbin:/usr/bin
-# Global options
-#FUSINVOPT=--debug
-# Mode, change to "cron" or "daemon" to activate
-OCSMODE[0]=none
-# OCS server URI
-# OCSSERVER[0]=your.ocsserver.name
-# corresponds with --local=%{_localstatedir}/lib/%{name}
-# OCSSERVER[0]=local
-# Wait before inventory
-OCSPAUSE[0]=120
-# Administrative TAG (optional, must be filed before first inventory)
-OCSTAG[0]=
-EOF
-
-cat <<EOF | tee agent.cfg
-# This file provides global and command line settings
-# For CRON or DAEMON configuration, see %{_sysconfdir}/sysconfig/%{name}
-basevardir=%{_localstatedir}/lib/%{name}
-logger=Stderr
-server=""
-EOF
-
-
-%build
-%{__perl} Makefile.PL INSTALLDIRS=vendor
-make %{?_smp_mflags}
-
-
-%install
-rm -rf %{buildroot}
-
-make pure_install DESTDIR=%{buildroot}
-find %{buildroot} -type f -name .packlist -exec rm -f {} ';'
-find %{buildroot} -type d -depth -exec rmdir {} 2>/dev/null ';'
-
-%{_fixperms} $RPM_BUILD_ROOT/*
-
-
-%{__mkdir_p} %{buildroot}%{_localstatedir}/{log,lib}/%{name}
-
-%{__install} -m 644 -D logrotate %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
-%{__install} -m 644 -D %{name}.conf %{buildroot}%{_sysconfdir}/sysconfig/%{name}
-%{__install} -m 644 -D agent.cfg %{buildroot}%{_sysconfdir}/fusioninventory/agent.cfg
-%{__install} -m 755 -Dp %{SOURCE1} %{buildroot}%{_sysconfdir}/cron.hourly/%{name}
-%{__install} -m 755 -Dp %{SOURCE2} %{buildroot}%{_initrddir}/%{name}
-
-
-%clean
-rm -rf %{buildroot}
-
-
-%post
-/sbin/chkconfig --add %{name}
-
-
-%preun
-if [ "$1" = 0 ] ; then
- /sbin/service %{name} stop &>/dev/null
- /sbin/chkconfig --del %{name}
-fi
-exit 0
-
-
-%postun
-if [ "$1" -ge 1 ]; then
- /sbin/service %{name} condrestart &>/dev/null
-fi
-exit 0
-
-
-%files
-%defattr(-, root, root, -)
-%doc AUTHORS Changes LICENSE README THANKS
-%dir %{_sysconfdir}/fusioninventory
-%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
-%config(noreplace) %{_sysconfdir}/sysconfig/%{name}
-%config(noreplace) %{_sysconfdir}/fusioninventory/agent.cfg
-%{_sysconfdir}/cron.hourly/%{name}
-%{_initrddir}/%{name}
-%{perl_vendorlib}/FusionInventory
-%{_bindir}/%{name}
-%exclude %{_bindir}/%{name}-config
-%{_mandir}/man1/%{name}*
-%{_mandir}/man3/Fusion*
-%dir %{_localstatedir}/log/%{name}
-%dir %{_localstatedir}/lib/%{name}
-
-
-%changelog
-* Sat May 08 2010 Remi Collet <Fedora at famillecollet.com> 2.0.4-4.gitddfdeaf
-- git snapshot fix daemon issue
-- add FUSINVOPT for global options (p.e.--debug)
-
-* Sat May 08 2010 Remi Collet <Fedora at famillecollet.com> 2.0.4-3
-- add support for daemon mode
-
-* Fri May 07 2010 Remi Collet <Fedora at famillecollet.com> 2.0.4-2
-- info about perl-FusionInventory-Agent-Task-OcsDeploy
-- spec cleanup
-- french translation
-- set Net::CUPS and Archive::Extract optionnal on RHEL4
-
-* Fri May 07 2010 Remi Collet <Fedora at famillecollet.com> 2.0.4-1
-- update to 2.0.4 which fixes important bugs when cron is used
-
-* Sat May 01 2010 Remi Collet <Fedora at famillecollet.com> 2.0.3-1
-- initial spec
-
================================================================
Commit: 509536bb6050d34bba66ed8c9fb5a7eeadbb46d8
https://github.com/fusinv/fusioninventory-agent/commit/509536bb6050d34bba66ed8c9fb5a7eeadbb46d8
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-17 (Tue, 17 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
M resources/lvm/linux/pvs/README
M resources/lvm/linux/pvs/linux-1
M resources/lvm/linux/pvs/linux-2
M t/inventory/linux/lvm.t
Log Message:
-----------
use explicit fields list
This is safer than relying on default fields list
Reported-by: Remi Collet <Remi at FamilleCollet.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
index 58b86b0..df917ca 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
@@ -60,7 +60,7 @@ sub _getLogicalVolumes {
sub _getPhysicalVolumes {
my (%params) = (
- command => 'pvs --noheading --nosuffix --units M -o +pv_uuid,pv_pe_count,pv_size,vg_uuid',
+ command => 'pvs --noheading --nosuffix --units M -o pv_name,pv_fmt,pv_attr,pv_size,pv_free,pv_uuid,pv_pe_count,vg_uuid',
@_
);
@@ -73,14 +73,14 @@ sub _getPhysicalVolumes {
push @volumes, {
DEVICE => $infos[1],
- FORMAT => $infos[3],
- ATTR => $infos[4],
- SIZE => int($infos[5]||0),
- FREE => int($infos[6]||0),
- PV_UUID => $infos[7],
- PV_PE_COUNT => $infos[8],
- PE_SIZE => int($infos[5] / $infos[8]),
- VG_UUID => $infos[10]
+ FORMAT => $infos[2],
+ ATTR => $infos[3],
+ SIZE => int($infos[4]||0),
+ FREE => int($infos[5]||0),
+ PV_UUID => $infos[6],
+ PV_PE_COUNT => $infos[7],
+ PE_SIZE => int($infos[4] / $infos[7]),
+ VG_UUID => $infos[8]
};
}
close $handle;
diff --git a/resources/lvm/linux/pvs/README b/resources/lvm/linux/pvs/README
index d3d797f..3cfe0b0 100644
--- a/resources/lvm/linux/pvs/README
+++ b/resources/lvm/linux/pvs/README
@@ -1 +1 @@
-pvs --noheading --nosuffix --units M -o +pv_uuid,pv_pe_count,pv_size,pv_attr,vg_uuid
+pvs --noheading --nosuffix --units M -o pv_name,pv_fmt,pv_attr,pv_size,pv_free,pv_uuid,pv_pe_count,vg_uuid
diff --git a/resources/lvm/linux/pvs/linux-1 b/resources/lvm/linux/pvs/linux-1
index 21a7b6f..ae59a74 100644
--- a/resources/lvm/linux/pvs/linux-1
+++ b/resources/lvm/linux/pvs/linux-1
@@ -1,3 +1,3 @@
- /dev/sda5 lvm lvm2 a- 15846.08 0 MjsnP7-GaGC-NIo7-tS3o-gf2t-di2R-eP3Au7 3778 15846.08
- /dev/sdb1 lvm2 lvm2 a- 2466.25 2256.54 LNDa6y-PQGQ-gtnc-c7Wc-W2lS-Soaf-Bwu2Me 588 2466.25
- /dev/sdb2 lvm2 lvm2 a- 2894.07 2894.07 xkxfmu-fQLt-DtKZ-YnkY-vwcj-JqC2-WmQddD 690 2894.07
+ /dev/sda5 lvm2 a- 15846.08 0 MjsnP7-GaGC-NIo7-tS3o-gf2t-di2R-eP3Au7 3778
+ /dev/sdb1 lvm2 a- 2466.25 2256.54 LNDa6y-PQGQ-gtnc-c7Wc-W2lS-Soaf-Bwu2Me 588
+ /dev/sdb2 lvm2 a- 2894.07 2894.07 xkxfmu-fQLt-DtKZ-YnkY-vwcj-JqC2-WmQddD 690
diff --git a/resources/lvm/linux/pvs/linux-2 b/resources/lvm/linux/pvs/linux-2
index eddce83..c83b312 100644
--- a/resources/lvm/linux/pvs/linux-2
+++ b/resources/lvm/linux/pvs/linux-2
@@ -1,3 +1,3 @@
- /dev/sda2 vg00 lvm2 a-- 311452.24 125694.90 CnCKHH-tnlS-BFL5-qRMa-HaV2-10zm-kNIpEp 9282 311452.24 OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn
- /dev/sdb2 vg00 lvm2 a-- 58921.58 18119.39 XMzcNr-5qrL-pXk1-9Ycl-FyfN-nXPe-ndRvHF 1756 58921.58 OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn
- /dev/sdc1 vg00 lvm2 a-- 500095.25 241323.47 GnT78t-kb92-k8di-1uUv-28HK-H6za-SXe2EZ 14904 500095.25 OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn
+ /dev/sda2 lvm2 a-- 311452.24 125694.90 CnCKHH-tnlS-BFL5-qRMa-HaV2-10zm-kNIpEp 9282 OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn
+ /dev/sdb2 lvm2 a-- 58921.58 18119.39 XMzcNr-5qrL-pXk1-9Ycl-FyfN-nXPe-ndRvHF 1756 OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn
+ /dev/sdc1 lvm2 a-- 500095.25 241323.47 GnT78t-kb92-k8di-1uUv-28HK-H6za-SXe2EZ 14904 OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn
diff --git a/t/inventory/linux/lvm.t b/t/inventory/linux/lvm.t
index 3d6e1aa..4a3196d 100644
--- a/t/inventory/linux/lvm.t
+++ b/t/inventory/linux/lvm.t
@@ -146,6 +146,41 @@ my %pvs = (
PV_UUID => 'GnT78t-kb92-k8di-1uUv-28HK-H6za-SXe2EZ',
VG_UUID => 'OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn'
}
+ ],
+ 'linux-3' => [
+ {
+ SIZE => 53791,
+ FORMAT => 'lvm2',
+ ATTR => 'a-',
+ FREE => 18694,
+ DEVICE => '/dev/sda5',
+ PV_PE_COUNT => 12825,
+ VG_UUID => '4D8fsm-J18u-IBB8-0TDT-tdIc-qDWr-COXhld',
+ PE_SIZE => 4,
+ PV_UUID => 'wDobJX-zfTq-A1Ka-70Nz-caiV-uNbt-QZEsKS'
+ },
+ {
+ SIZE => 182087,
+ FORMAT => 'lvm2',
+ ATTR => 'a-',
+ FREE => 0,
+ DEVICE => '/dev/sdb',
+ PV_PE_COUNT => 43413,
+ VG_UUID => '8VYDvK-WrSD-5v8m-UgyR-g7GR-V4hK-y7q2On',
+ PE_SIZE => 4,
+ PV_UUID => 'HIQlf6-bTeX-douO-zHZQ-U1SG-637I-tsaxwL'
+ },
+ {
+ SIZE => 182087,
+ FORMAT => 'lvm2',
+ ATTR => 'a-',
+ FREE => 4,
+ DEVICE => '/dev/sdc',
+ PV_PE_COUNT => 43413,
+ VG_UUID => '8VYDvK-WrSD-5v8m-UgyR-g7GR-V4hK-y7q2On',
+ PE_SIZE => 4,
+ PV_UUID => 'FyNUgz-K2Qs-q8vt-1yO4-3TQy-3z1H-Xg6B0r'
+ }
]
);
@@ -193,7 +228,8 @@ plan tests =>
foreach my $test (keys %pvs) {
my @pvs = FusionInventory::Agent::Task::Inventory::Input::Linux::LVM::_getPhysicalVolumes(file => "resources/lvm/linux/pvs/$test");
- is_deeply(\@pvs, $pvs{$test}, "physical volumes list: $test");
+ is_deeply(\@pvs, $pvs{$test}, "physical volumes list: $test") or print Dumper(\@pvs);
+ use Data::Dumper;
}
foreach my $test (keys %lvs) {
================================================================
Commit: 50d0884512206e83a2f45cc2957f7f11129584dc
https://github.com/fusinv/fusioninventory-agent/commit/50d0884512206e83a2f45cc2957f7f11129584dc
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-17 (Tue, 17 Apr 2012)
Changed paths:
A resources/lvm/linux/pvs/linux-3
Log Message:
-----------
initial import
diff --git a/resources/lvm/linux/pvs/linux-3 b/resources/lvm/linux/pvs/linux-3
new file mode 100644
index 0000000..7e7689e
--- /dev/null
+++ b/resources/lvm/linux/pvs/linux-3
@@ -0,0 +1,3 @@
+ /dev/sda5 lvm2 a- 53791.95 18694.01 wDobJX-zfTq-A1Ka-70Nz-caiV-uNbt-QZEsKS 12825 4D8fsm-J18u-IBB8-0TDT-tdIc-qDWr-COXhld
+ /dev/sdb lvm2 a- 182087.32 0 HIQlf6-bTeX-douO-zHZQ-U1SG-637I-tsaxwL 43413 8VYDvK-WrSD-5v8m-UgyR-g7GR-V4hK-y7q2On
+ /dev/sdc lvm2 a- 182087.32 4.19 FyNUgz-K2Qs-q8vt-1yO4-3TQy-3z1H-Xg6B0r 43413 8VYDvK-WrSD-5v8m-UgyR-g7GR-V4hK-y7q2On
================================================================
Commit: b96fced3473aaf10f83936239b800e50f20530e4
https://github.com/fusinv/fusioninventory-agent/commit/b96fced3473aaf10f83936239b800e50f20530e4
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-17 (Tue, 17 Apr 2012)
Changed paths:
A resources/lvm/linux/vgs/linux-3
M t/inventory/linux/lvm.t
Log Message:
-----------
new test case
diff --git a/resources/lvm/linux/vgs/linux-3 b/resources/lvm/linux/vgs/linux-3
new file mode 100644
index 0000000..5a99b00
--- /dev/null
+++ b/resources/lvm/linux/vgs/linux-3
@@ -0,0 +1,2 @@
+ vg0 1 5 0 wz--n- 53791.95 18694.01 4D8fsm-J18u-IBB8-0TDT-tdIc-qDWr-COXhld 4.19
+ vg1 2 1 0 wz--n- 364174.64 4.19 8VYDvK-WrSD-5v8m-UgyR-g7GR-V4hK-y7q2On 4.19
diff --git a/t/inventory/linux/lvm.t b/t/inventory/linux/lvm.t
index 4a3196d..d259cab 100644
--- a/t/inventory/linux/lvm.t
+++ b/t/inventory/linux/lvm.t
@@ -218,6 +218,28 @@ my %vgs = (
LV_COUNT => '16',
VG_EXTENT_SIZE => '33.55'
}
+ ],
+ 'linux-3' => [
+ {
+ SIZE => 53791,
+ ATTR => 'wz--n-',
+ VG_NAME => 'vg0',
+ FREE => 18694,
+ PV_COUNT => '1',
+ VG_UUID => '4D8fsm-J18u-IBB8-0TDT-tdIc-qDWr-COXhld',
+ LV_COUNT => '5',
+ VG_EXTENT_SIZE => '4.19'
+ },
+ {
+ SIZE => 364174,
+ ATTR => 'wz--n-',
+ VG_NAME => 'vg1',
+ FREE => 4,
+ PV_COUNT => '2',
+ VG_UUID => '8VYDvK-WrSD-5v8m-UgyR-g7GR-V4hK-y7q2On',
+ LV_COUNT => '1',
+ VG_EXTENT_SIZE => '4.19'
+ }
]
);
@@ -228,8 +250,7 @@ plan tests =>
foreach my $test (keys %pvs) {
my @pvs = FusionInventory::Agent::Task::Inventory::Input::Linux::LVM::_getPhysicalVolumes(file => "resources/lvm/linux/pvs/$test");
- is_deeply(\@pvs, $pvs{$test}, "physical volumes list: $test") or print Dumper(\@pvs);
- use Data::Dumper;
+ is_deeply(\@pvs, $pvs{$test}, "physical volumes list: $test");
}
foreach my $test (keys %lvs) {
================================================================
Commit: eebcdd1b17abf9796fc8021354f01fe8d18e80ab
https://github.com/fusinv/fusioninventory-agent/commit/eebcdd1b17abf9796fc8021354f01fe8d18e80ab
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-17 (Tue, 17 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
M resources/lvm/linux/vgs/README
M resources/lvm/linux/vgs/linux-1
M resources/lvm/linux/vgs/linux-2
M resources/lvm/linux/vgs/linux-3
Log Message:
-----------
use explicit fields list
This is safer than relying on default fields list
Reported-by: Remi Collet <Remi at FamilleCollet.com>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
index df917ca..d4bf1a8 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/LVM.pm
@@ -90,7 +90,7 @@ sub _getPhysicalVolumes {
sub _getVolumeGroups {
my (%params) = (
- command => 'vgs --noheading --nosuffix --units M -o +vg_uuid,vg_extent_size',
+ command => 'vgs --noheading --nosuffix --units M -o vg_name,pv_count,lv_count,vg_attr,vg_size,vg_free,vg_uuid,vg_extent_size',
@_
);
@@ -105,11 +105,11 @@ sub _getVolumeGroups {
VG_NAME => $infos[1],
PV_COUNT => $infos[2],
LV_COUNT => $infos[3],
- ATTR => $infos[5],
- SIZE => int($infos[6]||0),
- FREE => int($infos[7]||0),
- VG_UUID => $infos[8],
- VG_EXTENT_SIZE => $infos[9],
+ ATTR => $infos[4],
+ SIZE => int($infos[5]||0),
+ FREE => int($infos[6]||0),
+ VG_UUID => $infos[7],
+ VG_EXTENT_SIZE => $infos[8],
};
}
close $handle;
diff --git a/resources/lvm/linux/vgs/README b/resources/lvm/linux/vgs/README
index dfee8f8..7e7f833 100644
--- a/resources/lvm/linux/vgs/README
+++ b/resources/lvm/linux/vgs/README
@@ -1 +1 @@
-vgs --noheading --nosuffix --units M -o +vg_uuid,vg_extent_size
+vgs --noheading --nosuffix --units M -o vg_name,pv_count,lv_count,vg_attr,vg_size,vg_free,vg_uuid,vg_extent_size
diff --git a/resources/lvm/linux/vgs/linux-1 b/resources/lvm/linux/vgs/linux-1
index ff5c9c2..680a04b 100644
--- a/resources/lvm/linux/vgs/linux-1
+++ b/resources/lvm/linux/vgs/linux-1
@@ -1,2 +1,2 @@
- lvm 1 6 0 wz--n- 15846.08 0 Eubwcw-UFh2-P3Kn-aI6y-qcLT-VCzU-ls49ha 4.19
- lvm2 2 2 0 wz--n- 5360.32 5150.61 ZHOqQg-SNQJ-a79U-Jfn1-Az84-e04w-d9zH23 4.19
+ lvm 1 6 wz--n- 15846.08 0 Eubwcw-UFh2-P3Kn-aI6y-qcLT-VCzU-ls49ha 4.19
+ lvm2 2 2 wz--n- 5360.32 5150.61 ZHOqQg-SNQJ-a79U-Jfn1-Az84-e04w-d9zH23 4.19
diff --git a/resources/lvm/linux/vgs/linux-2 b/resources/lvm/linux/vgs/linux-2
index 5f6c13c..519e05b 100644
--- a/resources/lvm/linux/vgs/linux-2
+++ b/resources/lvm/linux/vgs/linux-2
@@ -1 +1 @@
- vg00 3 16 0 wz--n- 870469.07 385137.77 OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn 33.55 CnCKHH-tnlS-BFL5-qRMa-HaV2-10zm-kNIpEp
+ vg00 3 16 wz--n- 870469.07 385137.77 OFXZR2-dEjD-qVIj-VJnw-1dQY-wC57-O1TABn 33.55
diff --git a/resources/lvm/linux/vgs/linux-3 b/resources/lvm/linux/vgs/linux-3
index 5a99b00..1afceae 100644
--- a/resources/lvm/linux/vgs/linux-3
+++ b/resources/lvm/linux/vgs/linux-3
@@ -1,2 +1,2 @@
- vg0 1 5 0 wz--n- 53791.95 18694.01 4D8fsm-J18u-IBB8-0TDT-tdIc-qDWr-COXhld 4.19
- vg1 2 1 0 wz--n- 364174.64 4.19 8VYDvK-WrSD-5v8m-UgyR-g7GR-V4hK-y7q2On 4.19
+ vg0 1 5 wz--n- 53791.95 18694.01 4D8fsm-J18u-IBB8-0TDT-tdIc-qDWr-COXhld 4.19
+ vg1 2 1 wz--n- 364174.64 4.19 8VYDvK-WrSD-5v8m-UgyR-g7GR-V4hK-y7q2On 4.19
================================================================
Commit: 497291cf520727a0e7e14ff48eeaccb7f7937c0f
https://github.com/fusinv/fusioninventory-agent/commit/497291cf520727a0e7e14ff48eeaccb7f7937c0f
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-17 (Tue, 17 Apr 2012)
Changed paths:
M share/html/now.tpl
Log Message:
-----------
fix css path
Close: #1580
Reported-by: Remi Collet <Remi at FamilleCollet.com>
diff --git a/share/html/now.tpl b/share/html/now.tpl
index c9f1987..7068b05 100644
--- a/share/html/now.tpl
+++ b/share/html/now.tpl
@@ -3,7 +3,7 @@
<meta content="text/html; charset=UTF-8" http-equiv="content-type" />
<title>FusionInventory-Agent</title>
-<link rel="stylesheet" href="/files/site.css" type="text/css" />
+<link rel="stylesheet" href="site.css" type="text/css" />
</head>
<body>
================================================================
Commit: 198a95575ecfe213ccef347a6a0fb455b0de60c3
https://github.com/fusinv/fusioninventory-agent/commit/198a95575ecfe213ccef347a6a0fb455b0de60c3
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-17 (Tue, 17 Apr 2012)
Changed paths:
M Makefile.PL
Log Message:
-----------
IO::Socket::SSL is mandatory for tests
Close: #1575
diff --git a/Makefile.PL b/Makefile.PL
index baf80b9..a5f7d41 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -40,6 +40,7 @@ if ($OSNAME ne 'MSWin32') {
test_requires 'HTTP::Proxy' => undef;
test_requires 'HTTP::Server::Simple' => undef;
test_requires 'HTTP::Server::Simple::Authen' => undef;
+test_requires 'IO::Socket::SSL' => undef;
test_requires 'IO::Capture::Stderr' => undef;
test_requires 'IPC::Run' => undef;
test_requires 'Test::Exception' => undef;
================================================================
Commit: 93f53acad0fec68bba4b4ce5e90b34d1bf2ac0d5
https://github.com/fusinv/fusioninventory-agent/commit/93f53acad0fec68bba4b4ce5e90b34d1bf2ac0d5
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-17 (Tue, 17 Apr 2012)
Changed paths:
A resources/generic/ifconfig/freebsd-bis
Log Message:
-----------
initial import
diff --git a/resources/generic/ifconfig/freebsd-bis b/resources/generic/ifconfig/freebsd-bis
new file mode 100644
index 0000000..b870a0b
--- /dev/null
+++ b/resources/generic/ifconfig/freebsd-bis
@@ -0,0 +1,7 @@
+re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
+ options=c01bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
+ ether 00:ab:cd:ef:1a:00
+ inet 192.168.10.10 netmask 0xffffff00 broadcast 192.168.10.11
+ inet 192.168.10.11 netmask 0xffffffff broadcast 192.168.10.11
+ media: Ethernet autoselect (100baseTX <full-duplex>)
+ status: active
================================================================
Commit: 3dba6e2274d2ec899e92649d731da25e7b8580c7
https://github.com/fusinv/fusioninventory-agent/commit/3dba6e2274d2ec899e92649d731da25e7b8580c7
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-17 (Tue, 17 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm
M t/inventory/bsd/networks.t
Log Message:
-----------
handle multiple addresses per interface
This allow to handle IPv6 addresses and IPv4 aliases (bug #1565).
This make status management consistent with Linux code.
Close: #1565
Reported-by: Egor Morozov <akrus at flygroup.st>
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm
index 6e23255..b2f71e8 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm
@@ -66,42 +66,77 @@ sub _parseIfconfig {
my $handle = getFileHandle(@_);
return unless $handle;
- my @interfaces;
- my $interface;
+ my @interfaces; # global list of interfaces
+ my @addresses; # per-interface list of addresses
+ my $interface; # current interface
while (my $line = <$handle>) {
- if ($line =~ /^(\S+):/) {
- # new interface
- push @interfaces, $interface if $interface;
+ if ($line =~ /^(\S+): flags=\d+<([^>]+)> metric \d+ mtu (\d+)/) {
+
+ if (@addresses) {
+ push @interfaces, @addresses;
+ undef @addresses;
+ } else {
+ push @interfaces, $interface if $interface;
+ }
+
$interface = {
- STATUS => 'Down',
- DESCRIPTION => $1
+ DESCRIPTION => $1,
+ MTU => $3
};
- }
+ my $flags = $2;
- if ($line =~ /inet ($ip_address_pattern)/) {
- $interface->{IPADDRESS} = $1;
- }
- if ($line =~ /netmask 0x($hex_ip_address_pattern)/) {
- $interface->{IPMASK} = hex2canonical($1);
- }
- if ($line =~ /(?:address:|ether|lladdr) ($mac_address_pattern)/) {
+ foreach my $flag (split(/,/, $flags)) {
+ next unless $flag eq 'UP' || $flag eq 'DOWN';
+ $interface->{STATUS} = ucfirst(lc($flag));
+ }
+ } elsif ($line =~ /(?:address:|ether|lladdr) ($mac_address_pattern)/) {
$interface->{MACADDR} = $1;
+
+ } elsif ($line =~ /inet ($ip_address_pattern) (?:--> $ip_address_pattern )?netmask 0x($hex_ip_address_pattern)/) {
+ my $address = $1;
+ my $mask = hex2canonical($2);
+ my $subnet = getSubnetAddress($address, $mask);
+
+ push @addresses, {
+ IPADDRESS => $address,
+ IPMASK => $mask,
+ IPSUBNET => $subnet,
+ STATUS => $interface->{STATUS},
+ DESCRIPTION => $interface->{DESCRIPTION},
+ MACADDR => $interface->{MACADDR},
+ MTU => $interface->{MTU}
+ };
+ } elsif ($line =~ /inet6 ([\w:]+)\S* prefixlen (\d+)/) {
+ my $address = $1;
+ my $mask = getNetworkMaskIPv6($2);
+ my $subnet = getSubnetAddressIPv6($address, $mask);
+
+ push @addresses, {
+ IPADDRESS6 => $address,
+ IPMASK6 => $mask,
+ IPSUBNET6 => $subnet,
+ STATUS => $interface->{STATUS},
+ DESCRIPTION => $interface->{DESCRIPTION},
+ MACADDR => $interface->{MACADDR},
+ MTU => $interface->{MTU}
+ };
+
}
- if ($line =~ /mtu (\S+)/) {
- $interface->{MTU} = $1;
- }
+
if ($line =~ /media (\S+)/) {
$interface->{TYPE} = $1;
- }
- if ($line =~ /<UP/) {
- $interface->{STATUS} = 'Up';
+ $_->{TYPE} = $1 foreach @addresses;
}
}
close $handle;
# last interface
- push @interfaces, $interface if $interface;
+ if (@addresses) {
+ push @interfaces, @addresses;
+ } else {
+ push @interfaces, $interface if $interface;
+ }
return @interfaces;
}
diff --git a/t/inventory/bsd/networks.t b/t/inventory/bsd/networks.t
index 1e464bd..fc00c0a 100755
--- a/t/inventory/bsd/networks.t
+++ b/t/inventory/bsd/networks.t
@@ -10,88 +10,86 @@ use FusionInventory::Agent::Task::Inventory::Input::BSD::Networks;
my %ifconfig_tests = (
'freebsd-8.1' => [
{
- MTU => '1500',
- IPMASK => '255.255.255.192',
- MACADDR => 'c8:0a:a9:3f:35:fa',
DESCRIPTION => 're0',
STATUS => 'Up',
- IPADDRESS => '129.132.95.98'
+ MTU => '1500',
+ MACADDR => 'c8:0a:a9:3f:35:fa',
+ IPADDRESS => '129.132.95.98',
+ IPMASK => '255.255.255.192',
+ IPSUBNET => '129.132.95.64',
},
{
+ DESCRIPTION => 'fwe0',
MTU => '1500',
MACADDR => '02:24:1b:9d:ca:01',
- DESCRIPTION => 'fwe0',
- STATUS => 'Down'
},
{
- MTU => '1500',
DESCRIPTION => 'fwip0',
- STATUS => 'Down'
+ MTU => '1500',
},
{
- MTU => '16384',
- IPMASK => '255.0.0.0',
DESCRIPTION => 'lo0',
+ MTU => '16384',
STATUS => 'Up',
- IPADDRESS => '127.0.0.1'
+ MACADDR => undef,
+ IPADDRESS6 => 'fe80::1',
+ IPMASK6 => 'ffff:ffff:ffff:ffff::',
+ IPSUBNET6 => 'fe80::',
},
{
- MTU => '1500',
- MACADDR => '0a:00:27:00:00:00',
- DESCRIPTION => 'vboxnet0',
- STATUS => 'Down'
- },
- {
- MTU => '1500',
- IPMASK => '255.255.255.255',
- DESCRIPTION => 'tun0',
- STATUS => 'Up',
- IPADDRESS => '192.168.200.6'
- }
- ],
- 'solaris-10' => [
- {
- MTU => '8232',
DESCRIPTION => 'lo0',
STATUS => 'Up',
- IPADDRESS => '127.0.0.1'
+ MTU => '16384',
+ MACADDR => undef,
+ IPADDRESS6 => '::1',
+ IPMASK6 => 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
+ IPSUBNET6 => '::1',
},
{
- MTU => '1500',
- DESCRIPTION => 'aggr1',
+ DESCRIPTION => 'lo0',
STATUS => 'Up',
- IPADDRESS => '130.79.0.1'
+ MTU => '16384',
+ MACADDR => undef,
+ IPADDRESS => '127.0.0.1',
+ IPSUBNET => '127.0.0.0',
+ IPMASK => '255.0.0.0',
},
{
+ DESCRIPTION => 'vboxnet0',
MTU => '1500',
- DESCRIPTION => 'e1000g0',
- STATUS => 'Up',
- IPADDRESS => '130.79.0.2'
+ MACADDR => '0a:00:27:00:00:00',
},
{
- MTU => '1500',
- DESCRIPTION => 'e1000g2',
+ DESCRIPTION => 'tun0',
STATUS => 'Up',
- IPADDRESS => '130.79.0.3'
- },
- {
MTU => '1500',
- DESCRIPTION => 'e1000g3',
- STATUS => 'Up',
- IPADDRESS => '192.168.19.1'
- },
+ MACADDR => undef,
+ IPADDRESS => '192.168.200.6',
+ IPSUBNET => '192.168.200.6',
+ IPMASK => '255.255.255.255',
+ }
+ ],
+ 'freebsd-bis' => [
{
- MTU => '1500',
- DESCRIPTION => 'e1000g4',
+ DESCRIPTION => 're0',
STATUS => 'Up',
- IPADDRESS => '130.79.255.1'
+ MTU => '1500',
+ MACADDR => '00:ab:cd:ef:1a:00',
+ IPADDRESS => '192.168.10.10',
+ IPMASK => '255.255.255.0',
+ IPSUBNET => '192.168.10.0',
+
},
{
- MTU => '1500',
- DESCRIPTION => 'igb0',
+ DESCRIPTION => 're0',
STATUS => 'Up',
- IPADDRESS => '192.168.20.1'
- }
+ MTU => '1500',
+ MACADDR => '00:ab:cd:ef:1a:00',
+ IPADDRESS => '192.168.10.11',
+ IPMASK => '255.255.255.255',
+ IPSUBNET => '192.168.10.11',
+
+ }
]
);
================================================================
Commit: 022ad0fa128fea503ae5383a6cecd48526f1e58a
https://github.com/fusinv/fusioninventory-agent/commit/022ad0fa128fea503ae5383a6cecd48526f1e58a
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-18 (Wed, 18 Apr 2012)
Changed paths:
M resources/generic/ifconfig/freebsd-bis
M t/inventory/bsd/networks.t
Log Message:
-----------
use an actual ifconfig sample
diff --git a/resources/generic/ifconfig/freebsd-bis b/resources/generic/ifconfig/freebsd-bis
index b870a0b..385606c 100644
--- a/resources/generic/ifconfig/freebsd-bis
+++ b/resources/generic/ifconfig/freebsd-bis
@@ -1,7 +1,20 @@
-re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
- options=c01bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
- ether 00:ab:cd:ef:1a:00
- inet 192.168.10.10 netmask 0xffffff00 broadcast 192.168.10.11
- inet 192.168.10.11 netmask 0xffffffff broadcast 192.168.10.11
- media: Ethernet autoselect (100baseTX <full-duplex>)
+bce0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
+ options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
+ ether 00:16:18:87:ca:b5
+ inet 11.105.11.105 netmask 0xffffffc0 broadcast 11.105.11.127
+ inet 11.105.11.110 netmask 0xffffffff broadcast 11.105.11.110
+ inet 11.105.11.111 netmask 0xffffffff broadcast 11.105.11.111
+ media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
+bce1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
+ options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
+ ether 00:16:18:87:ca:b6
+ inet 192.168.12.105 netmask 0xffffff00 broadcast 192.168.12.255
+ media: Ethernet autoselect (1000baseT <full-duplex>)
+ status: active
+lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
+ options=3<RXCSUM,TXCSUM>
+ inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
+ inet6 ::1 prefixlen 128
+ inet 127.0.0.1 netmask 0xff000000
+ nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
diff --git a/t/inventory/bsd/networks.t b/t/inventory/bsd/networks.t
index fc00c0a..725cfa3 100755
--- a/t/inventory/bsd/networks.t
+++ b/t/inventory/bsd/networks.t
@@ -71,23 +71,73 @@ my %ifconfig_tests = (
],
'freebsd-bis' => [
{
- DESCRIPTION => 're0',
+ DESCRIPTION => 'bce0',
STATUS => 'Up',
MTU => '1500',
- MACADDR => '00:ab:cd:ef:1a:00',
- IPADDRESS => '192.168.10.10',
- IPMASK => '255.255.255.0',
- IPSUBNET => '192.168.10.0',
+ MACADDR => '00:16:18:87:ca:b5',
+ IPADDRESS => '11.105.11.105',
+ IPMASK => '255.255.255.192',
+ IPSUBNET => '11.105.11.64',
},
{
- DESCRIPTION => 're0',
+ DESCRIPTION => 'bce0',
STATUS => 'Up',
MTU => '1500',
- MACADDR => '00:ab:cd:ef:1a:00',
- IPADDRESS => '192.168.10.11',
+ MACADDR => '00:16:18:87:ca:b5',
+ IPADDRESS => '11.105.11.110',
IPMASK => '255.255.255.255',
- IPSUBNET => '192.168.10.11',
+ IPSUBNET => '11.105.11.110',
+
+ },
+ {
+ DESCRIPTION => 'bce0',
+ STATUS => 'Up',
+ MTU => '1500',
+ MACADDR => '00:16:18:87:ca:b5',
+ IPADDRESS => '11.105.11.111',
+ IPMASK => '255.255.255.255',
+ IPSUBNET => '11.105.11.111',
+
+ },
+ {
+ DESCRIPTION => 'bce1',
+ STATUS => 'Up',
+ MTU => '1500',
+ MACADDR => '00:16:18:87:ca:b6',
+ IPADDRESS => '192.168.12.105',
+ IPMASK => '255.255.255.0',
+ IPSUBNET => '192.168.12.0'
+
+ },
+ {
+ DESCRIPTION => 'lo0',
+ STATUS => 'Up',
+ MTU => '16384',
+ MACADDR => undef,
+ IPADDRESS6 => 'fe80::1',
+ IPMASK6 => 'ffff:ffff:ffff:ffff::',
+ IPSUBNET6 => 'fe80::'
+
+ },
+ {
+ DESCRIPTION => 'lo0',
+ STATUS => 'Up',
+ MTU => '16384',
+ MACADDR => undef,
+ IPADDRESS6 => '::1',
+ IPMASK6 => 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
+ IPSUBNET6 => '::1'
+
+ },
+ {
+ DESCRIPTION => 'lo0',
+ STATUS => 'Up',
+ MTU => '16384',
+ MACADDR => undef,
+ IPADDRESS => '127.0.0.1',
+ IPMASK => '255.0.0.0',
+ IPSUBNET => '127.0.0.0'
}
]
================================================================
Commit: 8b0bd2c1b17fc49d26ceb5c8eb44a478e15a5bc8
https://github.com/fusinv/fusioninventory-agent/commit/8b0bd2c1b17fc49d26ceb5c8eb44a478e15a5bc8
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-18 (Wed, 18 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm
M t/inventory/bsd/networks.t
Log Message:
-----------
fix type parsing
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm
index b2f71e8..6ed965c 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/BSD/Networks.pm
@@ -124,7 +124,7 @@ sub _parseIfconfig {
}
- if ($line =~ /media (\S+)/) {
+ if ($line =~ /media: (\S+)/) {
$interface->{TYPE} = $1;
$_->{TYPE} = $1 foreach @addresses;
}
diff --git a/t/inventory/bsd/networks.t b/t/inventory/bsd/networks.t
index 725cfa3..a3ae5a3 100755
--- a/t/inventory/bsd/networks.t
+++ b/t/inventory/bsd/networks.t
@@ -13,6 +13,7 @@ my %ifconfig_tests = (
DESCRIPTION => 're0',
STATUS => 'Up',
MTU => '1500',
+ TYPE => 'Ethernet',
MACADDR => 'c8:0a:a9:3f:35:fa',
IPADDRESS => '129.132.95.98',
IPMASK => '255.255.255.192',
@@ -74,6 +75,7 @@ my %ifconfig_tests = (
DESCRIPTION => 'bce0',
STATUS => 'Up',
MTU => '1500',
+ TYPE => 'Ethernet',
MACADDR => '00:16:18:87:ca:b5',
IPADDRESS => '11.105.11.105',
IPMASK => '255.255.255.192',
@@ -84,6 +86,7 @@ my %ifconfig_tests = (
DESCRIPTION => 'bce0',
STATUS => 'Up',
MTU => '1500',
+ TYPE => 'Ethernet',
MACADDR => '00:16:18:87:ca:b5',
IPADDRESS => '11.105.11.110',
IPMASK => '255.255.255.255',
@@ -94,6 +97,7 @@ my %ifconfig_tests = (
DESCRIPTION => 'bce0',
STATUS => 'Up',
MTU => '1500',
+ TYPE => 'Ethernet',
MACADDR => '00:16:18:87:ca:b5',
IPADDRESS => '11.105.11.111',
IPMASK => '255.255.255.255',
@@ -104,6 +108,7 @@ my %ifconfig_tests = (
DESCRIPTION => 'bce1',
STATUS => 'Up',
MTU => '1500',
+ TYPE => 'Ethernet',
MACADDR => '00:16:18:87:ca:b6',
IPADDRESS => '192.168.12.105',
IPMASK => '255.255.255.0',
================================================================
Commit: 142619796e9c249aa9960706a4962ef281bb42c1
https://github.com/fusinv/fusioninventory-agent/commit/142619796e9c249aa9960706a4962ef281bb42c1
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-18 (Wed, 18 Apr 2012)
Changed paths:
A resources/linux/proc/cpuinfo/linux-armel-2
M t/inventory/linux/cpu.t
Log Message:
-----------
new test sample
diff --git a/resources/linux/proc/cpuinfo/linux-armel-2 b/resources/linux/proc/cpuinfo/linux-armel-2
new file mode 100644
index 0000000..53128ef
--- /dev/null
+++ b/resources/linux/proc/cpuinfo/linux-armel-2
@@ -0,0 +1,12 @@
+Processor : Feroceon 88FR131 rev 1 (v5l)
+BogoMIPS : 1192.75
+Features : swp half thumb fastmult edsp
+CPU implementer : 0x56
+CPU architecture: 5TE
+CPU variant : 0x2
+CPU part : 0x131
+CPU revision : 1
+
+Hardware : Marvell SheevaPlug Reference Board
+Revision : 0000
+Serial : 0000000000000000
diff --git a/t/inventory/linux/cpu.t b/t/inventory/linux/cpu.t
index 4493dd3..a82dd7c 100755
--- a/t/inventory/linux/cpu.t
+++ b/t/inventory/linux/cpu.t
@@ -221,6 +221,12 @@ my %arm = (
ARCH => 'ARM',
TYPE => 'XScale-80219 rev 0 (v5l)'
}
+ ],
+ 'linux-armel-2' => [
+ {
+ ARCH => 'ARM',
+ TYPE => 'Feroceon 88FR131 rev 1 (v5l)'
+ }
]
);
@@ -303,7 +309,8 @@ foreach my $test (keys %mips) {
foreach my $test (keys %arm) {
my $file = "resources/linux/proc/cpuinfo/$test";
my @cpus = FusionInventory::Agent::Task::Inventory::Input::Linux::Archs::ARM::_getCPUsFromProc(file => $file);
- is_deeply(\@cpus, $arm{$test}, $test);
+ is_deeply(\@cpus, $arm{$test}, $test) or print Dumper(\@cpus);
+ use Data::Dumper;
}
foreach my $test (keys %ppc) {
================================================================
Commit: 16faee5570b4ea78a3bb3d263f485b55e81cd6d1
https://github.com/fusinv/fusioninventory-agent/commit/16faee5570b4ea78a3bb3d263f485b55e81cd6d1
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-18 (Wed, 18 Apr 2012)
Changed paths:
M t/inventory/linux/cpu.t
Log Message:
-----------
fix expected results
diff --git a/t/inventory/linux/cpu.t b/t/inventory/linux/cpu.t
index a82dd7c..40a05f0 100755
--- a/t/inventory/linux/cpu.t
+++ b/t/inventory/linux/cpu.t
@@ -205,11 +205,11 @@ my %alpha = (
my %sparc = (
'linux-sparc-1' => [
{
- ARCH => 'ARM',
+ ARCH => 'SPARC',
TYPE => 'TI UltraSparc IIIi (Jalapeno)'
},
{
- ARCH => 'ARM',
+ ARCH => 'SPARC',
TYPE => 'TI UltraSparc IIIi (Jalapeno)'
}
]
================================================================
Commit: fa97310708e6d86b02848ef0f66581d667ecdcb2
https://github.com/fusinv/fusioninventory-agent/commit/fa97310708e6d86b02848ef0f66581d667ecdcb2
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-18 (Wed, 18 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/ARM.pm
M t/inventory/linux/cpu.t
Log Message:
-----------
add processor speed
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/ARM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/ARM.pm
index 46a1ee3..b90361b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/ARM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Archs/ARM.pm
@@ -34,8 +34,9 @@ sub _getCPUsFromProc {
foreach my $cpu (getCPUsFromProc(@_)) {
push @cpus, {
- ARCH => 'ARM',
- TYPE => $cpu->{processor}
+ ARCH => 'ARM',
+ TYPE => $cpu->{processor},
+ SPEED => $cpu->{bogomips}
};
}
diff --git a/t/inventory/linux/cpu.t b/t/inventory/linux/cpu.t
index 40a05f0..807b595 100755
--- a/t/inventory/linux/cpu.t
+++ b/t/inventory/linux/cpu.t
@@ -218,14 +218,16 @@ my %sparc = (
my %arm = (
'linux-armel-1' => [
{
- ARCH => 'ARM',
- TYPE => 'XScale-80219 rev 0 (v5l)'
+ ARCH => 'ARM',
+ SPEED => '593.10',
+ TYPE => 'XScale-80219 rev 0 (v5l)'
}
],
'linux-armel-2' => [
{
- ARCH => 'ARM',
- TYPE => 'Feroceon 88FR131 rev 1 (v5l)'
+ ARCH => 'ARM',
+ SPEED => '1192.75',
+ TYPE => 'Feroceon 88FR131 rev 1 (v5l)'
}
]
);
================================================================
Commit: ffde6ef269ce2c028fbe7a872d3cd0e59967acfd
https://github.com/fusinv/fusioninventory-agent/commit/ffde6ef269ce2c028fbe7a872d3cd0e59967acfd
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-18 (Wed, 18 Apr 2012)
Changed paths:
A resources/win32/registry/xp-uninstall.reg
A t/inventory/windows/softwares.t
Log Message:
-----------
initial import
diff --git a/resources/win32/registry/xp-uninstall.reg b/resources/win32/registry/xp-uninstall.reg
new file mode 100644
index 0000000..f23ea61
Binary files /dev/null and b/resources/win32/registry/xp-uninstall.reg differ
diff --git a/t/inventory/windows/softwares.t b/t/inventory/windows/softwares.t
new file mode 100755
index 0000000..a5165d0
--- /dev/null
+++ b/t/inventory/windows/softwares.t
@@ -0,0 +1,7107 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+#use utf8;
+use lib 't';
+
+use Encode;
+use English qw(-no_match_vars);
+use Test::More;
+use Test::MockModule;
+
+use FusionInventory::Test::Utils;
+
+BEGIN {
+ # use mock modules for non-available ones
+ push @INC, 't/fake/windows' if $OSNAME ne 'MSWin32';
+}
+
+use FusionInventory::Agent::Task::Inventory::Input::Win32::Softwares;
+
+my %tests = (
+ xp => [
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB977914)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/02/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB977914',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=977914',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Kay Bruns',
+ NAME => 'Super User Run (SuRun)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'SuRun',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://kay-bruns.de/surun',
+ VERSION_MAJOR => undef,
+ VERSION => '1.2.0.8',
+ UNINSTALL_STRING => 'C:\\\\WINDOWS\\\\SuRun.exe /UNINSTALL',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2641653)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/03/2012',
+ NO_REMOVE => undef,
+ GUID => 'KB2641653',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2641653',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Office 2010 (KB2553310) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-006E-0409-0000-0000000FF1CE}_Office14.PROPLUS_{73E67A3A-8D61-44EF-90C2-1697C3DBE668}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553310',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553310',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Office 2010 Service Pack 1 (SP1)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0044-0409-0000-0000000FF1CE}_Office14.PROPLUS_{6BD185A0-E67F-4F77-8BCD-E34EA6AE76DF}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2460049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2460049',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office InfoPath MUI (English) 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '04/10/2011',
+ NO_REMOVE => undef,
+ GUID => '{90140000-0044-0409-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB2141007)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/09/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2141007',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2141007',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Microsoft .NET Framework 4 Client Profile (KB2518870)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => '{3C3901C5-3455-3E0A-A214-0B093A5070A6}.KB2518870',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com/kb/2518870',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {2CE2EB39-45C8-32D4-8A99-5529C38F1B99} /parameterfolder Client',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2508272)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/04/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2508272',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2508272',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office Access MUI (English) 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '04/10/2011',
+ NO_REMOVE => undef,
+ GUID => '{90140000-0015-0409-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2506223)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/04/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2506223',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2506223',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'O&O Software GmbH',
+ NAME => 'O&O DiskStat Workstation',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '23/02/2011',
+ NO_REMOVE => undef,
+ GUID => '{754F24D0-D2FF-4801-B7ED-588D4E88415B}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.oo-software.com',
+ VERSION_MAJOR => undef,
+ VERSION => '2.0.386',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB973687)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/12/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB973687',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=973687',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2115168)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/08/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2115168',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2115168',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB950582)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '01/11/2008',
+ NO_REMOVE => undef,
+ GUID => 'KB950582',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=950582',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB951072-v2)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2008',
+ NO_REMOVE => undef,
+ GUID => 'KB951072-v2',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=951072',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '2',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Media Player (KB954155)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB954155_WM9',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/?kbid=954155',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2618451)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/12/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2618451',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2618451',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Microsoft .NET Framework 4 Extended (KB2656351)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => '{0A0CADCF-78DA-33C4-A350-CD51849B9702}.KB2656351',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com/kb/2656351',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'c:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Extended\\\\setup.exe /uninstallpatch {4952F442-5C1A-38EB-8C23-B18EFE77E20C} /parameterfolder Extended',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB982381)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/06/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB982381-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=982381',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB971557)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB971557',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=971557',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB923561)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/05/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB923561',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=923561',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB2345886)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/10/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2345886',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2345886',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB978706)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/02/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB978706',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=978706',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Hotfix for Windows XP (KB954550-v5)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '02/04/2009',
+ NO_REMOVE => 1,
+ GUID => 'KB954550-v5',
+ FROM => 'registry',
+ RELEASETYPE => 'Hotfix',
+ HELPLINK => 'http://support.microsoft.com?kbid=954550',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '5',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2478971)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/02/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2478971',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2478971',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB960803)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/05/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB960803',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=960803',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Symantec Corporation',
+ NAME => 'Symantec Endpoint Protection',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '25/01/2012',
+ NO_REMOVE => undef,
+ GUID => '{FA689023-0B72-4771-98A6-A1C927E58207}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '12.1.1000.157',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => undef,
+ NAME => 'Microsoft .NET Framework 1.1 Security Update (KB2656370)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'M2656370',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2624667)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/12/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2624667',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2624667',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2296011)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/10/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2296011',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2296011',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Media Player (KB978695)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/06/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB978695_WM9',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/?kbid=978695',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2544893)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '21/06/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2544893',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2544893',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft .NET Framework 3.5 SP1',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/01/2012',
+ NO_REMOVE => undef,
+ GUID => '{CE2CDD62-0124-36CA-84D3-9F4DCF5C5BD9}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '3.5.30729',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Microsoft .NET Framework 4 Client Profile (KB2446708)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => '{3C3901C5-3455-3E0A-A214-0B093A5070A6}.KB2446708',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com/kb/2446708',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {3E0806DB-3085-378A-840A-F0D3AE3609D1} /parameterfolder Client',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Hotfix for Windows XP (KB2570791)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '04/10/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2570791',
+ FROM => 'registry',
+ RELEASETYPE => 'Hotfix',
+ HELPLINK => 'http://support.microsoft.com?kbid=2570791',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB951376-v2)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2008',
+ NO_REMOVE => 1,
+ GUID => 'KB951376-v2',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=951376',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '2',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office Shared Setup Metadata MUI (English) 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '04/10/2011',
+ NO_REMOVE => undef,
+ GUID => '{90140000-0115-0409-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Office 2010 Service Pack 1 (SP1)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-001A-0409-0000-0000000FF1CE}_Office14.PROPLUS_{6BD185A0-E67F-4F77-8BCD-E34EA6AE76DF}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2460049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2460049',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB2183461)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/08/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2183461-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2183461',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2555917)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '19/07/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2555917',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2555917',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'LogMeIn Inc.',
+ NAME => 'Network Console',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/10/2010',
+ NO_REMOVE => 1,
+ GUID => '{5B21BB9A-E23E-472b-AD2A-FB9B06A4727C}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.logmein.com',
+ VERSION_MAJOR => undef,
+ VERSION => '9.00.175',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB958215)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/01/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB958215',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=958215',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office Outlook MUI (English) 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '17/04/2012',
+ NO_REMOVE => undef,
+ GUID => '{90140000-001A-0409-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Office 2010 (KB2553385) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{28FAC187-7C0E-413A-B90A-76F19D0FBF30}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553385',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553385',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2567680)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/08/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2567680',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2567680',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office Professional Plus 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '17/04/2012',
+ NO_REMOVE => undef,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Step By Step Interactive Training (KB923723)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '23/08/2007',
+ NO_REMOVE => undef,
+ GUID => 'KB923723',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/923723',
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '20050502.101010',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB2360131)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/10/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2360131-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2360131',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Adobe Systems Incorporated',
+ NAME => 'Adobe Reader X (10.1.2)',
+ VERSION_MINOR => undef,
+ COMMENTS => ' ',
+ INSTALLDATE => '09/02/2012',
+ NO_REMOVE => undef,
+ GUID => '{AC76BA86-7AD7-1033-7B44-AA1000000001}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.adobe.com',
+ VERSION_MAJOR => undef,
+ VERSION => '10.1.2',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB971961)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '10/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB971961-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=971961',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB960225)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '02/04/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB960225',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=960225',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2229593)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '19/07/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2229593',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2229593',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB974455)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB974455-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=974455',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2507618)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/04/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2507618',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2507618',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Microsoft .NET Framework 4 Client Profile (KB2539636)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => '{3C3901C5-3455-3E0A-A214-0B093A5070A6}.KB2539636',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com/kb/2539636',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {7E97AB83-C1FE-38DE-B848-877E0A4BD81E} /parameterfolder Client',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB981332)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '19/04/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB981332-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=981332',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB980232)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '19/04/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB980232',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=980232',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2393802)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/02/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2393802',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2393802',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2485663)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/04/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2485663',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2485663',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2286198)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/08/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2286198',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2286198',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB974318)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/12/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB974318',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=974318',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB974571)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB974571',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=974571',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB978037)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/02/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB978037',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=978037',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => undef,
+ NAME => 'OSSEC HIDS 2.5.1',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'OSSEC',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://www.ossec.net/main/support/',
+ URL_INFO_ABOUT => 'http://www.ossec.net',
+ VERSION_MAJOR => undef,
+ VERSION => '2.5.1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB951748)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2008',
+ NO_REMOVE => 1,
+ GUID => 'KB951748',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=951748',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Media Player (KB911564)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '05/04/2006',
+ NO_REMOVE => undef,
+ GUID => 'KB911564',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/?kbid=911564',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Sun Microsystems, Inc.',
+ NAME => 'Java Auto Updater',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/02/2012',
+ NO_REMOVE => 1,
+ GUID => '{4A03706F-666A-4037-7777-5F2748764D10}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '2.0.7.1',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2660465)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '21/02/2012',
+ NO_REMOVE => undef,
+ GUID => 'KB2660465',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2660465',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Media Player 6.4 (KB925398)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '13/12/2006',
+ NO_REMOVE => undef,
+ GUID => 'KB925398_WMP64',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com/?kbid=925398',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB956844)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB956844',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=956844',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2483614)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '28/03/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2483614',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2483614',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Microsoft .NET Framework 3.5 SP1 (KB963707)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => '{CE2CDD62-0124-36CA-84D3-9F4DCF5C5BD9}.KB963707',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com/kb/963707',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'C:\\\\WINDOWS\\\\system32\\\\msiexec.exe /package {CE2CDD62-0124-36CA-84D3-9F4DCF5C5BD9} /uninstall {B2AE9C82-DC7B-3641-BFC8-87275C4F3607} /qb+ REBOOTPROMPT=\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB954600)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/01/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB954600',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=954600',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB978251)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/02/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB978251',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=978251',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => undef,
+ NAME => 'Microsoft .NET Framework 1.1',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'Microsoft .NET Framework 1.1 (1033)',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => 'msiexec.exe /X {CB2F7EDD-9D1F-43C1-90FC-4F52EAE172A1}',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Excel 2010 (KB2553439) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{3D1F379C-AA64-4823-90A4-A8DDD4B48C21}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553439',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553439',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'WebFldrs XP',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '05/04/2006',
+ NO_REMOVE => 1,
+ GUID => '{350C97B0-3D7C-4EE8-BAA9-00BCB3D54227}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '9.50.7523',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Outlook Social Connector 2010 (KB2553406) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-001A-0409-0000-0000000FF1CE}_Office14.PROPLUS_{1EEFF749-6F29-4F0B-AB08-4C6EA52AA110}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553406',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553406',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Office 2010 (KB2553267) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{18B3CF2A-73F7-4716-B1AE-86D68726D408}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553267',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553267',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows Internet Explorer 8 (KB2447568)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '28/03/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2447568-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2447568',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2639417)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/12/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2639417',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2639417',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'ScriptLogic Corporation',
+ NAME => 'Privilege Authority Client',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/02/2012',
+ NO_REMOVE => undef,
+ GUID => '{41BDFA12-0E3D-4AA4-ACBC-CF64E1AE18FF}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.scriptlogic.com',
+ VERSION_MAJOR => undef,
+ VERSION => '2.7.1.80',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Proxy Networks, Inc.',
+ NAME => 'PROXY Pro Master',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '11/12/2009',
+ NO_REMOVE => undef,
+ GUID => '{1AE60321-BFC1-43F3-95D6-B03C420AF04D}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.proxynetworks.com',
+ VERSION_MAJOR => undef,
+ VERSION => '7.0.1515',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB956802)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/01/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB956802',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=956802',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB975560)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/02/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB975560',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=975560',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB2675157)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '17/04/2012',
+ NO_REMOVE => undef,
+ GUID => 'KB2675157-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2675157',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB968389)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB968389',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=968389',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Office 2010 (KB2596964) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{ED31DE9A-3E13-4E2C-9106-E0D8AFFB9FA6}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2596964',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2596964',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB955839)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/01/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB955839',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=955839',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Security Update for Microsoft Office 2010 (KB2589320) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{DCE6D0BF-93E4-46C5-9A7C-F1EFF9707C02}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2589320',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2589320',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB2264107)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/08/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2264107',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2264107',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB953838)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2008',
+ NO_REMOVE => 1,
+ GUID => 'KB953838',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=953838',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft .NET Framework 2.0 Service Pack 2',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '17/04/2012',
+ NO_REMOVE => undef,
+ GUID => '{C09FB3CD-3D0C-3F2D-899A-6A1D67F2073F}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '2.2.30729',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB978601)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '19/04/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB978601',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=978601',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Office 2010 Service Pack 1 (SP1)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-001B-0409-0000-0000000FF1CE}_Office14.PROPLUS_{6BD185A0-E67F-4F77-8BCD-E34EA6AE76DF}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2460049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2460049',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2536276-v2)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/08/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2536276-v2',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2536276',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '2',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB956841)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '31/10/2008',
+ NO_REMOVE => undef,
+ GUID => 'KB956841',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=956841',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2479628)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/02/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2479628',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2479628',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Windows Presentation Foundation',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '10/04/2008',
+ NO_REMOVE => undef,
+ GUID => '{BAF78226-3200-4DB4-BE33-4D922A799840}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '3.0.6920.0',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Media Player (KB968816)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB968816_WM9',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/?kbid=968816',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB978338)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '19/04/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB978338',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=978338',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft .NET Framework 4 Client Profile',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '17/04/2012',
+ NO_REMOVE => undef,
+ GUID => '{3C3901C5-3455-3E0A-A214-0B093A5070A6}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://go.microsoft.com/fwlink/?LinkId=164164',
+ VERSION_MAJOR => undef,
+ VERSION => '4.0.30319',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => undef,
+ NAME => 'QT Lite 4.1.0',
+ VERSION_MINOR => 1,
+ COMMENTS => undef,
+ INSTALLDATE => '23/11/2011',
+ NO_REMOVE => undef,
+ GUID => 'quicktime_lite_is1',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => 4,
+ VERSION => '4.1.0',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB973354)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB973354',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=973354',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB2616676-v2)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '27/09/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2616676-v2',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2616676',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '2',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2535512)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '21/06/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2535512',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2535512',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Microsoft .NET Framework 4 Client Profile (KB2473228)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => '{3C3901C5-3455-3E0A-A214-0B093A5070A6}.KB2473228',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com/kb/2473228',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {FD988F49-E1C8-3C84-9683-0448B6BB8E20} /parameterfolder Client',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Media Player 10 (KB911565)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '05/04/2006',
+ NO_REMOVE => undef,
+ GUID => 'KB911565',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/?kbid=911565',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Office 2010 Service Pack 1 (SP1)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-00BA-0409-0000-0000000FF1CE}_Office14.PROPLUS_{6BD185A0-E67F-4F77-8BCD-E34EA6AE76DF}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2460049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2460049',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'O&O Software GmbH',
+ NAME => 'O&O Defrag Workstation',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '30/04/2011',
+ NO_REMOVE => undef,
+ GUID => '{C6DC78B1-C060-4621-8140-226380141AA1}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.oo-software.com',
+ VERSION_MAJOR => undef,
+ VERSION => '11.5.4065',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2419632)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '17/01/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2419632',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2419632',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB957095)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '31/10/2008',
+ NO_REMOVE => undef,
+ GUID => 'KB957095',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=957095',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Hotfix for Windows XP (KB961118)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/05/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB961118',
+ FROM => 'registry',
+ RELEASETYPE => 'Hotfix',
+ HELPLINK => 'http://support.microsoft.com?kbid=961118',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Media Player 10 (KB936782)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '23/09/2007',
+ NO_REMOVE => undef,
+ GUID => 'KB936782_WMP10',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/?kbid=936782',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Hotfix for Windows XP (KB2158563)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '22/11/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2158563',
+ FROM => 'registry',
+ RELEASETYPE => 'Hotfix',
+ HELPLINK => 'http://support.microsoft.com?kbid=2158563',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'MSXML 4.0 SP2 (KB954430)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/12/2009',
+ NO_REMOVE => undef,
+ GUID => '{86493ADD-824D-4B8E-BD72-8C5DCDC52A71}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '4.20.9870.0',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB950760)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '10/04/2008',
+ NO_REMOVE => undef,
+ GUID => 'KB950760',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=950760',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Office 2010 (KB2553181) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{48E1B6C2-7299-4F3F-AA63-42F0ACE55AA4}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553181',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553181',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB979683)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '19/04/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB979683',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=979683',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Microsoft .NET Framework 3.5 SP1 (KB2657424)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => '{CE2CDD62-0124-36CA-84D3-9F4DCF5C5BD9}.KB2657424',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com/kb/2657424',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'C:\\\\windows\\\\system32\\\\msiexec.exe /package {CE2CDD62-0124-36CA-84D3-9F4DCF5C5BD9} /uninstall {F6F5AC31-9833-3E77-AC8E-8E910CAB39AE} /qb+ REBOOTPROMPT=\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2079403)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/08/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2079403',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2079403',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Security Update for Microsoft Visio Viewer 2010 (KB2597170) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{011FE2F6-5427-4EC9-AE80-6B28E69781C1}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2597170',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2597170',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Microsoft .NET Framework 4 Client Profile (KB2572078)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => '{3C3901C5-3455-3E0A-A214-0B093A5070A6}.KB2572078',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com/kb/2572078',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {DB31DEDD-BF95-31E7-A9B7-5480561CEFF3} /parameterfolder Client',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB2544521)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '21/06/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2544521-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2544521',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office PowerPoint MUI (English) 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '04/10/2011',
+ NO_REMOVE => undef,
+ GUID => '{90140000-0018-0409-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB975562)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/06/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB975562',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=975562',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Hummingbird Ltd.',
+ NAME => 'Hummingbird Exceed 2006',
+ VERSION_MINOR => undef,
+ COMMENTS => 'Exceed 2006 Setup for Windows Installer',
+ INSTALLDATE => '23/08/2007',
+ NO_REMOVE => undef,
+ GUID => '{35DFFE62-9F48-4236-9249-9EAB5C7123C9}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.hummingbird.com',
+ VERSION_MAJOR => undef,
+ VERSION => '11.0.28.0',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for CAPICOM (KB931906)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => undef,
+ GUID => '{0EFDF2F9-836D-4EB7-A32D-038BD3F1FB2A}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '2.1.0.2',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2584146)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '17/01/2012',
+ NO_REMOVE => undef,
+ GUID => 'KB2584146',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2584146',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB981997)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/08/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB981997',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=981997',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB975713)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/02/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB975713',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=975713',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => undef,
+ NAME => 'Windows Media Player 10',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'Windows Media Player',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'PDFCREATOR1.2.1XP',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '12/07/2011',
+ NO_REMOVE => undef,
+ GUID => '{5D6991B6-0406-4518-9A6E-3DBBF760BB1B}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '1.2.1.0',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB981322)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/09/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB981322',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=981322',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Windows Genuine Advantage Notifications (KB905474)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/06/2006',
+ NO_REMOVE => 1,
+ GUID => 'WgaNotify',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com?kbid=905474',
+ URL_INFO_ABOUT => 'http://www.microsoft.com/genuine',
+ VERSION_MAJOR => undef,
+ VERSION => '1.5.0554.0',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB956390)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '31/10/2008',
+ NO_REMOVE => undef,
+ GUID => 'KB956390',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=956390',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB953839)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2008',
+ NO_REMOVE => undef,
+ GUID => 'KB953839',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=953839',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB973525)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB973525',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=973525',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2524375)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '28/03/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2524375',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2524375',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB974455)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB974455',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=974455',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Oracle',
+ NAME => 'Java(TM) 6 Update 31',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/02/2012',
+ NO_REMOVE => undef,
+ GUID => '{26A24AE4-039D-4CA4-87B4-2F83216031FF}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://java.com',
+ VERSION_MAJOR => undef,
+ VERSION => '6.0.310',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Hotfix for Windows XP (KB976098-v2)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '01/02/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB976098-v2',
+ FROM => 'registry',
+ RELEASETYPE => 'Hotfix',
+ HELPLINK => 'http://support.microsoft.com?kbid=976098',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '2',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => undef,
+ NAME => 'PDFTK Builder 2.3',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'PDFTK Builder_is1',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft OneNote 2010 (KB2553290) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{BEBC2484-290C-46AD-9834-6DAD1FA80273}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553290',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553290',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB2559049)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/08/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2559049-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2559049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB951698)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2008',
+ NO_REMOVE => 1,
+ GUID => 'KB951698',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=951698',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'MSXML 6.0 Parser (KB933579)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '10/04/2008',
+ NO_REMOVE => undef,
+ GUID => '{0A869A65-8C94-4F7C-A5C7-972D3C8CED9E}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '6.10.1200.0',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Symantec Corporation',
+ NAME => 'Symantec Backup Exec Remote Agent for Windows Systems',
+ VERSION_MINOR => undef,
+ COMMENTS => 'Symantec Backup Exec Remote Agent for Windows Systems 32-bit',
+ INSTALLDATE => '10/12/2009',
+ NO_REMOVE => undef,
+ GUID => '{F72C6003-60EF-448D-AC89-0B69C97678DC}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.symantec.com',
+ VERSION_MAJOR => undef,
+ VERSION => '11.0.6235',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Security Update for Microsoft PowerPoint 2010 (KB2553185) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{61461470-8168-4F4B-97B7-617AF354F028}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553185',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553185',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'O&O Software GmbH',
+ NAME => 'O&O DriveLED Workstation',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '23/02/2011',
+ NO_REMOVE => undef,
+ GUID => '{98166E4E-CB20-4039-AD27-DF0BFA772352}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.oo-software.com',
+ VERSION_MAJOR => undef,
+ VERSION => '4.1.119',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB979309)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '19/04/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB979309',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=979309',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Software Update for Web Folders (English) 14',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '04/10/2011',
+ NO_REMOVE => 1,
+ GUID => '{90140000-0010-0409-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => undef,
+ NAME => 'K-Lite Codec Pack 7.1.0 (Standard)',
+ VERSION_MINOR => 1,
+ COMMENTS => undef,
+ INSTALLDATE => '23/11/2011',
+ NO_REMOVE => undef,
+ GUID => 'KLiteCodecPack_is1',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => 7,
+ VERSION => '7.1.0',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office OneNote MUI (English) 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/11/2011',
+ NO_REMOVE => undef,
+ GUID => '{90140000-00A1-0409-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Outlook 2010 (KB2553248) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-001A-0409-0000-0000000FF1CE}_Office14.PROPLUS_{5EBDE1DE-3B28-4134-AB00-85CFF2B4F94D}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553248',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553248',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB971961)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB971961',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=971961',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Windows Media Player 10 Hotfix - KB888656',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '05/04/2006',
+ NO_REMOVE => undef,
+ GUID => 'KB888656',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com?kbid=888656',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB982214)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/08/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB982214',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=982214',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Windows Management Framework Core',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '01/02/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB968930',
+ FROM => 'registry',
+ RELEASETYPE => 'Software Update',
+ HELPLINK => 'http://go.microsoft.com/fwlink/?LinkID=163790',
+ URL_INFO_ABOUT => 'http://go.microsoft.com/fwlink/?LinkID=163792',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2121546)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/09/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2121546',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2121546',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Microsoft .NET Framework 4 Client Profile (KB2633870)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => '{3C3901C5-3455-3E0A-A214-0B093A5070A6}.KB2633870',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com/kb/2633870',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {8DDEFC7E-0C61-3D11-AFC6-5414F2DAFD01} /parameterfolder Client',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Hotfix for Windows XP (KB979306)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '05/04/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB979306',
+ FROM => 'registry',
+ RELEASETYPE => 'Hotfix',
+ HELPLINK => 'http://support.microsoft.com?kbid=979306',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB971737)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/12/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB971737',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=971737',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Office 2010 (KB2566458)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{EFB525A0-E1C0-4E32-9968-FE401BC87363}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2566458',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2566458',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Office 2010 Service Pack 1 (SP1)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0117-0409-0000-0000000FF1CE}_Office14.PROPLUS_{6BD185A0-E67F-4F77-8BCD-E34EA6AE76DF}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2460049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2460049',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB971468)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/02/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB971468',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=971468',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB950974)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2008',
+ NO_REMOVE => 1,
+ GUID => 'KB950974',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=950974',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2440591)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/12/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2440591',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2440591',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'LogMeIn Inc.',
+ NAME => 'Network Console',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'Network Console',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://www.logmein.com',
+ URL_INFO_ABOUT => 'http://www.logmein.com',
+ VERSION_MAJOR => undef,
+ VERSION => '9.00.175',
+ UNINSTALL_STRING => 'C:\\\\Program Files\\\\Network Console\\\\NetworkConsole.exe uninstall /I{5B21BB9A-E23E-472b-AD2A-FB9B06A4727C}',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'FusionInventory Team',
+ NAME => 'FusionInventory Agent',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'FusionInventory Agent',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.FusionInventory.org',
+ VERSION_MAJOR => undef,
+ VERSION => '2.2.0-2',
+ UNINSTALL_STRING => 'C:\\\\Program Files\\\\FusionInventory-Agent\\\\uninstFI.exe',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB982132)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/10/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB982132',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=982132',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Security Update for Microsoft Office 2010 (KB2553096)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{10802A6D-EDBF-4383-BCBD-9D5B32F56D35}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553096',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553096',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB973904)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/12/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB973904',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=973904',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office Proofing (English) 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '04/10/2011',
+ NO_REMOVE => undef,
+ GUID => '{90140000-002C-0409-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows Internet Explorer 8 (KB976749)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '10/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB976749-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=976749',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB975025)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB975025',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=975025',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Visual C++ 2005 Redistributable',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '29/11/2011',
+ NO_REMOVE => undef,
+ GUID => '{710f4c1c-cc18-4c49-8cbf-51240c89a1a2}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '8.0.61001',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2592799)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/10/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2592799',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2592799',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft .NET Framework 1.1',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '17/04/2012',
+ NO_REMOVE => undef,
+ GUID => '{CB2F7EDD-9D1F-43C1-90FC-4F52EAE172A1}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '1.1.4322',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office Proof (English) 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/12/2011',
+ NO_REMOVE => undef,
+ GUID => '{90140000-001F-0409-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB2647516)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '21/02/2012',
+ NO_REMOVE => undef,
+ GUID => 'KB2647516-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2647516',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Office 2010 Service Pack 1 (SP1)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-002C-0409-0000-0000000FF1CE}_Office14.PROPLUS_{7CA93DF4-8902-449E-A42E-4C5923CFBDE3}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2460049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2460049',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB971657)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB971657',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=971657',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Hotfix for Microsoft .NET Framework 3.5 SP1 (KB958484)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => '{CE2CDD62-0124-36CA-84D3-9F4DCF5C5BD9}.KB958484',
+ FROM => 'registry',
+ RELEASETYPE => 'Hotfix',
+ HELPLINK => 'http://support.microsoft.com/kb/958484',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'C:\\\\windows\\\\system32\\\\msiexec.exe /package {CE2CDD62-0124-36CA-84D3-9F4DCF5C5BD9} /uninstall {A7EEA2F2-BFCD-4A54-A575-7B81A786E658} /qb+ REBOOTPROMPT=\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB980218)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/06/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB980218',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=980218',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Office 2010 Service Pack 1 (SP1)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-001F-040C-0000-0000000FF1CE}_Office14.PROPLUS_{46298F6A-1E7E-4D4A-B5F5-106A4F0E48C6}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2460049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2460049',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB961501)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB961501',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=961501',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft .NET Framework 4 Extended',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'Microsoft .NET Framework 4 Extended',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://go.microsoft.com/fwlink/?LinkId=164164',
+ VERSION_MAJOR => undef,
+ VERSION => '4.0.30319',
+ UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Extended\\\\Setup.exe /repair /x86 /parameterfolder Extended',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2508429)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/04/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2508429',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2508429',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB956391)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '31/10/2008',
+ NO_REMOVE => undef,
+ GUID => 'KB956391',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=956391',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB973815)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB973815',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=973815',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB981852)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/08/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB981852',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=981852',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2570222)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/08/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2570222',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2570222',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB2467659)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/12/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2467659',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2467659',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Media Player (KB952069)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/01/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB952069_WM9',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/?kbid=952069',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2585542)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '17/01/2012',
+ NO_REMOVE => undef,
+ GUID => 'KB2585542',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2585542',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Office 2010 Service Pack 1 (SP1)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-006E-0409-0000-0000000FF1CE}_Office14.PROPLUS_{4560037C-E356-444A-A015-D21F487D809E}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2460049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2460049',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Office 2010 Service Pack 1 (SP1)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0019-0409-0000-0000000FF1CE}_Office14.PROPLUS_{6BD185A0-E67F-4F77-8BCD-E34EA6AE76DF}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2460049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2460049',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2536276)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '21/06/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2536276',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2536276',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB954459)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/01/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB954459',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=954459',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows Media Player 10 (KB912452)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '05/04/2006',
+ NO_REMOVE => undef,
+ GUID => 'KB912452',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/?kbid=912452',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB978207)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '25/01/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB978207-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=978207',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => undef,
+ NAME => 'Microsoft .NET Framework 1.1 Security Update (KB979906)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'M979906',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office Shared MUI (English) 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/11/2011',
+ NO_REMOVE => undef,
+ GUID => '{90140000-006E-0409-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB958687)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/01/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB958687',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=958687',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => undef,
+ NAME => 'Microsoft .NET Framework 1.1 Security Update (KB2656353)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'M2656353',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB954211)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '31/10/2008',
+ NO_REMOVE => undef,
+ GUID => 'KB954211',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=954211',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB961373)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/05/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB961373',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=961373',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2360937)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/10/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2360937',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2360937',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2506212)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/04/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2506212',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2506212',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Office 2010 Service Pack 1 (SP1)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0018-0409-0000-0000000FF1CE}_Office14.PROPLUS_{6BD185A0-E67F-4F77-8BCD-E34EA6AE76DF}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2460049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2460049',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Media Player 10 (KB917734)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/06/2006',
+ NO_REMOVE => undef,
+ GUID => 'KB917734_WMP10',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/?kbid=917734',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB959426)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/05/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB959426',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=959426',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'O&O Software GmbH',
+ NAME => 'O&O DiskImage Workstation',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '17/01/2012',
+ NO_REMOVE => 1,
+ GUID => '{8B2E50B7-E372-4045-A5FC-3E6A30A6C871}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.oo-software.com',
+ VERSION_MAJOR => undef,
+ VERSION => '6.0.440',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Office 2010 Service Pack 1 (SP1)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-001F-0409-0000-0000000FF1CE}_Office14.PROPLUS_{99ACCA38-6DD3-48A8-96AE-A283C9759279}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2460049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2460049',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Office 2010 (KB2597091) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{4D98EEEA-A31B-42FA-991A-F989594F4DA5}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2597091',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2597091',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB951066)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2008',
+ NO_REMOVE => 1,
+ GUID => 'KB951066',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=951066',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB2618444)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/12/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2618444-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2618444',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2160329)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/08/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2160329',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2160329',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2603381)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '17/01/2012',
+ NO_REMOVE => undef,
+ GUID => 'KB2603381',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2603381',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Security Update for Microsoft Office 2010 (KB2553091)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{07CA44F3-F5B3-4D12-8C91-EDC5FE91D45C}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553091',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553091',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB950762)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2008',
+ NO_REMOVE => 1,
+ GUID => 'KB950762',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=950762',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2621440)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/03/2012',
+ NO_REMOVE => undef,
+ GUID => 'KB2621440',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2621440',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Microsoft .NET Framework 4 Extended (KB2468871)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => '{0A0CADCF-78DA-33C4-A350-CD51849B9702}.KB2468871',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com/kb/2468871',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'c:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Extended\\\\setup.exe /uninstallpatch {5E9CF3A4-ADB3-3080-A8BF-976A28340758} /parameterfolder Extended',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft .NET Framework 3.5 SP1',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'Microsoft .NET Framework 3.5 SP1',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://go.microsoft.com/fwlink/?LinkId=120337',
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => 'C:\\\\WINDOWS\\\\Microsoft.NET\\\\Framework\\\\v3.5\\\\Microsoft .NET Framework 3.5 SP1\\\\setup.exe',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'O&O Software GmbH',
+ NAME => 'O&O Event Viewer',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '23/02/2011',
+ NO_REMOVE => undef,
+ GUID => '{ED088F40-C86D-4548-9EAB-54CF3FEA3579}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.oo-software.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1.0.270',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows Internet Explorer 8 (KB2362765)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '22/11/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2362765-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2362765',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office Publisher MUI (English) 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '04/10/2011',
+ NO_REMOVE => undef,
+ GUID => '{90140000-0019-0409-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2620712)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/12/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2620712',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2620712',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB923689)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '13/12/2006',
+ NO_REMOVE => undef,
+ GUID => 'KB923689',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=923689',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB982665)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/08/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB982665',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=982665',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2478960)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/02/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2478960',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2478960',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Hotfix for Windows XP (KB969084)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '01/02/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB969084',
+ FROM => 'registry',
+ RELEASETYPE => 'Hotfix',
+ HELPLINK => 'http://support.microsoft.com?kbid=969084',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '3',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'VS Revo Group',
+ NAME => 'Revo Uninstaller 1.93',
+ VERSION_MINOR => undef,
+ COMMENTS => 'Thank you for choosing Revo Uninstaller!',
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'Revo Uninstaller',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://www.revouninstaller.com',
+ URL_INFO_ABOUT => 'http://www.revouninstaller.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1.93',
+ UNINSTALL_STRING => 'C:\\\\Program Files\\\\VS Revo Group\\\\Revo Uninstaller\\\\uninst.exe',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB974112)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB974112',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=974112',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office Proof (Spanish) 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/12/2011',
+ NO_REMOVE => undef,
+ GUID => '{90140000-001F-0C0A-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Office 2010 Service Pack 1 (SP1)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-001F-0C0A-0000-0000000FF1CE}_Office14.PROPLUS_{DEA87BE2-FFCC-4F33-9946-FCBE55A1E998}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2460049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2460049',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB956744)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB956744',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=956744',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB960859)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB960859',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=960859',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Microsoft .NET Framework 4 Client Profile (KB2656368)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => '{3C3901C5-3455-3E0A-A214-0B093A5070A6}.KB2656368',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com/kb/2656368',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {9EC88EA8-4ABE-393C-87BD-90EABB1C4C9B} /parameterfolder Client',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2347290)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/09/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2347290',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2347290',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB963027)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/05/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB963027',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=963027',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB938464)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '31/10/2008',
+ NO_REMOVE => undef,
+ GUID => 'KB938464',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=938464',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB955069)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/01/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB955069',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=955069',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB981957)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/10/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB981957',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=981957',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'User Profile Hive Cleanup Service',
+ VERSION_MINOR => undef,
+ COMMENTS => 'Installer for User Profile Hive Cleanup Service',
+ INSTALLDATE => '23/08/2007',
+ NO_REMOVE => undef,
+ GUID => '{FF77941A-2BFA-4A18-BE2E-69B9498E4D55}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1.6.30',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB978262)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/02/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB978262',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=978262',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2633171)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/12/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2633171',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2633171',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2646524)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '17/01/2012',
+ NO_REMOVE => undef,
+ GUID => 'KB2646524',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2646524',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Windows Journal Viewer',
+ VERSION_MINOR => undef,
+ COMMENTS => 'A viewer for Windows Journal documents.',
+ INSTALLDATE => '05/04/2006',
+ NO_REMOVE => undef,
+ GUID => '{43DCF766-6838-4F9A-8C91-D92DA586DFA8}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '1.5.2316.0',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Microsoft .NET Framework 4 Extended (KB2487367)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => '{0A0CADCF-78DA-33C4-A350-CD51849B9702}.KB2487367',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com/kb/2487367',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'c:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Extended\\\\setup.exe /uninstallpatch {42A3562E-8B4E-39A4-B82D-CC12F82889E3} /parameterfolder Extended',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'XML Paper Specification Shared Components Pack 1.0',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '10/04/2008',
+ NO_REMOVE => 1,
+ GUID => 'XpsEPSC',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com?kbid=test',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB952004)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/05/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB952004',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=952004',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB970430)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/12/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB970430',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=970430',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB971486)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB971486',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=971486',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB2510531)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/04/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2510531-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2510531',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2570947)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/09/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2570947',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2570947',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Adobe Systems Inc.',
+ NAME => 'Adobe AIR',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '08/07/2008',
+ NO_REMOVE => undef,
+ GUID => '{00203668-8170-44A0-BE44-B632FA4D780F}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '1.0.8.4990',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'MSXML 4.0 SP2 (KB973688)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/12/2009',
+ NO_REMOVE => undef,
+ GUID => '{F662A8E6-F4DC-41A2-901E-8C11F044BDEC}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '4.20.9876.0',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB958690)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '02/04/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB958690',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=958690',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB973346)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB973346',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=973346',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB979482)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/06/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB979482',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=979482',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows Internet Explorer 8 (KB975364)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '10/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB975364-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=975364',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Symantec Corporation',
+ NAME => 'Symantec Backup Exec Remote Agent for Windows Systems',
+ VERSION_MINOR => undef,
+ COMMENTS => 'Symantec Backup Exec Remote Agent for Windows Systems 32-bit',
+ INSTALLDATE => '10/12/2009',
+ NO_REMOVE => undef,
+ GUID => 'Remote Agent for Windows Servers',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.symantec.com',
+ VERSION_MAJOR => undef,
+ VERSION => '11.0.6235',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2485376)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/02/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2485376',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2485376',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB976325)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/12/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB976325-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=976325',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB946648)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2008',
+ NO_REMOVE => 1,
+ GUID => 'KB946648',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=946648',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Office 2010 Service Pack 1 (SP1)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0015-0409-0000-0000000FF1CE}_Office14.PROPLUS_{6BD185A0-E67F-4F77-8BCD-E34EA6AE76DF}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2460049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2460049',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2483185)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/02/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2483185',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2483185',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB958644)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '31/10/2008',
+ NO_REMOVE => undef,
+ GUID => 'KB958644',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=958644',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => undef,
+ NAME => 'Windows Media Format Runtime',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'Windows Media Format Runtime',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Windows Genuine Advantage Validation Tool (KB892130)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '12/04/2006',
+ NO_REMOVE => 1,
+ GUID => 'WGA',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com?kbid=892130',
+ URL_INFO_ABOUT => 'http://www.microsoft.com/genuine',
+ VERSION_MAJOR => undef,
+ VERSION => '1.7.0069.2',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Microsoft Windows (KB971513)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB971513',
+ FROM => 'registry',
+ RELEASETYPE => '%HOTFIX%',
+ HELPLINK => 'http://support.microsoft.com/kb/971513',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB977816)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '19/04/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB977816',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=977816',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows Internet Explorer 8 (KB976662)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '01/03/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB976662-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=976662',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Adobe Systems, Inc.',
+ NAME => 'Adobe Shockwave Player 11',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'Adobe Shockwave Player',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://www.adobe.com/support/shockwave',
+ URL_INFO_ABOUT => 'http://www.adobe.com',
+ VERSION_MAJOR => undef,
+ VERSION => '11',
+ UNINSTALL_STRING => 'C:\\\\WINDOWS\\\\system32\\\\adobe\\\\SHOCKW~1\\\\UNWISE.EXE C:\\\\WINDOWS\\\\system32\\\\Adobe\\\\SHOCKW~1\\\\Install.log',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB955759)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/12/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB955759',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=955759',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB2586448)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/10/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2586448-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2586448',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows Internet Explorer 8 (KB980302)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '05/04/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB980302-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=980302',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2279986)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/10/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2279986',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2279986',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB972260)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB972260',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=972260',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2661637)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '21/02/2012',
+ NO_REMOVE => undef,
+ GUID => 'KB2661637',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2661637',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Proxy Networks, Inc.',
+ NAME => 'PROXY Pro Host',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2009',
+ NO_REMOVE => undef,
+ GUID => '{A17F60BF-18E7-49ED-8AA2-8AC82B7F3993}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.proxynetworks.com',
+ VERSION_MAJOR => undef,
+ VERSION => '6.10.1374',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Simon Tatham',
+ NAME => 'PuTTY version 0.58',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'PuTTY_is1',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.chiark.greenend.org.uk/~sgtatham/putty/',
+ VERSION_MAJOR => undef,
+ VERSION => '0.58',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB969897)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB969897',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=969897',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2598479)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '17/01/2012',
+ NO_REMOVE => undef,
+ GUID => 'KB2598479',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2598479',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Hummingbird Ltd.',
+ NAME => 'Hummingbird Connectivity Secure Shell 2006',
+ VERSION_MINOR => undef,
+ COMMENTS => 'Connectivity Secure Shell 2006 Setup for Windows Installer',
+ INSTALLDATE => '23/08/2007',
+ NO_REMOVE => undef,
+ GUID => '{82FA2169-16BD-404E-A743-FDDAC1DA81C1}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.hummingbird.com',
+ VERSION_MAJOR => undef,
+ VERSION => '11.0.6.0',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB969898)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB969898',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=969898',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Adobe Systems Incorporated',
+ NAME => 'Adobe Flash Player 11 Plugin',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/02/2012',
+ NO_REMOVE => undef,
+ GUID => '{35E1B1BF-D8E5-4B7F-9FD6-87D2E5694015}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.adobe.com',
+ VERSION_MAJOR => undef,
+ VERSION => '11.1.102.62',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2476490)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '21/06/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2476490',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2476490',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'OCS Inventory NG Team',
+ NAME => 'OCS Inventory Agent 4.0.4.8',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'OCS Inventory Agent',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://ocsinventory.sourceforge.net',
+ VERSION_MAJOR => undef,
+ VERSION => '4.0.4.8',
+ UNINSTALL_STRING => 'C:\\\\Program Files\\\\OCS Inventory Agent\\\\uninst.exe',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office Excel MUI (English) 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '04/10/2011',
+ NO_REMOVE => undef,
+ GUID => '{90140000-0016-0409-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Hotfix for Windows XP (KB2443685)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '28/03/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2443685',
+ FROM => 'registry',
+ RELEASETYPE => 'Hotfix',
+ HELPLINK => 'http://support.microsoft.com?kbid=2443685',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB2482017)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/02/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2482017-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2482017',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB971633)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB971633',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=971633',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB923789)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'KB923789',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com?kbid=923789',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => 'C:\\\\WINDOWS\\\\system32\\\\MacroMed\\\\Flash\\\\genuinst.exe C:\\\\WINDOWS\\\\system32\\\\MacroMed\\\\Flash\\\\KB923789.inf',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Outlook Social Connector 2010 (KB2553406) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{BC6DFBFD-16DD-47E1-A7EF-2C062930FA4F}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553406',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553406',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Microsoft Windows (KB2564958)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/10/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2564958',
+ FROM => 'registry',
+ RELEASETYPE => '%HOTFIX%',
+ HELPLINK => 'http://support.microsoft.com/kb/2564958',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Security Update for Microsoft SharePoint Workspace 2010 (KB2566445)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{337A3FB9-281D-4EC8-9CC1-7F6DDAC2359F}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2566445',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2566445',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft OneNote 2010 (KB2553290) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-00A1-0409-0000-0000000FF1CE}_Office14.PROPLUS_{9865DC3A-2898-48D9-B96A-46397571C934}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553290',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553290',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB980436)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/08/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB980436',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=980436',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Media Player (KB2378111)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/10/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2378111_WM9',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/?kbid=2378111',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Hotfix for Windows XP (KB970653-v3)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB970653-v3',
+ FROM => 'registry',
+ RELEASETYPE => 'Hotfix',
+ HELPLINK => 'http://support.microsoft.com?kbid=970653',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '3',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Security Update for Microsoft Office 2010 (KB2598039) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 1,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{01F2485C-FAEE-47E7-986E-B4F2FFC22D57}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2598039',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2598039',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2503658)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/04/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2503658',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2503658',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Media Player (KB975558)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/09/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB975558_WM8',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/?kbid=975558',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB977165)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/02/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB977165',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=977165',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Colin Harrison',
+ NAME => 'Xming 7.5.0.15',
+ VERSION_MINOR => 5,
+ COMMENTS => undef,
+ INSTALLDATE => '23/02/2010',
+ NO_REMOVE => undef,
+ GUID => 'Xming_is1',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://www.StraightRunning.com/XmingNotes',
+ URL_INFO_ABOUT => 'http://www.StraightRunning.com/XmingNotes',
+ VERSION_MAJOR => 7,
+ VERSION => '7.5.0.15',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Office 2010 (KB2553270) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-001F-0C0A-0000-0000000FF1CE}_Office14.PROPLUS_{995A7832-B512-46D5-87C9-2D71FB541435}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553270',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553270',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office Word MUI (English) 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '04/10/2011',
+ NO_REMOVE => undef,
+ GUID => '{90140000-001B-0409-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Hotfix for Windows Media Format SDK (KB902344)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '05/04/2006',
+ NO_REMOVE => undef,
+ GUID => 'KB902344',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com?kbid=902344',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Windows Internet Explorer 8',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'ie8',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://www.microsoft.com/ie',
+ URL_INFO_ABOUT => 'http://www.microsoft.com/ie',
+ VERSION_MAJOR => undef,
+ VERSION => '20090308.140743',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB973869)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB973869',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=973869',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Office 2010 (KB2553310) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{C8694FF0-8203-483B-A07A-2BC40433167D}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553310',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553310',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft .NET Framework 3.0 Service Pack 2',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '05/07/2010',
+ NO_REMOVE => undef,
+ GUID => '{A3051CD0-2F64-3813-A88D-B8DCCDE8F8C7}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '3.2.30729',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB956803)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '31/10/2008',
+ NO_REMOVE => undef,
+ GUID => 'KB956803',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=956803',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB2641690)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/11/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2641690',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2641690',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Hotfix for Microsoft .NET Framework 3.5 SP1 (KB953595)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 1,
+ GUID => '{CE2CDD62-0124-36CA-84D3-9F4DCF5C5BD9}.KB953595',
+ FROM => 'registry',
+ RELEASETYPE => 'Hotfix',
+ HELPLINK => 'http://support.microsoft.com/kb/953595',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'C:\\\\WINDOWS\\\\system32\\\\msiexec.exe /package {CE2CDD62-0124-36CA-84D3-9F4DCF5C5BD9} /uninstall /qb+ REBOOTPROMPT=\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'HighMAT Extension to Microsoft Windows XP CD Writing Wizard',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '05/04/2006',
+ NO_REMOVE => undef,
+ GUID => '{FCE65C4E-B0E8-4FBD-AD16-EDCBE6CD591F}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '1.1.1905.1',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2544893-v2)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/11/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2544893-v2',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2544893',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '2',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Outlook 2010 (KB2553248) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{38990592-F6A1-4A26-96C7-0600E36AE794}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553248',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553248',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB2530548)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '21/06/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2530548-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2530548',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2507938)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '19/07/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2507938',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2507938',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office Groove MUI (English) 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '04/10/2011',
+ NO_REMOVE => undef,
+ GUID => '{90140000-00BA-0409-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Microsoft .NET Framework 4 Client Profile (KB2478663)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => '{3C3901C5-3455-3E0A-A214-0B093A5070A6}.KB2478663',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com/kb/2478663',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {728D9A6A-2206-31E8-9F65-C3EABEFCF53E} /parameterfolder Client',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB952954)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2008',
+ NO_REMOVE => 1,
+ GUID => 'KB952954',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=952954',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2259922)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/09/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2259922',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2259922',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Office 2010 Service Pack 1 (SP1)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0016-0409-0000-0000000FF1CE}_Office14.PROPLUS_{6BD185A0-E67F-4F77-8BCD-E34EA6AE76DF}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2460049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2460049',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Adobe Systems Incorporated',
+ NAME => 'Spelling Dictionaries Support For Adobe Reader 9',
+ VERSION_MINOR => undef,
+ COMMENTS => 'This is a placeholder for ARP comments for Spelling Dictionaries for Adobe Reader 9.0',
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => undef,
+ GUID => '{AC76BA86-7AD7-5464-3428-900000000004}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.adobe.com',
+ VERSION_MAJOR => undef,
+ VERSION => '9.0.0',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB941569)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '01/01/2008',
+ NO_REMOVE => undef,
+ GUID => 'KB941569',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=941569',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Oracle',
+ NAME => 'Oracle Calendar',
+ VERSION_MINOR => undef,
+ COMMENTS => ' ',
+ INSTALLDATE => '24/10/2006',
+ NO_REMOVE => undef,
+ GUID => '{4DA016C7-9AC2-4BA7-AD31-3EBA29BC21B1}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.oracle.com',
+ VERSION_MAJOR => undef,
+ VERSION => '10.1.2.3.0',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Opera Software ASA',
+ NAME => 'Opera 11.52',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'Opera 11.52.1100',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://www.opera.com/support',
+ URL_INFO_ABOUT => 'http://www.opera.com',
+ VERSION_MAJOR => undef,
+ VERSION => '11.52.1100',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2436673)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/12/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2436673',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2436673',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Office 2010 Service Pack 1 (SP1)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0115-0409-0000-0000000FF1CE}_Office14.PROPLUS_{4560037C-E356-444A-A015-D21F487D809E}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2460049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2460049',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2443105)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/12/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2443105',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2443105',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2509553)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/04/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2509553',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2509553',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Office 2010 (KB2553092)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{7AC49FC8-F8D2-4DD8-9086-09E52385A21F}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553092',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553092',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB960714)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/01/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB960714',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=960714',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Microsoft .NET Framework 4 Extended (KB2416472)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => '{0A0CADCF-78DA-33C4-A350-CD51849B9702}.KB2416472',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com/kb/2416472',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'c:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Extended\\\\setup.exe /uninstallpatch {7A2C18A1-D2A2-3177-82F1-5FE9CC08ECB0} /parameterfolder Extended',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => undef,
+ NAME => 'Real Alternative 2.0.2 Lite',
+ VERSION_MINOR => 0,
+ COMMENTS => undef,
+ INSTALLDATE => '23/11/2011',
+ NO_REMOVE => undef,
+ GUID => 'RealAlt_is1',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => 2,
+ VERSION => '2.0.2',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Frank Heindörfer, Philip Chinery',
+ NAME => 'PDFCreator',
+ VERSION_MINOR => undef,
+ COMMENTS => 'PDFCreator - Opensource',
+ INSTALLDATE => '05/07/2011',
+ NO_REMOVE => undef,
+ GUID => '{0001B4FD-9EA3-4D90-A79E-FD14BA3AB01D}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://www.sf.net/projects/pdfcreator',
+ URL_INFO_ABOUT => 'http://www.sf.net/projects/pdfcreator',
+ VERSION_MAJOR => undef,
+ VERSION => '1.2.1',
+ UNINSTALL_STRING => 'C:\\\\Program Files\\\\PDFCreator\\\\unins000.exe',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB2497640)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/04/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2497640-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2497640',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Office 2010 (KB2553270) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-001F-040C-0000-0000000FF1CE}_Office14.PROPLUS_{15058154-469F-4794-ACD5-94F8420F9B80}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553270',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553270',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB978542)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '17/05/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB978542',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=978542',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2387149)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/10/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2387149',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2387149',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Microsoft .NET Framework 4 Client Profile (KB2656351)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => '{3C3901C5-3455-3E0A-A214-0B093A5070A6}.KB2656351',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com/kb/2656351',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {4952F442-5C1A-38EB-8C23-B18EFE77E20C} /parameterfolder Client',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for CAPICOM (KB931906)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'KB931906',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=931906',
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '2.1.0.2',
+ UNINSTALL_STRING => 'MsiExec.exe /X{0EFDF2F9-836D-4EB7-A32D-038BD3F1FB2A}',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB969947)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/12/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB969947',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=969947',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB979559)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/06/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB979559',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=979559',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB951978)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2008',
+ NO_REMOVE => undef,
+ GUID => 'KB951978',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=951978',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2566454)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '16/08/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2566454',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2566454',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2653956)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '17/04/2012',
+ NO_REMOVE => undef,
+ GUID => 'KB2653956',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2653956',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Piriform',
+ NAME => 'CCleaner (remove only)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'CCleaner',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{DC6A88F2-14D6-468F-9E68-CBF7779FEE00}',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 1,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{DC6A88F2-14D6-468F-9E68-CBF7779FEE00}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB975561)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/03/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB975561',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=975561',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Mozilla',
+ NAME => 'Mozilla Firefox 10.0.2 (x86 en-US)',
+ VERSION_MINOR => undef,
+ COMMENTS => 'Mozilla Firefox 10.0.2 (x86 en-US)',
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'Mozilla Firefox 10.0.2 (x86 en-US)',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.mozilla.com/en-US/',
+ VERSION_MAJOR => undef,
+ VERSION => '10.0.2',
+ UNINSTALL_STRING => 'C:\\\\Program Files\\\\Mozilla Firefox\\\\uninstall\\\\helper.exe',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB2607712)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '13/09/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2607712',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2607712',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Hotfix for Microsoft .NET Framework 3.0 (KB932471)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'KB932471.T301_380ToU433_380',
+ FROM => 'registry',
+ RELEASETYPE => 'Hotfix',
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'C:\\\\WINDOWS\\\\system32\\\\msiexec.exe /promptrestart /uninstall {ECD292A0-0347-4244-8C24-5DBCE990FB40} /package {BAF78226-3200-4DB4-BE33-4D922A799840}',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Step By Step Interactive Training (KB898458)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '05/04/2006',
+ NO_REMOVE => undef,
+ GUID => 'KB898458',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/898458',
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '20050502.101010',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Colin Harrison',
+ NAME => 'Xming-fonts 7.5.0.25',
+ VERSION_MINOR => 5,
+ COMMENTS => undef,
+ INSTALLDATE => '02/09/2010',
+ NO_REMOVE => undef,
+ GUID => 'Xming-fonts_is1',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://www.StraightRunning.com/XmingNotes',
+ URL_INFO_ABOUT => 'http://www.StraightRunning.com/XmingNotes',
+ VERSION_MAJOR => 7,
+ VERSION => '7.5.0.25',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB975467)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB975467',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=975467',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office Proof (French) 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/12/2011',
+ NO_REMOVE => undef,
+ GUID => '{90140000-001F-040C-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Cornell University',
+ NAME => 'Spider4',
+ VERSION_MINOR => undef,
+ COMMENTS => 'This installer database contains the logic and data required to install Spider4.',
+ INSTALLDATE => '27/04/2010',
+ NO_REMOVE => undef,
+ GUID => '{FB9448E7-477B-4F92-81A0-90754E2A259B}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.cit.cornell.edu/security/tools',
+ VERSION_MAJOR => undef,
+ VERSION => '4.0.2',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Office 2010 (KB2553065)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{A8686D24-1E89-43A1-973E-05A258D2B3F8}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553065',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553065',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office Professional Plus 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => 'Office14.PROPLUS',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => undef,
+ NAME => 'Shockwave',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'Shockwave',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB2541763)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '05/07/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2541763',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2541763',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2412687)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/04/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2412687',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2412687',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB974392)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/12/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB974392',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=974392',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Windows XP Service Pack 3',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2008',
+ NO_REMOVE => 1,
+ GUID => 'Windows XP Service Pack',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com?kbid=936929',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '20080414.031525',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB956572)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/05/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB956572',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=956572',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2619339)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/12/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2619339',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2619339',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2479943)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/03/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2479943',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2479943',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB968537)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB968537',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=968537',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB2492386)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/08/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2492386',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2492386',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Windows Genuine Advantage Validation Tool (KB892130)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => 1,
+ GUID => 'KB892130',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com?kbid=892130',
+ URL_INFO_ABOUT => 'http://www.microsoft.com/genuine',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB982802)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/09/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB982802',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=982802',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Media Player (KB973540)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB973540_WM9',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/?kbid=973540',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Windows Media Hotfix - KB895181',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '05/04/2006',
+ NO_REMOVE => undef,
+ GUID => 'KB895181',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com?kbid=895181',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Update for Microsoft Office 2010 (KB2553270) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-001F-0409-0000-0000000FF1CE}_Office14.PROPLUS_{17E7B9AB-2DD2-457D-8D8E-CD14ACA973FE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2553270',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2553270',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2296199)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/12/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2296199',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2296199',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2503665)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '21/06/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2503665',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2503665',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB972270)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/01/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB972270',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=972270',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Office 2010 Service Pack 1 (SP1)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-00A1-0409-0000-0000000FF1CE}_Office14.PROPLUS_{6BD185A0-E67F-4F77-8BCD-E34EA6AE76DF}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2460049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2460049',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB960715)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '02/04/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB960715',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=960715',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Hotfix for Windows XP (KB952287)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2008',
+ NO_REMOVE => 1,
+ GUID => 'KB952287',
+ FROM => 'registry',
+ RELEASETYPE => 'Hotfix',
+ HELPLINK => 'http://support.microsoft.com?kbid=952287',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows Internet Explorer 8 (KB980182)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '05/04/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB980182-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=980182',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2476687)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/02/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2476687',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2476687',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft .NET Framework 4 Extended',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/01/2012',
+ NO_REMOVE => undef,
+ GUID => '{0A0CADCF-78DA-33C4-A350-CD51849B9702}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://go.microsoft.com/fwlink/?LinkId=164164',
+ VERSION_MAJOR => undef,
+ VERSION => '4.0.30319',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB961371-v2)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB961371-v2',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=961371',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '2',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB957097)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/01/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB957097',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=957097',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Identity Finder, LLC',
+ NAME => 'Identity Finder',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '11/11/2010',
+ NO_REMOVE => undef,
+ GUID => '{19DD1E9D-51E7-4A63-83F0-BAB7D6FBFC55}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '4.6.1.0',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB971029)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '28/03/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB971029',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=971029',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Microsoft .NET Framework 4 Client Profile (KB2468871)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => '{3C3901C5-3455-3E0A-A214-0B093A5070A6}.KB2468871',
+ FROM => 'registry',
+ RELEASETYPE => 'Update',
+ HELPLINK => 'http://support.microsoft.com/kb/2468871',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {5E9CF3A4-ADB3-3080-A8BF-976A28340758} /parameterfolder Client',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB973507)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '03/09/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB973507',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=973507',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft Office Access Setup Metadata MUI (English) 2010',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '04/10/2011',
+ NO_REMOVE => undef,
+ GUID => '{90140000-0117-0409-0000-0000000FF1CE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '14.0.6029.1000',
+ UNINSTALL_STRING => undef,
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2423089)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/12/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2423089',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2423089',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Windows Imaging Component',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '10/04/2008',
+ NO_REMOVE => 1,
+ GUID => 'WIC',
+ FROM => 'registry',
+ RELEASETYPE => 'HotFix',
+ HELPLINK => undef,
+ URL_INFO_ABOUT => undef,
+ VERSION_MAJOR => undef,
+ VERSION => '3.0.0.0',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB969059)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB969059',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=969059',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows Internet Explorer 8 (KB2416400)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '20/12/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB2416400-IE8',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2416400',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Definition update for Microsoft Office 2010 (KB982726) 32-Bit Edition',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{28857979-5507-4C10-A922-FF709A19D38C}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/982726',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/982726',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2511455)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/04/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2511455',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2511455',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB958869)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB958869',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=958869',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2631813)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '17/01/2012',
+ NO_REMOVE => undef,
+ GUID => 'KB2631813',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2631813',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB980195)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '14/06/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB980195',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=980195',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB950759)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2008',
+ NO_REMOVE => 1,
+ GUID => 'KB950759',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=950759',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB979687)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/10/2010',
+ NO_REMOVE => undef,
+ GUID => 'KB979687',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=979687',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Martin Prikryl',
+ NAME => 'WinSCP 4.0.7',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '15/01/2009',
+ NO_REMOVE => undef,
+ GUID => 'winscp3_is1',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://winscp.net/forum/',
+ URL_INFO_ABOUT => 'http://winscp.net/',
+ VERSION_MAJOR => undef,
+ VERSION => '4.0.7',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB2567053)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '18/10/2011',
+ NO_REMOVE => undef,
+ GUID => 'KB2567053',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=2567053',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Update for Windows XP (KB943729)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/11/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB943729',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com?kbid=943729',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Microsoft .NET Framework 4 Client Profile',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'Microsoft .NET Framework 4 Client Profile',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://go.microsoft.com/fwlink/?LinkId=164164',
+ VERSION_MAJOR => undef,
+ VERSION => '4.0.30319',
+ UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\Setup.exe /repair /x86 /parameterfolder Client',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft',
+ NAME => 'Microsoft Office 2010 Service Pack 1 (SP1)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => undef,
+ NO_REMOVE => 0,
+ GUID => '{90140000-0011-0000-0000-0000000FF1CE}_Office14.PROPLUS_{047B0968-E622-4FAA-9B4B-121FA109EDDE}',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => 'http://support.microsoft.com/kb/2460049',
+ URL_INFO_ABOUT => 'http://support.microsoft.com/kb/2460049',
+ VERSION_MAJOR => undef,
+ VERSION => undef,
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Microsoft Corporation',
+ NAME => 'Security Update for Windows XP (KB970238)',
+ VERSION_MINOR => undef,
+ COMMENTS => undef,
+ INSTALLDATE => '09/07/2009',
+ NO_REMOVE => undef,
+ GUID => 'KB970238',
+ FROM => 'registry',
+ RELEASETYPE => 'Security Update',
+ HELPLINK => 'http://support.microsoft.com?kbid=970238',
+ URL_INFO_ABOUT => 'http://support.microsoft.com',
+ VERSION_MAJOR => undef,
+ VERSION => '1',
+ UNINSTALL_STRING => '\\',
+ IS64BIT => undef
+ },
+ {
+ PUBLISHER => 'Mozilla',
+ NAME => 'Mozilla Thunderbird (2.0.0.23)',
+ VERSION_MINOR => undef,
+ COMMENTS => 'Mozilla Thunderbird',
+ INSTALLDATE => undef,
+ NO_REMOVE => undef,
+ GUID => 'Mozilla Thunderbird (2.0.0.23)',
+ FROM => 'registry',
+ RELEASETYPE => undef,
+ HELPLINK => undef,
+ URL_INFO_ABOUT => 'http://www.mozilla.org/',
+ VERSION_MAJOR => undef,
+ VERSION => '2.0.0.23 (en-US)',
+ UNINSTALL_STRING => 'C:\\\\Program Files\\\\Mozilla Thunderbird\\\\uninstall\\\\helper.exe',
+ IS64BIT => undef
+ }
+ ]
+);
+
+plan tests => scalar keys %tests;
+
+my $module = Test::MockModule->new(
+ 'FusionInventory::Agent::Task::Inventory::Input::Win32::Softwares'
+);
+$module->mock(
+ 'encodeFromRegistry',
+ sub {
+ return undef unless $_[0];
+ return encode("UTF-8", decode('cp1252', $_[0]));
+ }
+);
+
+foreach my $test (keys %tests) {
+ my $softwares = FusionInventory::Test::Utils::loadRegistryDump(
+ "resources/win32/registry/$test-uninstall.reg"
+ );
+
+ my @softwares = FusionInventory::Agent::Task::Inventory::Input::Win32::Softwares::_getSoftwares(softwares => $softwares);
+
+ is_deeply(
+ \@softwares,
+ $tests{$test},
+ "$test sample"
+ );
+}
================================================================
Commit: 73542101060d4ea844156d1ba15a3863044b10a0
https://github.com/fusinv/fusioninventory-agent/commit/73542101060d4ea844156d1ba15a3863044b10a0
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-18 (Wed, 18 Apr 2012)
Changed paths:
R contrib/fedora/README
R contrib/fedora/fusioninventory-agent.cron
R contrib/fedora/fusioninventory-agent.init
R contrib/fedora/fusioninventory-agent.service
Log Message:
-----------
removal, asked by fedora package maintainer
diff --git a/contrib/fedora/README b/contrib/fedora/README
deleted file mode 100644
index 05f9fc6..0000000
--- a/contrib/fedora/README
+++ /dev/null
@@ -1,2 +0,0 @@
-RemiCollet branch is avalaible here:
-http://github.com/remicollet/fusioninventory-agent
diff --git a/contrib/fedora/fusioninventory-agent.cron b/contrib/fedora/fusioninventory-agent.cron
deleted file mode 100644
index e09c0db..0000000
--- a/contrib/fedora/fusioninventory-agent.cron
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/bash
-NAME=fusioninventory-agent
-LOG=/var/log/$NAME/$NAME.log
-
-exec >>$LOG 2>&1
-
-[ -f /etc/sysconfig/$NAME ] || exit 0
-source /etc/sysconfig/$NAME
-export PATH
-
-i=0
-while [ $i -lt ${#OCSMODE[*]} ]
-do
- if [ ${OCSMODE[$i]:-none} == cron ]; then
- OPTS=
- if [ ! -z "${OCSPAUSE[$i]}" ]; then
- OPTS="--wait ${OCSPAUSE[$i]}"
- fi
-
- if [ ! -z "${OCSTAG[$i]}" ]; then
- OPTS="$OPTS --tag=${OCSTAG[$i]}"
- fi
-
- if [ "z${OCSSERVER[$i]}" = 'zlocal' ]; then
- # Local inventory
- OPTS="$OPTS --local=/var/lib/$NAME"
- elif [ ! -z "${OCSSERVER[$i]}" ]; then
- # Remote inventory
- OPTS="$OPTS --lazy --server=${OCSSERVER[$i]}"
- fi
- echo "[$(date '+%c')] Running $NAME $OPTS"
- /usr/bin/$NAME $FUSINVOPT --logfile=$LOG $OPTS
- fi
- ((i++))
-done
-echo "[$(date '+%c')] End of cron job ($PATH)"
-
diff --git a/contrib/fedora/fusioninventory-agent.init b/contrib/fedora/fusioninventory-agent.init
deleted file mode 100755
index 12e0725..0000000
--- a/contrib/fedora/fusioninventory-agent.init
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/bin/bash
-#
-# chkconfig: 345 88 12
-# description: FusionInventory Agent
-# processname: fusioninventory-agent
-# config: /etc/sysconfig/fusioninventory-agent.pid
-# pidfile: /var/run/fusioninventory-agent.pid
-
-# source function library
-. /etc/rc.d/init.d/functions
-
-RETVAL=0
-desc="FusionInventory Agent"
-prog=fusioninventory-agent
-lockfile=/var/lock/subsys/$prog
-pidfile=/var/run/$prog.pid
-logfile=/var/log/$prog/$prog.log
-
-# pull in sysconfig settings
-[ -r /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
-
-#
-# Function that starts the daemon/service
-#
-do_start()
-{
- # Read configuration
- i=0
- OPTS=
- while [ $i -lt ${#OCSMODE[*]} ]
- do
- if [ ${OCSMODE[$i]:-none} == daemon ]; then
- if [ ! -z "${OCSTAG[$i]}" ]; then
- OPTS="$OPTS --tag=${OCSTAG[$i]}"
- fi
- if [ "z${OCSSERVER[$i]}" = 'zlocal' ]; then
- # Local inventory
- OPTS="$OPTS --local=/var/lib/$prog"
- elif [ ! -z "${OCSSERVER[$i]}" ]; then
- # Remote inventory
- OPTS="$OPTS --server=${OCSSERVER[$i]}"
- fi
- fi
- ((i++))
- done
- if [ -n "$OPTS" ]; then
- echo -n $"Starting $prog: "
- daemon $prog $FUSINVOPT --logfile=$logfile --daemon $OPTS
- RETVAL=$?
- echo
- else
- RETVAL=1
- fi
- [ $RETVAL -eq 0 ] && touch $lockfile
-}
-
-#
-# Function that stops the daemon/service
-#
-do_stop()
-{
- echo -n $"Stopping $prog: "
- killproc $prog
- RETVAL=$?
- echo
- if [ $RETVAL -eq 0 ] ; then
- rm -f $lockfile $pidfile
- fi
-}
-
-case "$1" in
- start)
- do_start
- ;;
- stop)
- do_stop
- ;;
- status)
- status $prog
- ;;
- restart|reload|force-reload)
- do_stop
- do_start
- ;;
- condrestart)
- [ -f $lockfile ] && restart || :
- ;;
- *)
- echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
- exit 1
- ;;
-esac
-exit $RETVAL
-
diff --git a/contrib/fedora/fusioninventory-agent.service b/contrib/fedora/fusioninventory-agent.service
deleted file mode 100644
index 0e14f59..0000000
--- a/contrib/fedora/fusioninventory-agent.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=FusionInventory agent
-After=syslog.target network.target
-
-[Service]
-EnvironmentFile=/etc/sysconfig/fusioninventory-agent
-ExecStart=/usr/bin/fusioninventory-agent $OPTIONS
-
-[Install]
-WantedBy=multi-user.target
================================================================
Commit: f6d8e7858d58bf003b5cd63e0386672648a127af
https://github.com/fusinv/fusioninventory-agent/commit/f6d8e7858d58bf003b5cd63e0386672648a127af
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-23 (Mon, 23 Apr 2012)
Changed paths:
M t/fake/windows/Win32/OLE.pm
Log Message:
-----------
add a new UTF8 constant
diff --git a/t/fake/windows/Win32/OLE.pm b/t/fake/windows/Win32/OLE.pm
index c135d2c..dee8a2c 100644
--- a/t/fake/windows/Win32/OLE.pm
+++ b/t/fake/windows/Win32/OLE.pm
@@ -3,6 +3,8 @@ package Win32::OLE;
use strict;
use warnings;
+use constant CP_UTF8 => 0;
+
$INC{'Win32/OLE/Const.pm'} = 1;
$INC{'Win32/OLE/Enum.pm'} = 1;
$INC{'Win32/OLE/Variant.pm'} = 1;
================================================================
Commit: c63d1961f5cbfcf7558e5673c67e7e074979373a
https://github.com/fusinv/fusioninventory-agent/commit/c63d1961f5cbfcf7558e5673c67e7e074979373a
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-23 (Mon, 23 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
M lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
M t/inventory/windows/softwares.t
Log Message:
-----------
replace IS64BIT with mire generic ARCH property
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
index 5b182ee..dbd322b 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Win32/Softwares.pm
@@ -149,7 +149,7 @@ sub _getSoftwares {
VERSION_MINOR => hex2dec($data->{'/MinorVersion'}),
VERSION_MAJOR => hex2dec($data->{'/MajorVersion'}),
NO_REMOVE => hex2dec($data->{'/NoRemove'}),
- IS64BIT => $params{is64bit},
+ ARCH => $params{is64bit} ? 'x86_64' : 'i586',
GUID => $guid,
};
@@ -168,7 +168,7 @@ sub _addSoftware {
my $entry = $params{entry};
# avoid duplicates
- return if $seen->{$entry->{NAME}}->{$entry->{IS64BIT}}{$entry->{VERSION} || '_undef_'}++;
+ return if $seen->{$entry->{NAME}}->{$entry->{ARCH}}{$entry->{VERSION} || '_undef_'}++;
$params{inventory}->addEntry(section => 'SOFTWARES', entry => $entry);
}
@@ -187,7 +187,7 @@ sub _processMSIE {
inventory => $params{inventory},
entry => {
FROM => "registry",
- IS64BIT => $params{is64bit},
+ ARCH => $params{is64bit} ? 'x86_64' : 'i586',
NAME => $name,
VERSION => $version,
PUBLISHER => "Microsoft Corporation"
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
index 82f2b58..6db1ae9 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Inventory.pm
@@ -41,7 +41,7 @@ my %fields = (
SOFTWARES => [ qw/COMMENTS FILESIZE FOLDER FROM HELPLINK INSTALLDATE NAME
NO_REMOVE RELEASE_TYPE PUBLISHER UNINSTALL_STRING
URL_INFO_ABOUT VERSION VERSION_MINOR VERSION_MAJOR
- IS64BIT GUID RELEASETYPE/ ],
+ GUID RELEASETYPE ARCH/ ],
SOUNDS => [ qw/CAPTION DESCRIPTION MANUFACTURER NAME/ ],
STORAGES => [ qw/DESCRIPTION DISKSIZE INTERFACE MANUFACTURER MODEL NAME
TYPE SERIAL SERIALNUMBER FIRMWARE SCSI_COID SCSI_CHID
diff --git a/t/inventory/windows/softwares.t b/t/inventory/windows/softwares.t
index a5165d0..ab276b6 100755
--- a/t/inventory/windows/softwares.t
+++ b/t/inventory/windows/softwares.t
@@ -36,7 +36,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Kay Bruns',
@@ -53,7 +53,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1.2.0.8',
UNINSTALL_STRING => 'C:\\\\WINDOWS\\\\SuRun.exe /UNINSTALL',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -70,7 +70,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -87,7 +87,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -104,7 +104,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -121,7 +121,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -138,7 +138,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -155,7 +155,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {2CE2EB39-45C8-32D4-8A99-5529C38F1B99} /parameterfolder Client',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -172,7 +172,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -189,7 +189,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -206,7 +206,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'O&O Software GmbH',
@@ -223,7 +223,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '2.0.386',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -240,7 +240,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -257,7 +257,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -274,7 +274,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -291,7 +291,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '2',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -308,7 +308,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -325,7 +325,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -342,7 +342,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'c:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Extended\\\\setup.exe /uninstallpatch {4952F442-5C1A-38EB-8C23-B18EFE77E20C} /parameterfolder Extended',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -359,7 +359,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -376,7 +376,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -393,7 +393,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -410,7 +410,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -427,7 +427,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -444,7 +444,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '5',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -461,7 +461,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -478,7 +478,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Symantec Corporation',
@@ -495,7 +495,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '12.1.1000.157',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => undef,
@@ -512,7 +512,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -529,7 +529,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -546,7 +546,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -563,7 +563,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -580,7 +580,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -597,7 +597,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '3.5.30729',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -614,7 +614,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {3E0806DB-3085-378A-840A-F0D3AE3609D1} /parameterfolder Client',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -631,7 +631,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -648,7 +648,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '2',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -665,7 +665,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -682,7 +682,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -699,7 +699,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -716,7 +716,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'LogMeIn Inc.',
@@ -733,7 +733,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '9.00.175',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -750,7 +750,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -767,7 +767,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -784,7 +784,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -801,7 +801,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -818,7 +818,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -835,7 +835,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '20050502.101010',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -852,7 +852,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Adobe Systems Incorporated',
@@ -869,7 +869,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '10.1.2',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -886,7 +886,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -903,7 +903,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -920,7 +920,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -937,7 +937,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -954,7 +954,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -971,7 +971,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {7E97AB83-C1FE-38DE-B848-877E0A4BD81E} /parameterfolder Client',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -988,7 +988,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1005,7 +1005,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1022,7 +1022,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1039,7 +1039,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1056,7 +1056,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1073,7 +1073,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1090,7 +1090,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1107,7 +1107,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => undef,
@@ -1124,7 +1124,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '2.5.1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1141,7 +1141,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1158,7 +1158,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Sun Microsystems, Inc.',
@@ -1175,7 +1175,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '2.0.7.1',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1192,7 +1192,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1209,7 +1209,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1226,7 +1226,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1243,7 +1243,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1260,7 +1260,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'C:\\\\WINDOWS\\\\system32\\\\msiexec.exe /package {CE2CDD62-0124-36CA-84D3-9F4DCF5C5BD9} /uninstall {B2AE9C82-DC7B-3641-BFC8-87275C4F3607} /qb+ REBOOTPROMPT=\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1277,7 +1277,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1294,7 +1294,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => undef,
@@ -1311,7 +1311,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => 'msiexec.exe /X {CB2F7EDD-9D1F-43C1-90FC-4F52EAE172A1}',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -1328,7 +1328,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1345,7 +1345,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '9.50.7523',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -1362,7 +1362,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -1379,7 +1379,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1396,7 +1396,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1413,7 +1413,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'ScriptLogic Corporation',
@@ -1430,7 +1430,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '2.7.1.80',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Proxy Networks, Inc.',
@@ -1447,7 +1447,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '7.0.1515',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1464,7 +1464,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1481,7 +1481,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1498,7 +1498,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1515,7 +1515,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -1532,7 +1532,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1549,7 +1549,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -1566,7 +1566,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1583,7 +1583,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1600,7 +1600,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1617,7 +1617,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '2.2.30729',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1634,7 +1634,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -1651,7 +1651,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1668,7 +1668,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '2',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1685,7 +1685,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1702,7 +1702,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1719,7 +1719,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '3.0.6920.0',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1736,7 +1736,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1753,7 +1753,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1770,7 +1770,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '4.0.30319',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => undef,
@@ -1787,7 +1787,7 @@ my %tests = (
VERSION_MAJOR => 4,
VERSION => '4.1.0',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1804,7 +1804,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1821,7 +1821,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '2',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1838,7 +1838,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1855,7 +1855,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {FD988F49-E1C8-3C84-9683-0448B6BB8E20} /parameterfolder Client',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1872,7 +1872,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -1889,7 +1889,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'O&O Software GmbH',
@@ -1906,7 +1906,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '11.5.4065',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1923,7 +1923,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1940,7 +1940,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1957,7 +1957,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1974,7 +1974,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -1991,7 +1991,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2008,7 +2008,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '4.20.9870.0',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2025,7 +2025,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -2042,7 +2042,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2059,7 +2059,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2076,7 +2076,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'C:\\\\windows\\\\system32\\\\msiexec.exe /package {CE2CDD62-0124-36CA-84D3-9F4DCF5C5BD9} /uninstall {F6F5AC31-9833-3E77-AC8E-8E910CAB39AE} /qb+ REBOOTPROMPT=\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2093,7 +2093,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -2110,7 +2110,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2127,7 +2127,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {DB31DEDD-BF95-31E7-A9B7-5480561CEFF3} /parameterfolder Client',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2144,7 +2144,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2161,7 +2161,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2178,7 +2178,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Hummingbird Ltd.',
@@ -2195,7 +2195,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '11.0.28.0',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2212,7 +2212,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '2.1.0.2',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2229,7 +2229,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2246,7 +2246,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2263,7 +2263,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => undef,
@@ -2280,7 +2280,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -2297,7 +2297,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1.2.1.0',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2314,7 +2314,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2331,7 +2331,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1.5.0554.0',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2348,7 +2348,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2365,7 +2365,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2382,7 +2382,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2399,7 +2399,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2416,7 +2416,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Oracle',
@@ -2433,7 +2433,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '6.0.310',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2450,7 +2450,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '2',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => undef,
@@ -2467,7 +2467,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -2484,7 +2484,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2501,7 +2501,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2518,7 +2518,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2535,7 +2535,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '6.10.1200.0',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Symantec Corporation',
@@ -2552,7 +2552,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '11.0.6235',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -2569,7 +2569,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'O&O Software GmbH',
@@ -2586,7 +2586,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '4.1.119',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2603,7 +2603,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2620,7 +2620,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => undef,
@@ -2637,7 +2637,7 @@ my %tests = (
VERSION_MAJOR => 7,
VERSION => '7.1.0',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2654,7 +2654,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -2671,7 +2671,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2688,7 +2688,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2705,7 +2705,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2722,7 +2722,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2739,7 +2739,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2756,7 +2756,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2773,7 +2773,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {8DDEFC7E-0C61-3D11-AFC6-5414F2DAFD01} /parameterfolder Client',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2790,7 +2790,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2807,7 +2807,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -2824,7 +2824,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -2841,7 +2841,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2858,7 +2858,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2875,7 +2875,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2892,7 +2892,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'LogMeIn Inc.',
@@ -2909,7 +2909,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '9.00.175',
UNINSTALL_STRING => 'C:\\\\Program Files\\\\Network Console\\\\NetworkConsole.exe uninstall /I{5B21BB9A-E23E-472b-AD2A-FB9B06A4727C}',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'FusionInventory Team',
@@ -2926,7 +2926,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '2.2.0-2',
UNINSTALL_STRING => 'C:\\\\Program Files\\\\FusionInventory-Agent\\\\uninstFI.exe',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2943,7 +2943,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -2960,7 +2960,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2977,7 +2977,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -2994,7 +2994,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3011,7 +3011,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3028,7 +3028,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3045,7 +3045,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '8.0.61001',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3062,7 +3062,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -3079,7 +3079,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1.1.4322',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3096,7 +3096,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3113,7 +3113,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -3130,7 +3130,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3147,7 +3147,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3164,7 +3164,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'C:\\\\windows\\\\system32\\\\msiexec.exe /package {CE2CDD62-0124-36CA-84D3-9F4DCF5C5BD9} /uninstall {A7EEA2F2-BFCD-4A54-A575-7B81A786E658} /qb+ REBOOTPROMPT=\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3181,7 +3181,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -3198,7 +3198,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3215,7 +3215,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3232,7 +3232,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '4.0.30319',
UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Extended\\\\Setup.exe /repair /x86 /parameterfolder Extended',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3249,7 +3249,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3266,7 +3266,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3283,7 +3283,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3300,7 +3300,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3317,7 +3317,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3334,7 +3334,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3351,7 +3351,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3368,7 +3368,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -3385,7 +3385,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -3402,7 +3402,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3419,7 +3419,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3436,7 +3436,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3453,7 +3453,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3470,7 +3470,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => undef,
@@ -3487,7 +3487,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3504,7 +3504,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3521,7 +3521,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => undef,
@@ -3538,7 +3538,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3555,7 +3555,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3572,7 +3572,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3589,7 +3589,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3606,7 +3606,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -3623,7 +3623,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3640,7 +3640,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3657,7 +3657,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'O&O Software GmbH',
@@ -3674,7 +3674,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '6.0.440',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -3691,7 +3691,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -3708,7 +3708,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3725,7 +3725,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3742,7 +3742,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3759,7 +3759,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3776,7 +3776,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -3793,7 +3793,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3810,7 +3810,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3827,7 +3827,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3844,7 +3844,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'c:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Extended\\\\setup.exe /uninstallpatch {5E9CF3A4-ADB3-3080-A8BF-976A28340758} /parameterfolder Extended',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3861,7 +3861,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => 'C:\\\\WINDOWS\\\\Microsoft.NET\\\\Framework\\\\v3.5\\\\Microsoft .NET Framework 3.5 SP1\\\\setup.exe',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'O&O Software GmbH',
@@ -3878,7 +3878,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1.0.270',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3895,7 +3895,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3912,7 +3912,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3929,7 +3929,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3946,7 +3946,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3963,7 +3963,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3980,7 +3980,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -3997,7 +3997,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '3',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'VS Revo Group',
@@ -4014,7 +4014,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1.93',
UNINSTALL_STRING => 'C:\\\\Program Files\\\\VS Revo Group\\\\Revo Uninstaller\\\\uninst.exe',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4031,7 +4031,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4048,7 +4048,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -4065,7 +4065,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4082,7 +4082,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4099,7 +4099,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4116,7 +4116,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {9EC88EA8-4ABE-393C-87BD-90EABB1C4C9B} /parameterfolder Client',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4133,7 +4133,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4150,7 +4150,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4167,7 +4167,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4184,7 +4184,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4201,7 +4201,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4218,7 +4218,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1.6.30',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4235,7 +4235,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4252,7 +4252,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4269,7 +4269,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -4286,7 +4286,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1.5.2316.0',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4303,7 +4303,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'c:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Extended\\\\setup.exe /uninstallpatch {42A3562E-8B4E-39A4-B82D-CC12F82889E3} /parameterfolder Extended',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4320,7 +4320,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4337,7 +4337,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4354,7 +4354,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4371,7 +4371,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4388,7 +4388,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4405,7 +4405,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Adobe Systems Inc.',
@@ -4422,7 +4422,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1.0.8.4990',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4439,7 +4439,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '4.20.9876.0',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4456,7 +4456,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4473,7 +4473,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4490,7 +4490,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4507,7 +4507,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Symantec Corporation',
@@ -4524,7 +4524,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '11.0.6235',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4541,7 +4541,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4558,7 +4558,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4575,7 +4575,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -4592,7 +4592,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4609,7 +4609,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4626,7 +4626,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => undef,
@@ -4643,7 +4643,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4660,7 +4660,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1.7.0069.2',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4677,7 +4677,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4694,7 +4694,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4711,7 +4711,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Adobe Systems, Inc.',
@@ -4728,7 +4728,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '11',
UNINSTALL_STRING => 'C:\\\\WINDOWS\\\\system32\\\\adobe\\\\SHOCKW~1\\\\UNWISE.EXE C:\\\\WINDOWS\\\\system32\\\\Adobe\\\\SHOCKW~1\\\\Install.log',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4745,7 +4745,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4762,7 +4762,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4779,7 +4779,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4796,7 +4796,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4813,7 +4813,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4830,7 +4830,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Proxy Networks, Inc.',
@@ -4847,7 +4847,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '6.10.1374',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Simon Tatham',
@@ -4864,7 +4864,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '0.58',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4881,7 +4881,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4898,7 +4898,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Hummingbird Ltd.',
@@ -4915,7 +4915,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '11.0.6.0',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4932,7 +4932,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Adobe Systems Incorporated',
@@ -4949,7 +4949,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '11.1.102.62',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -4966,7 +4966,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'OCS Inventory NG Team',
@@ -4983,7 +4983,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '4.0.4.8',
UNINSTALL_STRING => 'C:\\\\Program Files\\\\OCS Inventory Agent\\\\uninst.exe',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5000,7 +5000,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5017,7 +5017,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5034,7 +5034,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5051,7 +5051,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5068,7 +5068,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => 'C:\\\\WINDOWS\\\\system32\\\\MacroMed\\\\Flash\\\\genuinst.exe C:\\\\WINDOWS\\\\system32\\\\MacroMed\\\\Flash\\\\KB923789.inf',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -5085,7 +5085,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5102,7 +5102,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -5119,7 +5119,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -5136,7 +5136,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5153,7 +5153,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5170,7 +5170,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5187,7 +5187,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '3',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -5204,7 +5204,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5221,7 +5221,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5238,7 +5238,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5255,7 +5255,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Colin Harrison',
@@ -5272,7 +5272,7 @@ my %tests = (
VERSION_MAJOR => 7,
VERSION => '7.5.0.15',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -5289,7 +5289,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5306,7 +5306,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5323,7 +5323,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5340,7 +5340,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '20090308.140743',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5357,7 +5357,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -5374,7 +5374,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5391,7 +5391,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '3.2.30729',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5408,7 +5408,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5425,7 +5425,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5442,7 +5442,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'C:\\\\WINDOWS\\\\system32\\\\msiexec.exe /package {CE2CDD62-0124-36CA-84D3-9F4DCF5C5BD9} /uninstall /qb+ REBOOTPROMPT=\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5459,7 +5459,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1.1.1905.1',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5476,7 +5476,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '2',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -5493,7 +5493,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5510,7 +5510,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5527,7 +5527,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5544,7 +5544,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5561,7 +5561,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {728D9A6A-2206-31E8-9F65-C3EABEFCF53E} /parameterfolder Client',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5578,7 +5578,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5595,7 +5595,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -5612,7 +5612,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Adobe Systems Incorporated',
@@ -5629,7 +5629,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '9.0.0',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5646,7 +5646,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Oracle',
@@ -5663,7 +5663,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '10.1.2.3.0',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Opera Software ASA',
@@ -5680,7 +5680,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '11.52.1100',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5697,7 +5697,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -5714,7 +5714,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5731,7 +5731,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5748,7 +5748,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -5765,7 +5765,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5782,7 +5782,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5799,7 +5799,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'c:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Extended\\\\setup.exe /uninstallpatch {7A2C18A1-D2A2-3177-82F1-5FE9CC08ECB0} /parameterfolder Extended',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => undef,
@@ -5816,7 +5816,7 @@ my %tests = (
VERSION_MAJOR => 2,
VERSION => '2.0.2',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Frank Heindörfer, Philip Chinery',
@@ -5833,7 +5833,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1.2.1',
UNINSTALL_STRING => 'C:\\\\Program Files\\\\PDFCreator\\\\unins000.exe',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5850,7 +5850,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -5867,7 +5867,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5884,7 +5884,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5901,7 +5901,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5918,7 +5918,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {4952F442-5C1A-38EB-8C23-B18EFE77E20C} /parameterfolder Client',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5935,7 +5935,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '2.1.0.2',
UNINSTALL_STRING => 'MsiExec.exe /X{0EFDF2F9-836D-4EB7-A32D-038BD3F1FB2A}',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5952,7 +5952,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5969,7 +5969,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -5986,7 +5986,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6003,7 +6003,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6020,7 +6020,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Piriform',
@@ -6037,7 +6037,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -6054,7 +6054,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6071,7 +6071,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Mozilla',
@@ -6088,7 +6088,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '10.0.2',
UNINSTALL_STRING => 'C:\\\\Program Files\\\\Mozilla Firefox\\\\uninstall\\\\helper.exe',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6105,7 +6105,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6122,7 +6122,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'C:\\\\WINDOWS\\\\system32\\\\msiexec.exe /promptrestart /uninstall {ECD292A0-0347-4244-8C24-5DBCE990FB40} /package {BAF78226-3200-4DB4-BE33-4D922A799840}',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6139,7 +6139,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '20050502.101010',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Colin Harrison',
@@ -6156,7 +6156,7 @@ my %tests = (
VERSION_MAJOR => 7,
VERSION => '7.5.0.25',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6173,7 +6173,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6190,7 +6190,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Cornell University',
@@ -6207,7 +6207,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '4.0.2',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -6224,7 +6224,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6241,7 +6241,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => undef,
@@ -6258,7 +6258,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6275,7 +6275,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6292,7 +6292,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6309,7 +6309,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6326,7 +6326,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '20080414.031525',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6343,7 +6343,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6360,7 +6360,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6377,7 +6377,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6394,7 +6394,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6411,7 +6411,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6428,7 +6428,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6445,7 +6445,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6462,7 +6462,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6479,7 +6479,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -6496,7 +6496,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6513,7 +6513,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6530,7 +6530,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6547,7 +6547,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -6564,7 +6564,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6581,7 +6581,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6598,7 +6598,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6615,7 +6615,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6632,7 +6632,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6649,7 +6649,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '4.0.30319',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6666,7 +6666,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '2',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6683,7 +6683,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Identity Finder, LLC',
@@ -6700,7 +6700,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '4.6.1.0',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6717,7 +6717,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6734,7 +6734,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\setup.exe /uninstallpatch {5E9CF3A4-ADB3-3080-A8BF-976A28340758} /parameterfolder Client',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6751,7 +6751,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6768,7 +6768,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '14.0.6029.1000',
UNINSTALL_STRING => undef,
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6785,7 +6785,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6802,7 +6802,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '3.0.0.0',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6819,7 +6819,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6836,7 +6836,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -6853,7 +6853,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6870,7 +6870,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6887,7 +6887,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6904,7 +6904,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6921,7 +6921,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6938,7 +6938,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6955,7 +6955,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Martin Prikryl',
@@ -6972,7 +6972,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '4.0.7',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -6989,7 +6989,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -7006,7 +7006,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -7023,7 +7023,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '4.0.30319',
UNINSTALL_STRING => 'C:\\\\windows\\\\Microsoft.NET\\\\Framework\\\\v4.0.30319\\\\SetupCache\\\\Client\\\\Setup.exe /repair /x86 /parameterfolder Client',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft',
@@ -7040,7 +7040,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => undef,
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Microsoft Corporation',
@@ -7057,7 +7057,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '1',
UNINSTALL_STRING => '\\',
- IS64BIT => undef
+ ARCH => 'i586'
},
{
PUBLISHER => 'Mozilla',
@@ -7074,7 +7074,7 @@ my %tests = (
VERSION_MAJOR => undef,
VERSION => '2.0.0.23 (en-US)',
UNINSTALL_STRING => 'C:\\\\Program Files\\\\Mozilla Thunderbird\\\\uninstall\\\\helper.exe',
- IS64BIT => undef
+ ARCH => 'i586'
}
]
);
================================================================
Commit: 25bf8446bb68ab6346b76bb1f73e4aa039a47379
https://github.com/fusinv/fusioninventory-agent/commit/25bf8446bb68ab6346b76bb1f73e4aa039a47379
Author: Guillaume Rousse <Guillaume.Rousse at gmail.com>
Date: 2012-04-23 (Mon, 23 Apr 2012)
Changed paths:
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Deb.pm
M lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/RPM.pm
M resources/linux/packaging/dpkg
M resources/linux/packaging/rpm
M t/inventory/linux/softwares.t
Log Message:
-----------
add ARCH property support
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Deb.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Deb.pm
index 7e1310b..cdc7b7a 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Deb.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/Deb.pm
@@ -18,6 +18,7 @@ sub doInventory {
my $command =
'dpkg-query --show --showformat=\'' .
'${Package}\t' .
+ '${Architecture}\t' .
'${Version}\t'.
'${Installed-Size}\t' .
'${Description}\n' .
@@ -48,9 +49,10 @@ sub _getPackagesList {
my @infos = split("\t", $line);
push @packages, {
NAME => $infos[0],
- VERSION => $infos[1],
- FILESIZE => $infos[2],
- COMMENTS => $infos[3],
+ ARCH => $infos[1],
+ VERSION => $infos[2],
+ FILESIZE => $infos[3],
+ COMMENTS => $infos[4],
FROM => 'deb'
};
}
diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/RPM.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/RPM.pm
index 68434a9..14ef3b9 100644
--- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/RPM.pm
+++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Softwares/RPM.pm
@@ -18,6 +18,7 @@ sub doInventory {
my $command =
'rpm -qa --queryformat \'' .
'%{NAME}\t' .
+ '%{ARCH}\t' .
'%{VERSION}-%{RELEASE}\t' .
'%{INSTALLTIME:date}\t' .
'%{SIZE}\t' .
@@ -48,11 +49,12 @@ sub _getPackagesList {
my @infos = split("\t", $line);
push @packages, {
NAME => $infos[0],
- VERSION => $infos[1],
- INSTALLDATE => $infos[2],
- FILESIZE => $infos[3],
- PUBLISHER => $infos[4],
- COMMENTS => $infos[5],
+ ARCH => $infos[1],
+ VERSION => $infos[2],
+ INSTALLDATE => $infos[3],
+ FILESIZE => $infos[4],
+ PUBLISHER => $infos[5],
+ COMMENTS => $infos[6],
FROM => 'rpm'
};
}
diff --git a/resources/linux/packaging/dpkg b/resources/linux/packaging/dpkg
index 8f89329..5dc6c61 100644
--- a/resources/linux/packaging/dpkg
+++ b/resources/linux/packaging/dpkg
@@ -1,19 +1,4 @@
-acpi-support-base 0.109-11 88 scripts for handling base ACPI events such as the power button
- This package contains scripts to react to various base ACPI events
- such as the power button. For more extensive ACPI support, including support
- for suspend-to-RAM and for various laptop features, install the package
- "acpi-support".
-acpid 1.0.8-1lenny2 196 Utilities for using ACPI power management
- Modern computers support the Advanced Configuration and Power Interface (ACPI)
- to allow intelligent power management on your system and to query battery and
- configuration status.
- .
- ACPID is a completely flexible, totally extensible daemon for delivering
- ACPI events. It listens on a file (/proc/acpi/event) and when an event
- occurs, executes programs to handle the event. The programs it executes
- are configured through a set of configuration files, which can be
- dropped into place by packages or by the admin.
-adduser 3.110 944 add and remove users and groups
+adduser all 3.112+nmu2 1228 add and remove users and groups
This package includes the 'adduser' and 'deluser' commands for creating
and removing users.
.
@@ -34,30 +19,126 @@ adduser 3.110 944 add and remove users and groups
.
Development mailing list:
http://lists.alioth.debian.org/mailman/listinfo/adduser-devel/
-apt 0.7.20.2+lenny2 4652 Advanced front-end for dpkg
+anthy-common all 9100h-6 13068 input method for Japanese - common files and dictionary
+ Anthy is a Japanese input method working on X11 and Emacs. It converts
+ hiragana text to mixed kana and kanji. It is implemented as a library
+ and stores private information securely in ~/.anthy/.
+ Thus, Anthy is simple and secure (information is protected from
+ spoofing and snooping).
+ .
+ This package provides common files dictonary data for anthy.
+apache2 amd64 2.2.16-6+squeeze6 36 Apache HTTP Server metapackage
+ The Apache Software Foundation's goal is to build a secure, efficient and
+ extensible HTTP server as standards-compliant open source software. The
+ result has long been the number one web server on the Internet.
+ .
+ It features support for HTTPS, virtual hosting, CGI, SSI, IPv6, easy
+ scripting and database integration, request/response filtering, many
+ flexible authentication schemes, and more.
+apache2-mpm-prefork amd64 2.2.16-6+squeeze6 68 Apache HTTP Server - traditional non-threaded model
+ Each Apache Multi-Processing Module provides a different "flavor" of
+ web server binary, compiled with a different processing model.
+ .
+ The prefork MPM provides a non-threaded, pre-forking implementation
+ that handles requests in a manner similar to Apache 1.3. It is not as
+ fast as threaded models, but is considered to be more stable. It is
+ appropriate for sites that need to maintain compatibility with
+ non-thread-safe libraries, and is the best MPM for isolating each
+ request, so that a problem with a single request will not affect any
+ other.
+apache2-utils amd64 2.2.16-6+squeeze6 384 utility programs for webservers
+ Provides some add-on programs useful for any webserver. These include:
+ - ab (Apache benchmark tool)
+ - logresolve (Resolve IP addresses to hostname in logfiles)
+ - htpasswd (Manipulate basic authentication files)
+ - htdigest (Manipulate digest authentication files)
+ - dbmmanage (Manipulate basic authentication files in DBM format, using perl)
+ - htdbm (Manipulate basic authentication files in DBM format, using APR)
+ - rotatelogs (Periodically stop writing to a logfile and open a new one)
+ - split-logfile (Split a single log including multiple vhosts)
+ - checkgid (Checks whether the caller can setgid to the specified group)
+ - check_forensic (Extract mod_log_forensic output from Apache log files)
+apache2.2-bin amd64 2.2.16-6+squeeze6 3856 Apache HTTP Server common binary files
+ The Apache Software Foundation's goal is to build a secure, efficient and
+ extensible HTTP server as standards-compliant open source software. The
+ result has long been the number one web server on the Internet.
+ .
+ This package contains all binaries but no configuration or support scripts.
+ To get a stand-alone server, you need to install one of the apache2-mpm-*
+ packages, such as worker or prefork. Other packages like gnome-user-share
+ may bring their own Apache configuration, though.
+apache2.2-common amd64 2.2.16-6+squeeze6 2144 Apache HTTP Server common files
+ The Apache Software Foundation's goal is to build a secure, efficient and
+ extensible HTTP server as standards-compliant open source software. The
+ result has long been the number one web server on the Internet.
+ .
+ This package contains the configuration and support scripts.
+ However, it does *not* include the server itself; for this you need to
+ install one of the apache2-mpm-* packages, such as worker or prefork.
+apt amd64 0.8.10.3+squeeze1 5644 Advanced front-end for dpkg
This is Debian's next generation front-end for the dpkg package manager.
It provides the apt-get utility and APT dselect method that provides a
simpler, safer way to install and upgrade packages.
.
APT features complete installation ordering, multiple source capability
and several other unique features, see the Users Guide in apt-doc.
-apt-utils 0.7.20.2+lenny2 396 APT utility programs
+apt-utils amd64 0.8.10.3+squeeze1 540 APT utility programs
This package contains some APT utility programs such as apt-ftparchive,
apt-sortpkgs and apt-extracttemplates.
.
apt-extracttemplates is used by debconf to prompt for configuration
questions before installation. apt-ftparchive is used to create Package
and other index files. apt-sortpkgs is a Package/Source file normalizer.
-aptitude 0.4.11.11-1~lenny1 9808 terminal-based package manager
- aptitude is a terminal-based package manager with a number of useful
- features, including: a mutt-like syntax for matching packages in a
- flexible manner, dselect-like persistence of user actions, the
- ability to retrieve and display the Debian changelog of most
- packages, and a command-line mode similar to that of apt-get.
+apt-xapian-index all 0.41 376 maintenance and search tools for a Xapian index of Debian packages
+ This package provides update-apt-xapian-index, a tool to maintan a Xapian
+ index of Debian package information in /var/lib/apt-xapian-index, and
+ axi-search, a command line search tool that uses the index.
+ .
+ axi-cache allows to search packages very quickly, and it also interfaces with
+ the shell command line completion in a smart way, providing context-sensitive
+ keyword and tag suggestions even before the search command is actually run.
+ .
+ update-apt-xapian-index allows plugins to be installed in
+ /usr/share/apt-xapian-index to index all sorts of extra information, such as
+ Debtags tags, popcon information, package ratings and anything else that would
+ fit.
+ .
+ The index generated by update-apt-xapian-index is self-documenting, as it
+ contains an autogenerated README file with information on the index layout and
+ all the data that can be found in it.
+aptitude amd64 0.6.3-3.2+squeeze1 11916 terminal-based package manager (terminal interface only)
+ aptitude is a package manager with a number of useful features,
+ including: a mutt-like syntax for matching packages in a flexible
+ manner, dselect-like persistence of user actions, the ability to
+ retrieve and display the Debian changelog of most packages, and a
+ command-line mode similar to that of apt-get.
.
aptitude is also Y2K-compliant, non-fattening, naturally cleansing,
and housebroken.
-at 3.1.10.2 220 Delayed job execution and batch processing
+ .
+ This package contains a version of aptitude compiled with only the
+ classic terminal-based interface (using curses). For an experimental
+ graphical interface, see the package aptitude-gtk.
+aspell amd64 0.60.6-4 1184 GNU Aspell spell-checker
+ GNU Aspell is a spell-checker which can be used either as a standalone
+ application or embedded in other programs. Its main feature is that it
+ does a much better job of suggesting possible spellings than just about
+ any other spell-checker available for the English language, including
+ Ispell and Microsoft Word. It also has many other technical
+ enhancements over Ispell such as using shared memory for dictionaries
+ and intelligently handling personal dictionaries when more than one
+ Aspell process is open at once.
+ .
+ Aspell is designed to be a drop-in replacement for Ispell.
+aspell-en all 6.0-0-6 548 English dictionary for GNU Aspell
+ This package contains all the required files to add support for English
+ language to the GNU Aspell spell checker.
+ .
+ American, British and Canadian spellings are included.
+aspell-fr all 0.50-3-7 636 French dictionary for aspell
+ This package contains all the required files to add support
+ for French language to aspell spell checker.
+at amd64 3.1.12-1 220 Delayed job execution and batch processing
At and batch read shell commands from standard input
storing them as a job to be scheduled for execution in the
future.
diff --git a/resources/linux/packaging/rpm b/resources/linux/packaging/rpm
index 418e628..ba77841 100644
--- a/resources/linux/packaging/rpm
+++ b/resources/linux/packaging/rpm
@@ -1,4 +1,10 @@
-specspo 13-1.el5 Wed Dec 22 23:26:02 2010 20486218 Red Hat, Inc. Fedora package descriptions, summaries, and groups.
-mktemp 1.5-23.2.2 Wed Dec 22 23:26:17 2010 15712 Red Hat, Inc. A small utility for safely making /tmp files.
-libICE 1.0.1-2.1 Wed Dec 22 23:26:18 2010 111181 Red Hat, Inc. X.Org X11 libICE runtime library
-nspr 4.7.3-2.el5 Wed Dec 22 23:26:22 2010 253512 Red Hat, Inc. Netscape Portable Runtime
+libpciaccess0 i586 0.12.1-1.mga1 mar. 19 juil. 2011 15:05:03 CEST 38452 Mageia.Org Generic PCI access library (from X.org)
+firebird-devel x86_64 2.5.1.26351.0-3.mga2 lun. 09 janv. 2012 09:24:00 CET 351554 Mageia.Org Development Libraries for Firebird SQL Database
+gjs x86_64 1.32.0-1.mga2 mar. 27 mars 2012 19:08:21 CEST 176167 Mageia.Org JavaScript bindings based on gobject-introspection
+lib64nss3 x86_64 3.13.4-1.mga2 mer. 18 avril 2012 22:21:13 CEST 3346040 Mageia.Org Network Security Services (NSS)
+ruby-term-ansicolor noarch 1.0.5-3.mga1 ven. 29 juil. 2011 13:12:10 CEST 7211 Mageia.Org Ruby library that colors strings using ANSI escape sequences
+lib64tidy-devel x86_64 20090904-3.mga1 lun. 02 janv. 2012 13:12:46 CET 1930155 Mageia.Org Headers for developing programs that will use tidy
+xfsprogs x86_64 3.1.8-1.mga2 dim. 25 mars 2012 00:45:24 CET 3628382 Mageia.Org Utilities for managing the XFS filesystem
+lib64swresample0 x86_64 0.10.2-2.mga2.tainted jeu. 12 avril 2012 10:02:14 CEST 35016 Mageia.Org Shared library part of ffmpeg
+lib64pyglib2.0_0 x86_64 2.28.6-6.mga2 jeu. 23 févr. 2012 10:25:31 CET 18672 Mageia.Org Python Glib bindings shared library
+perl-Gtk2-ImageView x86_64 0.50.0-4.mga2 mar. 03 avril 2012 16:38:46 CEST 153539 Mageia Perl bindings to the GtkImageView image viewer widget
diff --git a/t/inventory/linux/softwares.t b/t/inventory/linux/softwares.t
index 661da0e..d7b836b 100755
--- a/t/inventory/linux/softwares.t
+++ b/t/inventory/linux/softwares.t
@@ -11,90 +11,225 @@ use FusionInventory::Agent::Task::Inventory::Input::Generic::Softwares::Gentoo;
my $rpm_packages = [
{
+ PUBLISHER => 'Mageia.Org',
+ NAME => 'libpciaccess0',
+ COMMENTS => 'Generic PCI access library (from X.org)',
+ INSTALLDATE => 'mar. 19 juil. 2011 15:05:03 CEST',
+ FILESIZE => '38452',
FROM => 'rpm',
- PUBLISHER => 'Red Hat, Inc.',
- NAME => 'specspo',
- COMMENTS => 'Fedora package descriptions, summaries, and groups.',
- INSTALLDATE => 'Wed Dec 22 23:26:02 2010',
- VERSION => '13-1.el5',
- FILESIZE => '20486218'
+ ARCH => 'i586',
+ VERSION => '0.12.1-1.mga1'
},
{
+ PUBLISHER => 'Mageia.Org',
+ NAME => 'firebird-devel',
+ COMMENTS => 'Development Libraries for Firebird SQL Database',
+ INSTALLDATE => 'lun. 09 janv. 2012 09:24:00 CET',
+ FILESIZE => '351554',
FROM => 'rpm',
- PUBLISHER => 'Red Hat, Inc.',
- NAME => 'mktemp',
- COMMENTS => 'A small utility for safely making /tmp files.',
- INSTALLDATE => 'Wed Dec 22 23:26:17 2010',
- VERSION => '1.5-23.2.2',
- FILESIZE => '15712'
+ ARCH => 'x86_64',
+ VERSION => '2.5.1.26351.0-3.mga2'
},
{
+ PUBLISHER => 'Mageia.Org',
+ NAME => 'gjs',
+ COMMENTS => 'JavaScript bindings based on gobject-introspection',
+ INSTALLDATE => 'mar. 27 mars 2012 19:08:21 CEST',
+ FILESIZE => '176167',
FROM => 'rpm',
- PUBLISHER => 'Red Hat, Inc.',
- NAME => 'libICE',
- COMMENTS => 'X.Org X11 libICE runtime library',
- INSTALLDATE => 'Wed Dec 22 23:26:18 2010',
- VERSION => '1.0.1-2.1',
- FILESIZE => '111181'
+ ARCH => 'x86_64',
+ VERSION => '1.32.0-1.mga2'
},
{
+ PUBLISHER => 'Mageia.Org',
+ NAME => 'lib64nss3',
+ COMMENTS => 'Network Security Services (NSS)',
+ INSTALLDATE => 'mer. 18 avril 2012 22:21:13 CEST',
+ FILESIZE => '3346040',
FROM => 'rpm',
- PUBLISHER => 'Red Hat, Inc.',
- NAME => 'nspr',
- COMMENTS => 'Netscape Portable Runtime',
- INSTALLDATE => 'Wed Dec 22 23:26:22 2010',
- VERSION => '4.7.3-2.el5',
- FILESIZE => '253512'
+ ARCH => 'x86_64',
+ VERSION => '3.13.4-1.mga2'
+ },
+ {
+ PUBLISHER => 'Mageia.Org',
+ NAME => 'ruby-term-ansicolor',
+ COMMENTS => 'Ruby library that colors strings using ANSI escape sequences',
+ INSTALLDATE => 'ven. 29 juil. 2011 13:12:10 CEST',
+ FILESIZE => '7211',
+ FROM => 'rpm',
+ ARCH => 'noarch',
+ VERSION => '1.0.5-3.mga1'
+ },
+ {
+ PUBLISHER => 'Mageia.Org',
+ NAME => 'lib64tidy-devel',
+ COMMENTS => 'Headers for developing programs that will use tidy',
+ INSTALLDATE => 'lun. 02 janv. 2012 13:12:46 CET',
+ FILESIZE => '1930155',
+ FROM => 'rpm',
+ ARCH => 'x86_64',
+ VERSION => '20090904-3.mga1'
+ },
+ {
+ PUBLISHER => 'Mageia.Org',
+ NAME => 'xfsprogs',
+ COMMENTS => 'Utilities for managing the XFS filesystem',
+ INSTALLDATE => 'dim. 25 mars 2012 00:45:24 CET',
+ FILESIZE => '3628382',
+ FROM => 'rpm',
+ ARCH => 'x86_64',
+ VERSION => '3.1.8-1.mga2'
+ },
+ {
+ PUBLISHER => 'Mageia.Org',
+ NAME => 'lib64swresample0',
+ COMMENTS => 'Shared library part of ffmpeg',
+ INSTALLDATE => 'jeu. 12 avril 2012 10:02:14 CEST',
+ FILESIZE => '35016',
+ FROM => 'rpm',
+ ARCH => 'x86_64',
+ VERSION => '0.10.2-2.mga2.tainted'
+ },
+ {
+ PUBLISHER => 'Mageia.Org',
+ NAME => 'lib64pyglib2.0_0',
+ COMMENTS => 'Python Glib bindings shared library',
+ INSTALLDATE => 'jeu. 23 févr. 2012 10:25:31 CET',
+ FILESIZE => '18672',
+ FROM => 'rpm',
+ ARCH => 'x86_64',
+ VERSION => '2.28.6-6.mga2'
+ },
+ {
+ PUBLISHER => 'Mageia',
+ NAME => 'perl-Gtk2-ImageView',
+ COMMENTS => 'Perl bindings to the GtkImageView image viewer widget',
+ INSTALLDATE => 'mar. 03 avril 2012 16:38:46 CEST',
+ FILESIZE => '153539',
+ FROM => 'rpm',
+ ARCH => 'x86_64',
+ VERSION => '0.50.0-4.mga2'
}
];
my $deb_packages = [
{
FROM => 'deb',
- NAME => 'acpi-support-base',
- COMMENTS => 'scripts for handling base ACPI events such as the power button',
- VERSION => '0.109-11',
- FILESIZE => '88'
+ NAME => 'adduser',
+ COMMENTS => 'add and remove users and groups',
+ ARCH => 'all',
+ VERSION => '3.112+nmu2',
+ FILESIZE => '1228'
},
{
FROM => 'deb',
- NAME => 'acpid',
- COMMENTS => 'Utilities for using ACPI power management',
- VERSION => '1.0.8-1lenny2',
- FILESIZE => '196'
+ NAME => 'anthy-common',
+ COMMENTS => 'input method for Japanese - common files and dictionary',
+ ARCH => 'all',
+ VERSION => '9100h-6',
+ FILESIZE => '13068'
},
{
FROM => 'deb',
- NAME => 'adduser',
- COMMENTS => 'add and remove users and groups',
- VERSION => '3.110',
- FILESIZE => '944'
+ NAME => 'apache2',
+ COMMENTS => 'Apache HTTP Server metapackage',
+ ARCH => 'amd64',
+ VERSION => '2.2.16-6+squeeze6',
+ FILESIZE => '36'
+ },
+ {
+ FROM => 'deb',
+ NAME => 'apache2-mpm-prefork',
+ COMMENTS => 'Apache HTTP Server - traditional non-threaded model',
+ ARCH => 'amd64',
+ VERSION => '2.2.16-6+squeeze6',
+ FILESIZE => '68'
+ },
+ {
+ FROM => 'deb',
+ NAME => 'apache2-utils',
+ COMMENTS => 'utility programs for webservers',
+ ARCH => 'amd64',
+ VERSION => '2.2.16-6+squeeze6',
+ FILESIZE => '384'
+ },
+ {
+ FROM => 'deb',
+ NAME => 'apache2.2-bin',
+ COMMENTS => 'Apache HTTP Server common binary files',
+ ARCH => 'amd64',
+ VERSION => '2.2.16-6+squeeze6',
+ FILESIZE => '3856'
+ },
+ {
+ FROM => 'deb',
+ NAME => 'apache2.2-common',
+ COMMENTS => 'Apache HTTP Server common files',
+ ARCH => 'amd64',
+ VERSION => '2.2.16-6+squeeze6',
+ FILESIZE => '2144'
},
{
FROM => 'deb',
NAME => 'apt',
COMMENTS => 'Advanced front-end for dpkg',
- VERSION => '0.7.20.2+lenny2',
- FILESIZE => '4652'
+ ARCH => 'amd64',
+ VERSION => '0.8.10.3+squeeze1',
+ FILESIZE => '5644'
},
{
FROM => 'deb',
NAME => 'apt-utils',
COMMENTS => 'APT utility programs',
- VERSION => '0.7.20.2+lenny2',
- FILESIZE => '396'
+ ARCH => 'amd64',
+ VERSION => '0.8.10.3+squeeze1',
+ FILESIZE => '540'
+ },
+ {
+ FROM => 'deb',
+ NAME => 'apt-xapian-index',
+ COMMENTS => 'maintenance and search tools for a Xapian index of Debian packages',
+ ARCH => 'all',
+ VERSION => '0.41',
+ FILESIZE => '376'
},
{
FROM => 'deb',
NAME => 'aptitude',
- COMMENTS => 'terminal-based package manager',
- VERSION => '0.4.11.11-1~lenny1',
- FILESIZE => '9808'
+ COMMENTS => 'terminal-based package manager (terminal interface only)',
+ ARCH => 'amd64',
+ VERSION => '0.6.3-3.2+squeeze1',
+ FILESIZE => '11916'
+ },
+ {
+ FROM => 'deb',
+ NAME => 'aspell',
+ COMMENTS => 'GNU Aspell spell-checker',
+ ARCH => 'amd64',
+ VERSION => '0.60.6-4',
+ FILESIZE => '1184'
+ },
+ {
+ FROM => 'deb',
+ NAME => 'aspell-en',
+ COMMENTS => 'English dictionary for GNU Aspell',
+ ARCH => 'all',
+ VERSION => '6.0-0-6',
+ FILESIZE => '548'
+ },
+ {
+ FROM => 'deb',
+ NAME => 'aspell-fr',
+ COMMENTS => 'French dictionary for aspell',
+ ARCH => 'all',
+ VERSION => '0.50-3-7',
+ FILESIZE => '636'
},
{
FROM => 'deb',
NAME => 'at',
COMMENTS => 'Delayed job execution and batch processing',
- VERSION => '3.1.10.2',
+ ARCH => 'amd64',
+ VERSION => '3.1.12-1',
FILESIZE => '220'
}
];
================================================================
Commit: dcb3d56ab12d4dddd76728a65c0923408c441254
https://github.com/fusinv/fusioninventory-agent/commit/dcb3d56ab12d4dddd76728a65c0923408c441254
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: 2012-05-03 (Thu, 03 May 2012)
Changed paths:
A fusioninventory-inetd
Log Message:
-----------
Merge remote-tracking branch 'forge/2.3.x' into 2.3.x
diff --git a/fusioninventory-inetd b/fusioninventory-inetd
new file mode 100755
index 0000000..9675907
--- /dev/null
+++ b/fusioninventory-inetd
@@ -0,0 +1,45 @@
+#!/usr/bin/perl -w
+
+#service fusioninventory
+#{
+# type = UNLISTED
+# disabled = no
+# flag = REUSE
+# port = 62354
+# socket_type = stream
+# protocol = tcp
+# wait = no
+# user = root
+# server = /home/goneri/fusioninventory/agent/fusioninventory-inetd
+#}
+#
+
+use strict;
+use warnings;
+
+use lib '/home/goneri/fusioninventory/agent/lib';
+
+use Socket;
+use HTTP::Request;
+use FusionInventory::Agent::HTTP::Server;
+
+use Data::Dumper;
+my $request;
+my $server = $ENV{REMOTE_HOST};
+my $port;
+my $client;
+if ( my $hersockaddr = getpeername(STDOUT) ) {
+ my $client_n;
+ ( $port, $client_n ) = sockaddr_in($hersockaddr);
+ $client = inet_ntoa($client_n);
+}
+if ( <STDIN> =~ /^GET\s(\/\S+)\s/ ) {
+ $request = HTTP::Request->new( 'GET', "http://$server:$port$1" );
+}
+
+print "HTTP/1.1 200 OK\n";
+print "Content-type: text/html\n\n";
+print
+
+my $path = $request->uri()->path();
+print "request $path from client $client\n";
================================================================
Compare: https://github.com/fusinv/fusioninventory-agent/compare/e3176e2...dcb3d56
More information about the Fusioninventory-commit
mailing list