perfsonar-dev - [pS-dev] [GEANT/SA2/SA2T3-OPPD] r686 - in trunk: build build/NMWG build/debian build/debian/libnmwg-perl-debian build/debian/perfsonar-oppd-debian build/debian/perfsonar-oppd-mp-bwctl-debian build/debian/perfsonar-oppd-mp-owamp-debian build/perfSONAR build/perfSONAR/lib/perfSONAR build/perfSONAR/t build/perfSONAR-MP-BWCTL build/perfSONAR-MP-BWCTL/lib/perfSONAR build/perfSONAR-MP-OWAMP doc etc/oppd-mdm etc/oppd-mdm/oppd.d lib lib/NMWG/schema/2.0 lib/perfSONAR lib/perfSONAR/MP lib/perfSONAR/SOAP/HTTP t tools/perfSONAR-client
Subject: perfsonar development work
List archive
[pS-dev] [GEANT/SA2/SA2T3-OPPD] r686 - in trunk: build build/NMWG build/debian build/debian/libnmwg-perl-debian build/debian/perfsonar-oppd-debian build/debian/perfsonar-oppd-mp-bwctl-debian build/debian/perfsonar-oppd-mp-owamp-debian build/perfSONAR build/perfSONAR/lib/perfSONAR build/perfSONAR/t build/perfSONAR-MP-BWCTL build/perfSONAR-MP-BWCTL/lib/perfSONAR build/perfSONAR-MP-OWAMP doc etc/oppd-mdm etc/oppd-mdm/oppd.d lib lib/NMWG/schema/2.0 lib/perfSONAR lib/perfSONAR/MP lib/perfSONAR/SOAP/HTTP t tools/perfSONAR-client
Chronological Thread
- From:
- To:
- Subject: [pS-dev] [GEANT/SA2/SA2T3-OPPD] r686 - in trunk: build build/NMWG build/debian build/debian/libnmwg-perl-debian build/debian/perfsonar-oppd-debian build/debian/perfsonar-oppd-mp-bwctl-debian build/debian/perfsonar-oppd-mp-owamp-debian build/perfSONAR build/perfSONAR/lib/perfSONAR build/perfSONAR/t build/perfSONAR-MP-BWCTL build/perfSONAR-MP-BWCTL/lib/perfSONAR build/perfSONAR-MP-OWAMP doc etc/oppd-mdm etc/oppd-mdm/oppd.d lib lib/NMWG/schema/2.0 lib/perfSONAR lib/perfSONAR/MP lib/perfSONAR/SOAP/HTTP t tools/perfSONAR-client
- Date: Mon, 7 Mar 2011 10:09:40 GMT
Author: dfn.calim
Date: 2011-03-07 10:09:39 +0000 (Mon, 07 Mar 2011)
New Revision: 686
Added:
trunk/build/NMWG/MANIFEST
trunk/build/NMWG/MANIFEST.SKIP
trunk/build/NMWG/MANIFEST.bak
trunk/build/debian/0.53-0rc1/
trunk/build/debian/create-personar-oppd-dpkg.sh
trunk/build/debian/libnmwg-perl-debian/
trunk/build/debian/perfsonar-oppd-debian/
trunk/build/debian/perfsonar-oppd-mp-bwctl-debian/
trunk/build/debian/perfsonar-oppd-mp-owamp-debian/
trunk/build/perfSONAR-MP-BWCTL/MANIFEST.SKIP
trunk/build/perfSONAR-MP-OWAMP/
trunk/build/perfSONAR/MANIFEST.SKIP
trunk/build/perfSONAR/lib/perfSONAR/DataStruct.pm
trunk/build/perfSONAR/lib/perfSONAR/DataStruct/
trunk/doc/images/
trunk/etc/oppd-mdm/oppd.d/hades.conf
trunk/etc/oppd-mdm/oppd.d/owamp.conf
trunk/etc/oppd-mdm/oppd.dev.conf
trunk/lib/perfSONAR/DataStruct.pm
trunk/lib/perfSONAR/DataStruct/
trunk/lib/perfSONAR/MA.old.pm
trunk/lib/perfSONAR/MA.pm
trunk/tools/perfSONAR-client/README
trunk/tools/perfSONAR-client/bwctl-iperf-req-more-data.xml
trunk/tools/perfSONAR-client/bwctl-test-ARNES
trunk/tools/perfSONAR-client/bwctl-test-calim
trunk/tools/perfSONAR-client/owamp-raw-req-01.xml
trunk/tools/perfSONAR-client/owamp-raw-req-more-01.xml
Removed:
trunk/build/NMWG/MANIFEST
trunk/build/debian/NMWG-0.02/
trunk/build/debian/libnmwg-perl_0.02-0rc1.dsc
trunk/build/debian/libnmwg-perl_0.02-0rc1.tar.gz
trunk/build/debian/libnmwg-perl_0.02-0rc1_all.deb
trunk/build/debian/libnmwg-perl_0.02-0rc1_i386.changes
trunk/build/debian/perfsonar-oppd-0.51/
trunk/build/debian/perfsonar-oppd-mp-bwctl-0.51/
trunk/build/debian/perfsonar-oppd-mp-bwctl_0.52-0rc1.dsc
trunk/build/debian/perfsonar-oppd-mp-bwctl_0.52-0rc1.tar.gz
trunk/build/debian/perfsonar-oppd-mp-bwctl_0.52-0rc1_all.deb
trunk/build/debian/perfsonar-oppd-mp-bwctl_0.52-0rc1_i386.changes
trunk/build/debian/perfsonar-oppd-mp-generic-0.51/
trunk/build/debian/perfsonar-oppd_0.52-0rc1.dsc
trunk/build/debian/perfsonar-oppd_0.52-0rc1.tar.gz
trunk/build/debian/perfsonar-oppd_0.52-0rc1_all.deb
trunk/build/debian/perfsonar-oppd_0.52-0rc1_i386.changes
trunk/build/perfSONAR-MP-BWCTL/lib/perfSONAR/BWCTL.pm
trunk/build/perfSONAR/debian/
trunk/lib/perfSONAR/BWCTL.pm
trunk/lib/perfSONAR/MA.pm
trunk/lib/perfSONAR/OWAMP.pm
trunk/tools/perfSONAR-client/bulk-request.xml
trunk/tools/perfSONAR-client/generic-req-which.xml
trunk/tools/perfSONAR-client/generic-req.xml
trunk/tools/perfSONAR-client/generic-test
trunk/tools/perfSONAR-client/hoplist-request.xml
trunk/tools/perfSONAR-client/hoplist-test
trunk/tools/perfSONAR-client/owamp-ind-req.xml
trunk/tools/perfSONAR-client/owamp-ind2-req.xml
trunk/tools/perfSONAR-client/owamp-raw-req.xml
trunk/tools/perfSONAR-client/owamp-req.xml
trunk/tools/perfSONAR-client/psui-all-request.xml
trunk/tools/perfSONAR-client/psui-one-request.xml
trunk/tools/perfSONAR-client/status-request.xml
trunk/tools/perfSONAR-client/status-test
Modified:
trunk/build/debian/README
trunk/build/perfSONAR-MP-BWCTL/MANIFEST
trunk/build/perfSONAR/Build.PL
trunk/build/perfSONAR/MANIFEST
trunk/build/perfSONAR/t/00-load.t
trunk/build/perfSONAR/t/perfSONAR-001-SOAP-Message.t
trunk/build/perfSONAR/t/perfSONAR-002-Core.t
trunk/etc/oppd-mdm/oppd.conf
trunk/etc/oppd-mdm/oppd.d/bwctl.conf
trunk/lib/NMWG/schema/2.0/owamp.rnc
trunk/lib/perfSONAR.pm
trunk/lib/perfSONAR/Echo.pm
trunk/lib/perfSONAR/MP.pm
trunk/lib/perfSONAR/MP/BWCTL.pm
trunk/lib/perfSONAR/MP/OWAMP.pm
trunk/lib/perfSONAR/SOAP/HTTP/UserAgent.pm
trunk/t/perfSONAR-001-SOAP-Message.t
trunk/t/perfSONAR-002-Core.t
trunk/tools/perfSONAR-client/bwctl-iperf-req2.xml
trunk/tools/perfSONAR-client/bwctl-test
trunk/tools/perfSONAR-client/hades-test
Log:
merged branches/perfsonar-oppd-new-architect and trunk
Deleted: trunk/build/NMWG/MANIFEST
===================================================================
--- trunk/build/NMWG/MANIFEST 2011-03-07 10:07:09 UTC (rev 685)
+++ trunk/build/NMWG/MANIFEST 2011-03-07 10:09:39 UTC (rev 686)
@@ -1,9 +0,0 @@
-lib/NMWG.pm
-lib/NMWG/Message.pm
-Build.PL
-Changes
-MANIFEST
-META.yml # Will be created by "make dist"
-README
-t/00-load.t
-t/NMWG-001-Message.t
Copied: trunk/build/NMWG/MANIFEST (from rev 684,
branches/perfsonar-oppd-new-architect/build/NMWG/MANIFEST)
===================================================================
--- trunk/build/NMWG/MANIFEST (rev 0)
+++ trunk/build/NMWG/MANIFEST 2011-03-07 10:09:39 UTC (rev 686)
@@ -0,0 +1,9 @@
+Build.PL
+Changes
+lib/NMWG.pm
+lib/NMWG/Message.pm
+MANIFEST This list of files
+prepare-nmwg-debian.pl
+README
+t/00-load.t
+META.yml
Copied: trunk/build/NMWG/MANIFEST.SKIP (from rev 684,
branches/perfsonar-oppd-new-architect/build/NMWG/MANIFEST.SKIP)
===================================================================
--- trunk/build/NMWG/MANIFEST.SKIP (rev 0)
+++ trunk/build/NMWG/MANIFEST.SKIP 2011-03-07 10:09:39 UTC (rev 686)
@@ -0,0 +1,45 @@
+# Avoid version control files.
+\bRCS\b
+\bCVS\b
+,v$
+\B\.svn\b
+\B\.cvsignore$
+
+# Avoid Makemaker generated and utility files.
+\bMakefile$
+\bblib
+\bMakeMaker-\d
+\bpm_to_blib$
+\bblibdirs$
+^MANIFEST\.SKIP$
+
+# Avoid Module::Build generated and utility files.
+\bBuild$
+\bBuild.bat$
+\b_build
+
+# Avoid Devel::Cover generated files
+\bcover_db
+
+# Avoid temp and backup files.
+~$
+\.tmp$
+\.old$
+\.bak$
+\#$
+\.#
+\.rej$
+
+# Avoid OS-specific files/dirs
+# Mac OSX metadata
+\B\.DS_Store
+# Mac OSX SMB mount metadata files
+\B\._
+# Avoid archives of this distribution
+\bNMWG-[\d\.\_]+
+
+# Avoid debian files
+\bDEBIAN
+
+# Avoid RedHat spec files
+\bspec
Copied: trunk/build/NMWG/MANIFEST.bak (from rev 684,
branches/perfsonar-oppd-new-architect/build/NMWG/MANIFEST.bak)
===================================================================
--- trunk/build/NMWG/MANIFEST.bak (rev 0)
+++ trunk/build/NMWG/MANIFEST.bak 2011-03-07 10:09:39 UTC (rev 686)
@@ -0,0 +1,13 @@
+Build.PL
+Changes
+DEBIAN/changelog.Debian.gz
+DEBIAN/control
+DEBIAN/copyright
+lib/NMWG.pm
+lib/NMWG/Message.pm
+MANIFEST This list of files
+perl-NMWG-MDM.spec
+perl-NMWG.spec
+prepare-nmwg-debian.pl
+README
+t/00-load.t
Copied: trunk/build/debian/0.53-0rc1 (from rev 684,
branches/perfsonar-oppd-new-architect/build/debian/0.53-0rc1)
Modified: trunk/build/debian/README
===================================================================
--- trunk/build/debian/README 2011-03-07 10:07:09 UTC (rev 685)
+++ trunk/build/debian/README 2011-03-07 10:09:39 UTC (rev 686)
@@ -1,11 +1,23 @@
To build a debian package:
-1. go into the specific dorectory
- for example cd perfsonar-oppd-xy
-2. Execute the command:
- dpkg-buildpackage -rfakeroot
+1. Go to the main source directory fpr example:
+ cd ../perfSONAR
+2. Execute there to build distribution tarball
+ ./Build dist
+ => This will create a perfsonar-oppd-xyz.tar.gz file
+3. Change back to the debian directory
+ cd ../debian
+4. Create here a symlink to the new created tar file
+ ln -s ../perfSONAR/perfsonar-oppd-xyz.tar.gz .
+5. Unpack it
+ tar -xzvf perfsonar-oppd-xyz.tar.gz
+6. Change to the new directory
+ cd perfsonar-oppd-xyz
+7. Make a symlink to the debian files
+ ln -s ../perfsonar-oppd-debian debian
+8. Execute the command:
+ dpkg-buildpackage -rfakeroot
+9. change to the upper directory
+ cd ../
-3. change to the upper directory
- cd ../
-
=> Here are the new package
Copied: trunk/build/debian/create-personar-oppd-dpkg.sh (from rev 684,
branches/perfsonar-oppd-new-architect/build/debian/create-personar-oppd-dpkg.sh)
===================================================================
--- trunk/build/debian/create-personar-oppd-dpkg.sh
(rev 0)
+++ trunk/build/debian/create-personar-oppd-dpkg.sh 2011-03-07 10:09:39
UTC (rev 686)
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+usage()
+{
+echo -e "Usage:";
+echo -e "\tcreate-personar-oppd-dpkg.sh <ACTION> <MODULE>";
+echo -e "\t\t<ACTION>";
+echo -e "\t\t create\tcreate package";
+echo -e "\t\t clean\tclean all files and directories";
+echo -e "\t\t<MODULE>";
+echo -e "\t\tcore\t do action for perfsonar-oppd";
+echo -e "\t\tbwctl\t do action for perfsonar-oppd-mp-bwctl";
+echo -e "\t\towamp\t do action for perfsonar-oppd-mp-owamp";
+}
+
+
+if [ -z "$1" ]; then
+ usage
+ exit
+fi
+if [ -z "$2" ]; then
+ usage
+ exit
+fi
+
+version="0.53"
+
+if [ $2 == 'core' ] ; then
+ pkg_name="perfsonar-oppd"
+ srcpath="../perfSONAR"
+fi
+
+if [ $2 == 'bwctl' ] ; then
+ pkg_name="perfsonar-oppd-mp-bwctl"
+ srcpath="../perfSONAR-MP-BWCTL"
+fi
+
+if [ $2 == 'owamp' ] ; then
+ pkg_name="perfsonar-oppd-mp-owamp"
+ srcpath="../perfSONAR-MP-OWAMP"
+fi
+
+if [ $1 == 'create' ] ; then
+ cd $srcpath
+ perl Build.PL
+ rm $pkg_name-$version.tar.gz
+ ./Build dist
+ cd ../debian
+ ln -s $srcpath/$pkg_name-$version.tar.gz
+ tar -xzvf $pkg_name-$version.tar.gz
+ cd $pkg_name-$version
+ cp -aRf ../$pkg_name-debian debian
+ dpkg-buildpackage -rfakeroot
+fi
+
+if [ $1 == 'clean' ] ; then
+ echo 'deleting files....'
+ rm -rf $pkg_name-$version.tar.gz
+ rm -rf $pkg_name-$version
+ rm $pkg_name'_'$version*
+fi
+
Copied: trunk/build/debian/libnmwg-perl-debian (from rev 684,
branches/perfsonar-oppd-new-architect/build/debian/libnmwg-perl-debian)
Property changes on: trunk/build/debian/libnmwg-perl-debian
___________________________________________________________________
Name: svn:mergeinfo
+
Deleted: trunk/build/debian/libnmwg-perl_0.02-0rc1.dsc
===================================================================
--- trunk/build/debian/libnmwg-perl_0.02-0rc1.dsc 2011-03-07 10:07:09
UTC (rev 685)
+++ trunk/build/debian/libnmwg-perl_0.02-0rc1.dsc 2011-03-07 10:09:39
UTC (rev 686)
@@ -1,16 +0,0 @@
-Format: 1.0
-Source: libnmwg-perl
-Binary: libnmwg-perl
-Architecture: all
-Version: 0.02-0rc1
-Maintainer: DFN Labor
<>
-Homepage: http://www.win-labor.dfn.de
-Standards-Version: 3.8.0
-Build-Depends: debhelper (>= 5), libmodule-build-perl
-Build-Depends-Indep: perl (>= 5.6.10-12)
-Checksums-Sha1:
- 2893ffbaa6b41d7f3669d023f1b195d51bde537f 8887 libnmwg-perl_0.02-0rc1.tar.gz
-Checksums-Sha256:
- c18f9e99d26c397c4a6bc06f47b97c645c2f3c1e4f4bd324f451da2034b0e8a5 8887
libnmwg-perl_0.02-0rc1.tar.gz
-Files:
- 582a324c7fb53bac9b1e2126671eba91 8887 libnmwg-perl_0.02-0rc1.tar.gz
Deleted: trunk/build/debian/libnmwg-perl_0.02-0rc1.tar.gz
===================================================================
(Binary files differ)
Deleted: trunk/build/debian/libnmwg-perl_0.02-0rc1_all.deb
===================================================================
(Binary files differ)
Deleted: trunk/build/debian/libnmwg-perl_0.02-0rc1_i386.changes
===================================================================
--- trunk/build/debian/libnmwg-perl_0.02-0rc1_i386.changes 2011-03-07
10:07:09 UTC (rev 685)
+++ trunk/build/debian/libnmwg-perl_0.02-0rc1_i386.changes 2011-03-07
10:09:39 UTC (rev 686)
@@ -1,28 +0,0 @@
-Format: 1.8
-Date: Wed, 2 Jun 2010 12:42:47 +0200
-Source: libnmwg-perl
-Binary: libnmwg-perl
-Architecture: source all
-Version: 0.02-0rc1
-Distribution: unstable
-Urgency: low
-Maintainer: DFN Labor
<>
-Changed-By: Hakan Calim
<>
-Description:
- libnmwg-perl - The NMWG Perl module
-Changes:
- libnmwg-perl (0.02-0rc1) unstable; urgency=low
- .
- * Initial Release.
-Checksums-Sha1:
- 702f9e50054f87ebe9ced27721d1ace8311659aa 581 libnmwg-perl_0.02-0rc1.dsc
- 2893ffbaa6b41d7f3669d023f1b195d51bde537f 8887 libnmwg-perl_0.02-0rc1.tar.gz
- 5131b9e825ce2cd492ba6bdd85b8e31a5a56fa4b 10334
libnmwg-perl_0.02-0rc1_all.deb
-Checksums-Sha256:
- c54aa6c486ca12abf9493d3cf4af08fb519a9e785f7c06a23e2292686d8c7fb2 581
libnmwg-perl_0.02-0rc1.dsc
- c18f9e99d26c397c4a6bc06f47b97c645c2f3c1e4f4bd324f451da2034b0e8a5 8887
libnmwg-perl_0.02-0rc1.tar.gz
- 4e53b792f428f8cf078eb3aa3403a43429950d82e5a286e89dca65888cee135e 10334
libnmwg-perl_0.02-0rc1_all.deb
-Files:
- ed6353bd14f77ce67c57a560e9680451 581 perl optional
libnmwg-perl_0.02-0rc1.dsc
- 582a324c7fb53bac9b1e2126671eba91 8887 perl optional
libnmwg-perl_0.02-0rc1.tar.gz
- 437379e43a5ddb35b6b15351011f6c13 10334 perl optional
libnmwg-perl_0.02-0rc1_all.deb
Copied: trunk/build/debian/perfsonar-oppd-debian (from rev 684,
branches/perfsonar-oppd-new-architect/build/debian/perfsonar-oppd-debian)
Property changes on: trunk/build/debian/perfsonar-oppd-debian
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: trunk/build/debian/perfsonar-oppd-mp-bwctl-debian (from rev 684,
branches/perfsonar-oppd-new-architect/build/debian/perfsonar-oppd-mp-bwctl-debian)
Property changes on: trunk/build/debian/perfsonar-oppd-mp-bwctl-debian
___________________________________________________________________
Name: svn:mergeinfo
+
Deleted: trunk/build/debian/perfsonar-oppd-mp-bwctl_0.52-0rc1.dsc
===================================================================
--- trunk/build/debian/perfsonar-oppd-mp-bwctl_0.52-0rc1.dsc 2011-03-07
10:07:09 UTC (rev 685)
+++ trunk/build/debian/perfsonar-oppd-mp-bwctl_0.52-0rc1.dsc 2011-03-07
10:09:39 UTC (rev 686)
@@ -1,15 +0,0 @@
-Format: 1.0
-Source: perfsonar-oppd-mp-bwctl
-Binary: perfsonar-oppd-mp-bwctl
-Architecture: all
-Version: 0.52-0rc1
-Maintainer: DFN Labor
<>
-Homepage: http://www.win-labor.dfn.de
-Standards-Version: 3.7.3
-Build-Depends: debhelper (>= 7), libmodule-build-perl
-Checksums-Sha1:
- 95d21c2958036a98cdc063700c517677dc69b7a5 11072
perfsonar-oppd-mp-bwctl_0.52-0rc1.tar.gz
-Checksums-Sha256:
- 37bef1225df38d7a95a91384a9544625bf8f7405a09c0b62ff5280f55f9a98c6 11072
perfsonar-oppd-mp-bwctl_0.52-0rc1.tar.gz
-Files:
- db57ba636e4805d1f0c9d3c297aef7d0 11072
perfsonar-oppd-mp-bwctl_0.52-0rc1.tar.gz
Deleted: trunk/build/debian/perfsonar-oppd-mp-bwctl_0.52-0rc1.tar.gz
===================================================================
(Binary files differ)
Deleted: trunk/build/debian/perfsonar-oppd-mp-bwctl_0.52-0rc1_all.deb
===================================================================
(Binary files differ)
Deleted: trunk/build/debian/perfsonar-oppd-mp-bwctl_0.52-0rc1_i386.changes
===================================================================
--- trunk/build/debian/perfsonar-oppd-mp-bwctl_0.52-0rc1_i386.changes
2011-03-07 10:07:09 UTC (rev 685)
+++ trunk/build/debian/perfsonar-oppd-mp-bwctl_0.52-0rc1_i386.changes
2011-03-07 10:09:39 UTC (rev 686)
@@ -1,28 +0,0 @@
-Format: 1.8
-Date: Tue, 20 Apr 2010 14:06:49 +0200
-Source: perfsonar-oppd-mp-bwctl
-Binary: perfsonar-oppd-mp-bwctl
-Architecture: source all
-Version: 0.52-0rc1
-Distribution: unstable
-Urgency: low
-Maintainer: DFN Labor
<>
-Changed-By: DFN Labor
<>
-Description:
- perfsonar-oppd-mp-bwctl - perfSONAR::MP::BWCTL Perl module, plugin for oppd
-Changes:
- perfsonar-oppd-mp-bwctl (0.52-0rc1) unstable; urgency=low
- .
- * Initial release
-Checksums-Sha1:
- 1f1cad6f8c38e330c1dac539b069376c633c1811 598
perfsonar-oppd-mp-bwctl_0.52-0rc1.dsc
- 95d21c2958036a98cdc063700c517677dc69b7a5 11072
perfsonar-oppd-mp-bwctl_0.52-0rc1.tar.gz
- 65b48b820b6655cc0eb946a9d9737ef3cc55642a 7484
perfsonar-oppd-mp-bwctl_0.52-0rc1_all.deb
-Checksums-Sha256:
- f1c550a5d7d3fb08a06180e1406e92880003837c9da30f4c59792ea5b267ec8b 598
perfsonar-oppd-mp-bwctl_0.52-0rc1.dsc
- 37bef1225df38d7a95a91384a9544625bf8f7405a09c0b62ff5280f55f9a98c6 11072
perfsonar-oppd-mp-bwctl_0.52-0rc1.tar.gz
- db16d5fd261180759a7d97721c00e57b5e3ac4c8eab32022d0e62e4aa12469b1 7484
perfsonar-oppd-mp-bwctl_0.52-0rc1_all.deb
-Files:
- 367fc26965246f7dde42588bc7be723b 598 net extra
perfsonar-oppd-mp-bwctl_0.52-0rc1.dsc
- db57ba636e4805d1f0c9d3c297aef7d0 11072 net extra
perfsonar-oppd-mp-bwctl_0.52-0rc1.tar.gz
- cd9ced76050fb71d1c214ab2cfb12ce9 7484 net extra
perfsonar-oppd-mp-bwctl_0.52-0rc1_all.deb
Copied: trunk/build/debian/perfsonar-oppd-mp-owamp-debian (from rev 684,
branches/perfsonar-oppd-new-architect/build/debian/perfsonar-oppd-mp-owamp-debian)
Property changes on: trunk/build/debian/perfsonar-oppd-mp-owamp-debian
___________________________________________________________________
Name: svn:mergeinfo
+
Deleted: trunk/build/debian/perfsonar-oppd_0.52-0rc1.dsc
===================================================================
--- trunk/build/debian/perfsonar-oppd_0.52-0rc1.dsc 2011-03-07 10:07:09
UTC (rev 685)
+++ trunk/build/debian/perfsonar-oppd_0.52-0rc1.dsc 2011-03-07 10:09:39
UTC (rev 686)
@@ -1,15 +0,0 @@
-Format: 1.0
-Source: perfsonar-oppd
-Binary: perfsonar-oppd
-Architecture: all
-Version: 0.52-0rc1
-Maintainer: DFN Labor
<>
-Homepage: http://www.win-labor.dfn.de
-Standards-Version: 3.7.3
-Build-Depends: debhelper (>= 7), libmodule-build-perl
-Checksums-Sha1:
- fde44fdad4dc346df9e549c837c57413d32209e1 95309
perfsonar-oppd_0.52-0rc1.tar.gz
-Checksums-Sha256:
- c0c5ebd0f7ed1c4b7b07b55cc6ae4b600209810906d829ff926bb9aeb6377a86 95309
perfsonar-oppd_0.52-0rc1.tar.gz
-Files:
- d8bc65e77ef3000f3737251f1d506cb1 95309 perfsonar-oppd_0.52-0rc1.tar.gz
Deleted: trunk/build/debian/perfsonar-oppd_0.52-0rc1.tar.gz
===================================================================
(Binary files differ)
Deleted: trunk/build/debian/perfsonar-oppd_0.52-0rc1_all.deb
===================================================================
(Binary files differ)
Deleted: trunk/build/debian/perfsonar-oppd_0.52-0rc1_i386.changes
===================================================================
--- trunk/build/debian/perfsonar-oppd_0.52-0rc1_i386.changes 2011-03-07
10:07:09 UTC (rev 685)
+++ trunk/build/debian/perfsonar-oppd_0.52-0rc1_i386.changes 2011-03-07
10:09:39 UTC (rev 686)
@@ -1,29 +0,0 @@
-Format: 1.8
-Date: Wed, 14 Apr 2010 09:23:27 +0200
-Source: perfsonar-oppd
-Binary: perfsonar-oppd
-Architecture: source all
-Version: 0.52-0rc1
-Distribution: unstable
-Urgency: low
-Maintainer: DFN Labor
<>
-Changed-By: DFN Labor
<>
-Description:
- perfsonar-oppd - open PERL perfSONAR daemon
-Changes:
- perfsonar-oppd (0.52-0rc1) unstable; urgency=low
- .
- * Conflict with old oppd packages resolved
- * This is the first revision of oppd debian package
-Checksums-Sha1:
- 22fc26d51217bfe4a221cf46444773e9f8af149b 553 perfsonar-oppd_0.52-0rc1.dsc
- fde44fdad4dc346df9e549c837c57413d32209e1 95309
perfsonar-oppd_0.52-0rc1.tar.gz
- 94b4e07ad9f53785194647ad6ba2bc4ffaf55aff 43262
perfsonar-oppd_0.52-0rc1_all.deb
-Checksums-Sha256:
- 09ac60b4071f5bc745d585064ef0e50bf26009a18dc98905c4612d9af04ffdec 553
perfsonar-oppd_0.52-0rc1.dsc
- c0c5ebd0f7ed1c4b7b07b55cc6ae4b600209810906d829ff926bb9aeb6377a86 95309
perfsonar-oppd_0.52-0rc1.tar.gz
- 9ccfd76c4168bc6222a340341b08dc32171b98103e12aa0e34eb0773dac5cdf5 43262
perfsonar-oppd_0.52-0rc1_all.deb
-Files:
- 5ec428d7e1126fd7f72f9ff6af8d2c2c 553 net extra perfsonar-oppd_0.52-0rc1.dsc
- d8bc65e77ef3000f3737251f1d506cb1 95309 net extra
perfsonar-oppd_0.52-0rc1.tar.gz
- 5e03f7e4bb3659d644448aee66e968d4 43262 net extra
perfsonar-oppd_0.52-0rc1_all.deb
Modified: trunk/build/perfSONAR/Build.PL
===================================================================
--- trunk/build/perfSONAR/Build.PL 2011-03-07 10:07:09 UTC (rev 685)
+++ trunk/build/perfSONAR/Build.PL 2011-03-07 10:09:39 UTC (rev 686)
@@ -31,7 +31,8 @@
'XML::LibXML::NodeList' => 0,
},
etc_files => {
- 'etc/oppd-egee.conf' => 'etc/oppd.conf',
+ #'etc/oppd-egee.conf' => 'etc/oppd.conf',
+ 'etc/oppd-mdm.conf' => 'etc/oppd.conf',
'etc/Auth_request.xml' => 'etc/oppd/Auth_request.xml',
'etc/Auth_response.xml' => 'etc/oppd/Auth_response.xml',
'etc/LS_deregister.xml' => 'etc/oppd/LS_deregister.xml',
@@ -40,11 +41,11 @@
'etc/LS_KeyRequest.xml' => 'etc/oppd/LS_KeyRequest.xml',
},
init_files => {
- 'etc/oppd.init.redhat' => 'init/init.d/oppd',
+ 'etc/oppd.init.debian' => 'init/init.d/oppd',
},
- sysconfig_files => {
- 'etc/oppd.sysconfig.redhat' => 'init/sysconfig/oppd',
- },
+ #sysconfig_files => {
+ # 'etc/oppd.sysconfig.redhat' => 'init/sysconfig/oppd',
+ #},
add_to_cleanup => [ 'perfSONAR-*' ],
#install_path => { etc => '/etc' },
create_makefile_pl => 'small',
Modified: trunk/build/perfSONAR/MANIFEST
===================================================================
--- trunk/build/perfSONAR/MANIFEST 2011-03-07 10:07:09 UTC (rev 685)
+++ trunk/build/perfSONAR/MANIFEST 2011-03-07 10:09:39 UTC (rev 686)
@@ -1,37 +1,19 @@
bin/oppd.pl
Build.PL
Changes
-debian/changelog
-debian/compat
-debian/conffiles
-debian/control
-debian/copyright
-debian/dirs
-debian/docs
-debian/files
-debian/perfsonar-oppd.oppd.default
-debian/perfsonar-oppd.oppd.init
-debian/postinst
-debian/postrm
-debian/preinst
-debian/prerm
-debian/rules
etc/Auth_request.xml
etc/Auth_response.xml
etc/LS_deregister.xml
etc/LS_keepalive.xml
etc/LS_KeyRequest.xml
etc/LS_register.xml
-etc/oppd-egee.conf
etc/oppd-mdm.conf
etc/oppd.conf.example
-etc/oppd.default.debian
-etc/oppd.init.debian
-etc/oppd.init.redhat
-etc/oppd.sysconfig.redhat
lib/perfSONAR.pm
lib/perfSONAR/Auth.pm
lib/perfSONAR/Client/LS.pm
+lib/perfSONAR/DataStruct.pm
+lib/perfSONAR/DataStruct/NMWG.pm
lib/perfSONAR/Echo.pm
lib/perfSONAR/MP.pm
lib/perfSONAR/SOAP.pm
@@ -45,11 +27,6 @@
Makefile.PL
MANIFEST This list of files
META.yml
-oppd-MDM.spec
-perfsonar-oppd-0.51.tar.gz
-perfsonar-oppd-egee.spec
-perl-perfSONAR.spec
-prepare-oppd-debian.pl
README
t/00-load.t
t/perfSONAR-001-SOAP-Message.t
Copied: trunk/build/perfSONAR/MANIFEST.SKIP (from rev 684,
branches/perfsonar-oppd-new-architect/build/perfSONAR/MANIFEST.SKIP)
===================================================================
--- trunk/build/perfSONAR/MANIFEST.SKIP (rev 0)
+++ trunk/build/perfSONAR/MANIFEST.SKIP 2011-03-07 10:09:39 UTC (rev 686)
@@ -0,0 +1,46 @@
+# Avoid version control files.
+\bRCS\b
+\bCVS\b
+,v$
+\B\.svn\b
+\B\.cvsignore$
+
+# Avoid Makemaker generated and utility files.
+\bMakefile$
+\bblib
+\bMakeMaker-\d
+\bpm_to_blib$
+\bblibdirs$
+^MANIFEST\.SKIP$
+
+# Avoid Module::Build generated and utility files.
+\bBuild$
+\bBuild.bat$
+\b_build
+
+# Avoid Devel::Cover generated files
+\bcover_db
+
+# Avoid temp and backup files.
+~$
+\.tmp$
+\.old$
+\.bak$
+\#$
+\.#
+\.rej$
+
+# Avoid OS-specific files/dirs
+# Mac OSX metadata
+\B\.DS_Store
+# Mac OSX SMB mount metadata files
+\B\._
+# Avoid archives of this distribution
+\bperfsonar-oppd-[\d\.\_]+
+
+#Build debian packages so avoid redhat specific files
+\bredhat
+\bspec
+
+#All ege because this is MDM
+\bege
Copied: trunk/build/perfSONAR/lib/perfSONAR/DataStruct (from rev 684,
branches/perfsonar-oppd-new-architect/build/perfSONAR/lib/perfSONAR/DataStruct)
Copied: trunk/build/perfSONAR/lib/perfSONAR/DataStruct.pm (from rev 684,
branches/perfsonar-oppd-new-architect/build/perfSONAR/lib/perfSONAR/DataStruct.pm)
===================================================================
--- trunk/build/perfSONAR/lib/perfSONAR/DataStruct.pm
(rev 0)
+++ trunk/build/perfSONAR/lib/perfSONAR/DataStruct.pm 2011-03-07 10:09:39
UTC (rev 686)
@@ -0,0 +1 @@
+link ../../../../lib/perfSONAR/DataStruct.pm
\ No newline at end of file
Modified: trunk/build/perfSONAR/t/00-load.t
===================================================================
--- trunk/build/perfSONAR/t/00-load.t 2011-03-07 10:07:09 UTC (rev 685)
+++ trunk/build/perfSONAR/t/00-load.t 2011-03-07 10:09:39 UTC (rev 686)
@@ -1,5 +1,6 @@
-#!perl -T
-
+#!perl
+use FindBin;
+use lib "$FindBin::RealBin/../lib";
use Test::More tests => 1;
BEGIN {
Property changes on: trunk/build/perfSONAR/t/00-load.t
___________________________________________________________________
Name: svn:mergeinfo
+
Property changes on: trunk/build/perfSONAR/t/perfSONAR-001-SOAP-Message.t
___________________________________________________________________
Name: svn:mergeinfo
+
Property changes on: trunk/build/perfSONAR/t/perfSONAR-002-Core.t
___________________________________________________________________
Name: svn:mergeinfo
+
Modified: trunk/build/perfSONAR-MP-BWCTL/MANIFEST
===================================================================
--- trunk/build/perfSONAR-MP-BWCTL/MANIFEST 2011-03-07 10:07:09 UTC (rev
685)
+++ trunk/build/perfSONAR-MP-BWCTL/MANIFEST 2011-03-07 10:09:39 UTC (rev
686)
@@ -1,10 +1,13 @@
Build.PL
Changes
-MANIFEST
+DEBIAN/changelog.Debian.gz
+DEBIAN/control
+DEBIAN/copyright
+etc/oppd-bwctl.conf.example
+lib/perfSONAR/MP/BWCTL.pm
+MANIFEST This list of files
+prepare-bwctl-mp-debian.pl
README
-lib/perfSONAR/MP/BWCTL.pm
-lib/perfSONAR/BWCTL.pm
-etc/oppd-bwctl.conf.example
t/00-load.t
t/perfSONAR-BWCTL-001.t
t/perfSONAR-MP-001.t
Copied: trunk/build/perfSONAR-MP-BWCTL/MANIFEST.SKIP (from rev 684,
branches/perfsonar-oppd-new-architect/build/perfSONAR-MP-BWCTL/MANIFEST.SKIP)
===================================================================
--- trunk/build/perfSONAR-MP-BWCTL/MANIFEST.SKIP
(rev 0)
+++ trunk/build/perfSONAR-MP-BWCTL/MANIFEST.SKIP 2011-03-07 10:09:39
UTC (rev 686)
@@ -0,0 +1,42 @@
+# Avoid version control files.
+\bRCS\b
+\bCVS\b
+,v$
+\B\.svn\b
+\B\.cvsignore$
+
+# Avoid Makemaker generated and utility files.
+\bMakefile$
+\bblib
+\bMakeMaker-\d
+\bpm_to_blib$
+\bblibdirs$
+^MANIFEST\.SKIP$
+
+# Avoid Module::Build generated and utility files.
+\bBuild$
+\bBuild.bat$
+\b_build
+
+# Avoid Devel::Cover generated files
+\bcover_db
+
+# Avoid temp and backup files.
+~$
+\.tmp$
+\.old$
+\.bak$
+\#$
+\.#
+\.rej$
+
+# Avoid OS-specific files/dirs
+# Mac OSX metadata
+\B\.DS_Store
+# Mac OSX SMB mount metadata files
+\B\._
+# Avoid archives of this distribution
+\bperfsonar-oppd-mp-bwctl-[\d\.\_]+
+
+#Avoid REDHAT spec files
+\.spec$
Deleted: trunk/build/perfSONAR-MP-BWCTL/lib/perfSONAR/BWCTL.pm
===================================================================
--- trunk/build/perfSONAR-MP-BWCTL/lib/perfSONAR/BWCTL.pm 2011-03-07
10:07:09 UTC (rev 685)
+++ trunk/build/perfSONAR-MP-BWCTL/lib/perfSONAR/BWCTL.pm 2011-03-07
10:09:39 UTC (rev 686)
@@ -1 +0,0 @@
-link ../../../../lib/perfSONAR/BWCTL.pm
\ No newline at end of file
Copied: trunk/build/perfSONAR-MP-OWAMP (from rev 684,
branches/perfsonar-oppd-new-architect/build/perfSONAR-MP-OWAMP)
Property changes on: trunk/build/perfSONAR-MP-OWAMP
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: trunk/doc/images (from rev 684,
branches/perfsonar-oppd-new-architect/doc/images)
Modified: trunk/etc/oppd-mdm/oppd.conf
===================================================================
--- trunk/etc/oppd-mdm/oppd.conf 2011-03-07 10:07:09 UTC (rev 685)
+++ trunk/etc/oppd-mdm/oppd.conf 2011-03-07 10:09:39 UTC (rev 686)
@@ -17,7 +17,7 @@
# Default: on
#
# Example:
-# detach off
+detach off
#
#detach on
@@ -42,7 +42,7 @@
# logfile "/var/log/oppd.log"
#
#logfile off
-logfile "/var/log/oppd.log"
+#logfile "/var/log/oppd.log"
#
@@ -62,7 +62,7 @@
# syslog on
#
#syslog off
-syslog off
+#syslog off
#
@@ -121,21 +121,19 @@
# The log levels available are the log levels defined by Log::Dispatch.
#
# Valid options: (This is a list of values that should be accepted.)
-# 0 = debug
-# 1 = info
-# 2 = notice
-# 3 = warning
-# 4 = err = error
-# 5 = crit = critical
-# 6 = alert
-# 7 = emerg = emergency
+# 0. trace
+# 1. debug
+# 2. info
+# 3. warning
+# 4. error
+# 5. fatal
#
-# Default: notice
+# Default: info
#
# Example:
# loglevel "info"
#
-#loglevel "notice"
+#loglevel "info"
#
@@ -150,7 +148,7 @@
# Default: /var/run/oppd.pid
#
# Example:
-# pidfile off
+#pidfile off
#
#pidfile "/var/run/oppd.pid"
@@ -450,20 +448,6 @@
#
#ssl_ca_path [FILL ME]
-#
-# ssl_trusted_webserver_cn - CN of certificate whose owner is allowed to use
this oppd
-#
-# If you want to restrict access to an oppd instance, you may specify the CN
-# of the certificate whose owner is allowed to execute any perfSONAR
requests.
-# All other users, including those with a valid certificate signed by one of
the
-# CAs listed in the $ssl_ca_path directory or the CA specified in
$ssl_ca_file.
-#
-# Default: none
-#
-# Example:
-# ssl_trusted_webserver_cn enoc enoc-troubleshooting.gridops.org
-#
-#ssl_trusted_webserver_cn [FILL ME]
###############################################################################
#
Modified: trunk/etc/oppd-mdm/oppd.d/bwctl.conf
===================================================================
--- trunk/etc/oppd-mdm/oppd.d/bwctl.conf 2011-03-07 10:07:09 UTC (rev
685)
+++ trunk/etc/oppd-mdm/oppd.d/bwctl.conf 2011-03-07 10:09:39 UTC (rev
686)
@@ -36,9 +36,13 @@
#
# Store functionality
#
- store off # Enable/disable store functionality
- store_url "http://www.mySQL-MA:8090"
- # URL of a MA service to sent the results of measurements to
+ #To activate store to sent the results of measurements to
+ # Enable/disable store functionality
+ store on
+ # URL of a MA service
+ #Example
+ #store_url <HOSTNAME>:<PORT>//geant2-java-sql-ma/
+ store_url
"http://ippm-setup8.rrze.uni-erlangen.de:8080/geant2-java-sql-ma/"
</module_param>
Copied: trunk/etc/oppd-mdm/oppd.d/hades.conf (from rev 684,
branches/perfsonar-oppd-new-architect/etc/oppd-mdm/oppd.d/hades.conf)
===================================================================
--- trunk/etc/oppd-mdm/oppd.d/hades.conf (rev
0)
+++ trunk/etc/oppd-mdm/oppd.d/hades.conf 2011-03-07 10:09:39 UTC (rev
686)
@@ -0,0 +1,41 @@
+#
+# Hades MA example configuration
+#
+
+<service MA/HADES/MYDOMAIN>
+
+ #
+ # Necessary parameters for module initialisation
+ #
+ module MA::Hades # Name of module to load
+ servicetype MA # Service type: MP or MA
+
+ #
+ # Name, description, and keyword will be reported to Lookup Server
+ #
+ name "Hades Measurement Archive"
+ description "Measurement Archive for Hades (OWD, OWDV, Packet Loss) data
\
+ from measurement points in my network (mydomain)"
+ keyword "project:mydomain"
+
+ #
+ # Further parameters
+ #
+ metric "one way delay"
+ metric "one way delay variation"
+ metric "packet loss"
+ # Measurement metric(s). More than one element definition possible.
+
+ #
+ # Module parameters
+ #
+ <module_param>
+
+ config "/opt/hades/etc/hades-win.conf"
+ # Hades domain for which data should be available via this service
+
+ # You can add further Hades configuration parameters here.
+ # TODO: pointer to useful documentation
+ </module_param>
+
+</service MA/HADES/MYDOMAIN>
Copied: trunk/etc/oppd-mdm/oppd.d/owamp.conf (from rev 684,
branches/perfsonar-oppd-new-architect/etc/oppd-mdm/oppd.d/owamp.conf)
===================================================================
--- trunk/etc/oppd-mdm/oppd.d/owamp.conf (rev
0)
+++ trunk/etc/oppd-mdm/oppd.d/owamp.conf 2011-03-07 10:09:39 UTC (rev
686)
@@ -0,0 +1,46 @@
+#
+# OWAMP MP configuration for MDM client machines
+#
+
+<service MP/OWAMP>
+
+ #
+ # Necessary parameters for module initialisation
+ #
+ module MP::OWAMP # Name of module to load
+ servicetype MP # Service type: MP or MA
+
+ #
+ # Name, description, and keyword will be reported to Lookup Server
+ #
+ name "OWAMP Measurement Point"
+ description "Measurement Point for doing on-demand OWAMP tests"
+ keyword "MDM"
+
+ #
+ # Further parameters
+ #
+ metric "bandwidth"
+ # Measurement metric(s). More than one element definition possible.
+ tool "owping" # Tool name
+ countlimit 1000 # Number of packages allowed. Not to
overflow the server
+
+ #
+ # Module parameters
+ #
+ <module_param>
+
+ command "owping"
+ # Command to execute e.g. "/usr/bin/owping" or "/bin/owping".
+ # Omitting path searches $PATH.
+
+ #
+ # Store functionality
+ #
+ store off # Enable/disable store functionality
+ store_url "http://www.mySQL-MA:8090"
+ # URL of a MA service to sent the results of measurements to
+
+ </module_param>
+
+</service MP/OWAMP>
Copied: trunk/etc/oppd-mdm/oppd.dev.conf (from rev 684,
branches/perfsonar-oppd-new-architect/etc/oppd-mdm/oppd.dev.conf)
===================================================================
--- trunk/etc/oppd-mdm/oppd.dev.conf (rev 0)
+++ trunk/etc/oppd-mdm/oppd.dev.conf 2011-03-07 10:09:39 UTC (rev 686)
@@ -0,0 +1,469 @@
+#
+# Configuration file for the Open Perl PerfSONAR Daemon (oppd) for MDM
+#
+# All configuration options are set to their default values.
+# See 'man oppd' and 'man oppd.conf' for more information.
+#
+
+
+#
+# detach - Detach from terminal.
+#
+# Detach from terminal, aka run in background (instead of foreground).
+# Log messages will not be sent to STDERR.
+#
+# Valid options: yes, on, 1, true, no, off, 0, false
+#
+# Default: on
+#
+# Example:
+detach off
+#
+#detach on
+
+
+#
+# logfile - Name of log file.
+#
+# Append messages to the specified file.
+#
+# Set it to no, off, 0, or false to disable log file usage.
+# Set it to yes, on, 1, or true to enable logging to default log file
+# "/var/log/oppd.log".
+#
+# You can use this option together with "syslog" (see below).
+# Messages will then be written to both, log file and system log.
+#
+# Valid options: yes, on, 1, true, no, off, 0, false, path to log file
+#
+# Default: off
+#
+# Example:
+# logfile "/var/log/oppd.log"
+#
+#logfile off
+logfile "/var/log/oppd.log"
+
+
+#
+# syslog - Whether messages should be written to system log.
+#
+# Set it to no, off, 0, or false to disable sending messages to system log.
+# Set it to yes, on, 1, or true to enable sending messages to system log.
+#
+# You can use this option together with "logfile" (see above).
+# Messages will then be written to both, log file and system log.
+#
+# Valid options: yes, on, 1, true, no, off, 0, false
+#
+# Default: off
+#
+# Example:
+# syslog on
+#
+#syslog off
+syslog on
+
+
+#
+# syslog-host - The (optional) host to which system log messages are
forwarded.
+#
+# If this option is set to a dns name or ip address, all system log messages
+# are forwarded to the specified remote host.
+# If set to no, off, 0, false, or "" logging is done locally.
+#
+# Valid options: no, off, 0, false, name or ip of syslog host
+#
+# Default: off
+#
+# Example:
+# syslog-host "syslog.nowhere.com"
+#
+#syslog-host off
+
+
+#
+# syslog-ident - Identification string for system log messages.
+#
+# This string will be prepended to all messages in the system log.
+#
+# Default: oppd
+#
+# Example:
+# syslog-ident "hades-tracert"
+#
+#syslog-ident "oppd"
+
+
+#
+# syslog-facility - Type of program for system logging.
+#
+# This string will be used as the system log facility for messages sent to
+# the system log.
+# See your syslog documentation for the facilities available on your system.
+#
+# Valid options: (Typical facilities.)
+# auth, authpriv, cron, daemon, kern, local0 through local7, mail, news,
+# syslog, user, uucp
+#
+# Default: daemon
+#
+# Example:
+# syslog-facility "local0"
+#
+#syslog-facility "daemon"
+
+
+#
+# loglevel - The log level used for logging to syslog and to the log files.
+#
+# This option is used for setting the verbosity of the running daemon.
+# The log levels available are the log levels defined by Log::Dispatch.
+#
+# Valid options: (This is a list of values that should be accepted.)
+# 0. trace
+# 1. debug
+# 2. info
+# 3. warning
+# 4. error
+# 5. fatal
+#
+# Default: notice
+#
+# Example:
+# loglevel "info"
+#
+loglevel "info"
+#loglevel "debug"
+
+
+#
+# pidfile - Name of pid file.
+#
+# Set it to no, off, 0, or false to disable pid file usage.
+# Set it to yes, on, 1, or true to write pid file to default position
+# "/var/run/oppd.pid".
+#
+# Valid options: yes, on, 1, true, no, off, 0, false, path to pid file
+#
+# Default: /var/run/oppd.pid
+#
+# Example:
+pidfile off
+#
+#pidfile "/var/run/oppd.pid"
+
+
+#
+# port - Port used to listen on incoming connections
+#
+# Port used to listen on incoming connections.
+#
+# Valid options: integer number
+#
+# Default: 8090
+#
+# Example:
+# port 12345
+#
+#port 8090
+
+
+#
+# max_proc - Maximum number of parallel running request processes.
+#
+# Set the maximum number of processes to be spawned for handling incoming
+# requests.
+#
+# Valid options: integer number
+#
+# Default: 5
+#
+# Example:
+# max_proc 20
+#
+#max_proc 5
+
+
+###############################################################################
+#
+# Options for Lookup Service communication:
+#
+###############################################################################
+
+#
+# ls_register - Lookup Service registration.
+#
+# Enable or disable Lookup Service registration.
+#
+# Valid options: yes, on, 1, true, no, off, 0, false
+#
+# Default: off
+#
+# Example:
+# ls_register on
+#
+#ls_register off
+
+
+#
+# keepalive - Keep alive interval.
+#
+# The keep alive interval for sending registration information to Lookup
+# Service in seconds.
+#
+# Valid options: integer number
+#
+# Default: 3600 (1 hour)
+#
+# Example:
+# keepalive 7200
+#
+#keepalive 3600
+
+
+#
+# ls_url - Lookup Service address.
+#
+# For every Lookup Service you want to send the registration information to
+# you should put one ls_url line in the configuration file. All you need is
to
+# give the address of the service as URL.
+#
+# Valid options: URL
+#
+# Default: none
+#
+# Example:
+# ls_url "http://myls.mydomain.org:8080/ervices/LookupService"
+# ls_url "http://188.1.36.53:8080/axis/services/LookupService"
+# ls_url
"http://loco3.man.poznan.pl:8080/LookupService/services/LookupService"
+# ls_url "http://selena.acad.bg:8070/axis/services/LookupService"
+# ls_url
"http://ndb0-aami.internet2.edu:9095/perfSONAR_PS/services/hLS"
+# ls_url "http://ndb1.internet2.edu:9995/perfSONAR_PS/services/hLS"
+# ls_url "http://dc211.internet2.edu:9995/perfSONAR_PS/services/hLS"
+# ls_url
"http://loco4.man.poznan.pl:8180/geant2-java-xml-ls/services/LookupService"
+#
+#ls_url [FILL ME]
+
+
+#
+# hostname - Host name sent to the Lookup Service.
+#
+# Host name sent to the Lookup Service.
+#
+# Valid options: String
+#
+# Default: none
+#
+# Example:
+# hostname "myhost.mydomain.org"
+#
+#hostname [FILL ME]
+
+
+#
+# organization - Organization sent to the Lookup Service.
+#
+# Organization sent to the Lookup Service.
+#
+# Valid options: String
+#
+# Default: none
+#
+# Example:
+# organization "My Company"
+#
+#organization [FILL ME]
+
+
+#
+# contact - Contact e-mail address sent to the Lookup Service.
+#
+# Contact e-mail address sent to the Lookup Service.
+#
+# Valid options: e-mail address
+#
+# Default: none
+#
+# Example:
+# contact
""
+#
+#contact [FILL ME]
+
+
+###############################################################################
+#
+# Options for Authentication communication:
+#
+###############################################################################
+
+#
+# auth - Use Authentication Service.
+#
+# Enable or disable authentication via Authentication Service.
+#
+# Valid options: yes, on, 1, true, no, off, 0, false
+#
+# Default: off
+#
+# Example:
+# auth on
+#
+#auth off
+
+
+#
+# as_url - Location of Authentication Service.
+#
+# Location of the Authentication Service as URL.
+#
+# Valid options: URL
+#
+# Default: none
+#
+# Example:
+# as_url "http://myas.mydomain.org:8080/services/AuthService"
+# as_url "http://myas.rediris.es:8080/services/AuthService"
+# as_url
"http://homer.rediris.es:8080/perfSONAR-AS/services/AuthService"
+#
+#as_url [FILL ME]
+as_url "http://myas.rediris.es:8080/services/AuthService"
+
+
+###############################################################################
+#
+# SSL configuration options
+#
+###############################################################################
+
+#
+# ssl - SSL (Secure Socket Layer) support.
+#
+# Enable or disable SSL (Secure Socket Layer) support, which means that
+# the daemon will expect HTTPS requests instead of normal HTTP request.
+# IMPORTANT: Normal HTTP requests will not work anymore if SSL is enabled!
+# IMPORTANT: Most of the following options are necessary for SSL. You should
+# take care of all of them and make sure that you really know what
+# you are doing! If oppd is missing a necessary option, you will
get
+# an error message and the daemon will not start!
+#
+# Valid options: yes, on, 1, true, no, off, 0, false
+#
+# Default: off
+#
+# Example:
+# ssl on
+#
+#ssl off
+
+
+#
+# ssl_cert_file - SSL certificate file.
+#
+# Use this option to specify the location of your certificate.
+# This option is required and there is NO default value!
+#
+# Valid options: File path (file format should be PEM)
+#
+# Default: none
+#
+# Example:
+# ssl_cert_file /var/www/certs/server-cert.pem
+#
+#ssl_cert_file [FILL ME]
+
+
+#
+# ssl_key_file - SSL server key file.
+#
+# Use this option to specify the location of your server key file.
+# This option is required and there is NO default value!
+#
+# Valid options: File path (file format should be PEM)
+#
+# Default: none
+#
+# Example:
+# ssl_key_file /var/www/certs/server-key.pem
+#
+#ssl_key_file [FILL ME]
+
+
+#
+# ssl_verify_client - Verify SSL client certificate.
+#
+# Enable or Disable the verification of the SSL client certificate. This is
+# normally used as a method of client authentication.
+# IMPORTANT: This option is enabled by default, because you normally don't
want
+# to allow access to perfSONAR services by untrusted users. You
+# should only disable it if you really know what you are doing!
+#
+# Valid options: yes, on, 1, true, no, off, 0, false
+#
+# Default: on
+#
+# Example:
+# ssl_verify_client off
+#
+#ssl_verify_client on
+
+
+#
+# ssl_ca_file - SSL certificate(s) of the reputable certificate authorities.
+#
+# If you want to verify that the peer certificate has been signed by a
+# reputable certificate authority (see ssl_verify_client above), then you
+# must use this option (and/or ssl_ca_path below) to locate the file
+# containing the certificate(s) of the reputable certificate authorities.
+# There is NO default value!
+#
+# Valid options: File path (file format should be PEM)
+#
+# Default: none
+#
+# Example:
+# ssl_ca_file /var/www/certs/my-ca.pem
+#
+#ssl_ca_file [FILL ME]
+
+
+#
+# ssl_ca_path - Directory containing SSL certificate(s)
+#
+# If you want to verify that the peer certificate has been signed by a
+# reputable certificate authority (see ssl_verify_client above), then you
+# must use this option (and/or ssl_ca_file above) to locate the
certificate(s)
+# of the reputable certificate authorities.
+# If you are unusually friendly with the OpenSSL documentation, you might
have
+# set yourself up a directory containing several trusted certificates as
+# separate files as well as an index of the certificates.
+# Use this option to specify the location of this directory.
+# There is NO default value!
+#
+# Valid options: Directory path
+#
+# Default: none
+#
+# Example:
+# ssl_ca_path /var/www/certs/ca/
+#
+#ssl_ca_path [FILL ME]
+
+
+###############################################################################
+#
+# Configuring services
+#
+###############################################################################
+#
+# You have to define (at least) one or more <service> sections for every
+# perfSONAR services you want to provide. Instead of defining them all here
+# in this file, it is most likely more comfortable to use the following
+# statement to include all files in the subdirectory oppd.d ending with
suffix
+# .conf. In this directory you should put every service into it's own file.
+# But you are, of course, free to do everything your own way!
+#
+###############################################################################
+
+include oppd.d/*.conf
+
Modified: trunk/lib/NMWG/schema/2.0/owamp.rnc
===================================================================
--- trunk/lib/NMWG/schema/2.0/owamp.rnc 2011-03-07 10:07:09 UTC (rev 685)
+++ trunk/lib/NMWG/schema/2.0/owamp.rnc 2011-03-07 10:09:39 UTC (rev 686)
@@ -6,7 +6,7 @@
namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
-namespace owamp = "http://ggf.org/ns/nmwg/tools/bwctl/2.0/"
+namespace owamp = "http://ggf.org/ns/nmwg/tools/owamp/2.0/"
namespace nmwgtopo3 = "http://ggf.org/ns/nmwg/topology/base/3.0/"
namespace nmwgt = "http://ggf.org/ns/nmwg/topology/2.0/"
Deleted: trunk/lib/perfSONAR/BWCTL.pm
===================================================================
--- trunk/lib/perfSONAR/BWCTL.pm 2011-03-07 10:07:09 UTC (rev 685)
+++ trunk/lib/perfSONAR/BWCTL.pm 2011-03-07 10:09:39 UTC (rev 686)
@@ -1,220 +0,0 @@
-package perfSONAR::BWCTL;
-#
-# Copyright 2010 Verein zur Foerderung eines Deutschen Forschungsnetzes e.
V.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-
-use strict;
-use warnings;
-
-use IPC::Run qw( run timeout start finish pump);
-use IO::Pty;
-
-use perfSONAR qw( print_log);
-
-#DEBUG
-use Data::Dumper;
-#DEBUG
-
-#TODO Error handling
-#composing of commandline and parsing of results of bwctl
-
-sub commandline {
- my %parameters = @_;
- my @commandline;
- unless ($parameters{"src"} || $parameters{"dst"}) {
- return "ERROR", "Neither source nor destination ip address specified.";
- }
- if (!$parameters{"src"} || !$parameters{"dst"}){ #find out end point
- #my @result = `/sbin/ifconfig eth0`;
- #grep(/^\s+\w+\s+\w+\:(\d+\.\d+\.\d+\.\d+)/, @result);
- my $ip_result = `/sbin/ip addr show dev eth0 scope global primary`;
- $ip_result =~ /\n\s+inet\s+(\d+\.\d+\.\d+\.\d+)/;
- my $local_ip = $1;
- unless ($local_ip) {
- return "ERROR", "Cannot determine local ip address.";
- }
- $parameters{"src"} = $local_ip unless $parameters{"src"};
- $parameters{"dst"} = $local_ip unless $parameters{"dst"};
- if ($parameters{"src"} eq $parameters{"dst"}) {
- return "ERROR", "Measurement requested " .
- "using same local IP address as source and destination.";
- }
- }
- if ($parameters{"src"} eq $parameters{"dst"}) {
- return "ERROR", "Source ip address equal to destination ip address.";
- }
-
- #check parameters to be correct input:
- foreach my $param (keys %parameters){
- next if ($param eq "param_ns_prefix" ||
- $param eq "metaID" ||
- $param eq "subject_ns_prefix" ||
- $param eq "parameter_ID" ||
- $param eq "param_ns_uri" ||
- $param eq "subject_ns_uri");
-
- next if ($param eq "src" || $param eq "dst");
- if ($param eq "login" || $param eq "password"){
- unless ($parameters{$param} =~ /^\w+$/){
- return "ERROR", "Invalid login/password string specified.";
- }
- next;
- }
- if ($param eq "TOS"){
- unless ($parameters{$param} =~ /^\d+|0x\d+$/){
- return "ERROR", "Invalid TOS string specified.";
- }
- next;
- }
- if ($param eq "protocol"){
- unless ($parameters{$param} =~ /^udp$/i || $parameters{$param} =~
/^tcp$/i){
- return "ERROR", "Unknown protocol: $parameters{protocol}";
- }
- next;
- }
- unless ($parameters{$param} =~ /^\d+$/){
- return "ERROR", "Invalid value specified for $param.";
- }
-
- }
-
- push @commandline , "-s" , $parameters{"src"};
- push @commandline , "AE", "AESKEY" if($parameters{"login"});
- push @commandline , $parameters{login} if($parameters{"login"});
- push @commandline , "-c", $parameters{dst};
- push @commandline , "AE", "AESKEY" if($parameters{"login"});
- push @commandline , $parameters{login} if($parameters{"login"});
-
-
- push @commandline , "-i", $parameters{interval}
if($parameters{"interval"});
- push @commandline , "-t", $parameters{duration}
if($parameters{"duration"});
- push @commandline , "-w", $parameters{windowSize}
if($parameters{"windowSize"});
-
-=cut obsolete
- if (! $parameters{"protocol"}) {
- # We assume default for undef, "" and 0
- # => Do nothing
- } elsif ($parameters{"protocol"} =~ /^udp$/i) {
- push @commandline , "-u";
- } elsif ($parameters{"protocol"} =~ /^tcp$/i) {
- # tcp is default
- } else {
- return "ERROR", "Unknown protocol: $parameters{protocol}";
- }
-=cut
-
- push @commandline , "-u" if ($parameters{"protocol"} &&
$parameters{"protocol"} =~ /^udp$/i);
- push @commandline , "-l", $parameters{bufferSize}
if($parameters{"bufferSize"});
- push @commandline , "-b", $parameters{bandwidth}
if($parameters{"bandwidth"});
- push @commandline , "-S", $parameters{TOS} if($parameters{"TOS"});
- return @commandline;
-}
-
-sub do_bwctl {
- my $tool = shift;
- my $pass = shift;
- my @bwctl = @_;
-
- print_log ("info", "do_bwctl called with $tool\n");
- my ($in, $out, $err);
- unshift @bwctl, $tool;
-
- if(!$pass){
- my $command = join (" ", @bwctl);
- my $out=`$command 2>&1`;
- return $out;
- }
- my $h = start
(\@bwctl,
'<pty<', \$in, '>pty>', \$out, '2>', \$err);
- while (1){
- pump $h;
- if ($err =~ /passphrase/){
- $in = "$pass\n" ;
- $err = "";
- }
- elsif ($err ne "\n"){
- last;
- }
- }
-
- my $out_tmp = $out;
- my $err_tmp = $err;
-
- finish $h;
- if (!$out){
- return "$err_tmp" . "$err";
- }
- return "$out_tmp" . "$out";
-
-}
-sub parse_result {
- my $time = shift;
- my $result = shift;
- my @result = split(/\n/, $result);
- my @datalines;
-
- foreach my $resultline (@result){
- next unless ($resultline =~
-
/(\d+\.\d+\s*\-\s*\d+\.\d+)\s+sec\s+(\d+\.?\d*)\s+(\w+)\s+(\d+\.?\d*)\s+(\w+\/\w+)/);
-
- my %data_hash;
- $data_hash{"timeType"} = "unix";
- $data_hash{"timeValue"} = $time;
- $data_hash{"interval"} = $1;
- $data_hash{"numBytes"} = $2;
- $data_hash{"numBytesUnits"} = $3;
- $data_hash{"value"} = $4;
- $data_hash{"valueUnits"} = $5;
- push @datalines, \%data_hash;
-
- }
- if($#datalines < 0){
- #no data -> something wrong, write result as error description:
- $datalines[0]="BWCTL Error:";
- foreach my $resultline (@result){
- push @datalines, $resultline;
- }
- }
-
- return @datalines;
-}
-
-
-sub parse_header {
- my $result = shift;
- my @result = split(/\n/, $result);
- my %header;
-
- foreach my $resultline (@result){
- next if ($resultline =~
-
/(\d+\.\d+\s*\-\s*\d+\.\d+)\s+sec\s+(\d+\.?\d*)\s+(\w+)\s+(\d+\.?\d*)\s+(\w+\/\w+)/);
- #print "header: $resultline\n";
- if ($resultline =~ /TCP/){
- $header{"proto"} = "TCP";
- }
- if ($resultline =~ /UDP/){
- $header{"proto"} = "UDP";
- }
- if ($resultline =~ /TCP window size:\s*(\d+)\s*(\w+)/){
- $header{"windowsize"} = $1; #$2 is always "Byte"
- }
- if ($resultline =~ /-t\s*(\d+)/){
- $header{"duration"} = $1;
- }
- }
- return %header;
-}
-
-1;
Copied: trunk/lib/perfSONAR/DataStruct (from rev 684,
branches/perfsonar-oppd-new-architect/lib/perfSONAR/DataStruct)
Copied: trunk/lib/perfSONAR/DataStruct.pm (from rev 684,
branches/perfsonar-oppd-new-architect/lib/perfSONAR/DataStruct.pm)
===================================================================
--- trunk/lib/perfSONAR/DataStruct.pm (rev 0)
+++ trunk/lib/perfSONAR/DataStruct.pm 2011-03-07 10:09:39 UTC (rev 686)
@@ -0,0 +1,186 @@
+package perfSONAR::DataStruct;
+#
+# Copyright 2010 Verein zur Foerderung eines Deutschen Forschungsnetzes e.
V.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+use strict;
+use warnings;
+
+
+#DEBUG
+use Data::Dumper;
+#DEBUG
+
+use version;
+our $VERSION = 0.52;
+
+=head1 NAME
+
+perfSONAR::DataStruct - Main class for all data types NMWG..etc used in OPPD.
+
+=head1 DESCRIPTION
+
+All servuces need this data struct to handle request and response. So the
services dont depend on a
+special datatype or protocol like NMWG. So it is possible to bind oppd on
different protocolls. If you want
+to use NMWG, use the method nmwg2DS to convert the NMWG type in this main
data struct.
+
+The structure is defined as follow:
+
+$self ERROROCCUR If error occur set to 1. Default 0
+ ERRORMSG If error occur here is the error msg
+ WARN Here are the warninhs stored
+ |-OCCUR If warninhs occur this is set to 1 default 0
+ |- MSG If warninhs occur all messages are here
+ SERVICES The availible services as Reference
+ REQUESTMSG A reference to the requested message type with the
handlers
+ DOECHO If echo is requested set to 1. Default 0
+ DOSELFTEST If selftest is requested set to 1. Default 0
+ RETURNMSG
+ SERVICE The called service with his parameters and resul tdata.
+ |-NAME The name of the service
+ |-DATA All informations for the service
+ |-$id
+ |-STORE Store in a SQL MA
+ |-DOIT Undef for not storing otherwise 1
+ |-PARAMS The parameters for store message The id
defines a service call (measurement) with the parameters and result
+ |- PARAMS The parameters for a service. This is a hash
with options and values
+ |-MRESULT The result of a measurement command as a array
of data hashes.
+ All requests return a array. If a call was not
succesfull,
+ ERROROCCUR set to 1 then this array is used as a
error container
+ where @[0] contains the error occurnes for
example ERROR BWCTL
+ @[lastitem] error types
+ and the lines betwenn this contains the
error messages
+
+
+
+To use the service part in a service define self or by the request data the
id. In NMWG is this given by data id element in the request message.
+The PARAMS field should be a hash with options and values. So a service can
use it. The service puts the reuslt data as a array of hashes in the
RESULTDATA
+field. For details see the specific service.
+
+=head1 Methods
+
+=cut
+
+#Here are everything to use
+use Log::Log4perl qw(get_logger);
+use Carp;
+
+
+=head2 new({})
+
+Creates a new object, accepts at the moment a perfSONAR::SOAP::Message.
+
+=cut
+
+sub new {
+ my ( $class, $uri, $msg ) = @_;
+ my $self = {};
+ $self->{LOGGER} = get_logger(__PACKAGE__);
+ $self->{ERROROCCUR} = 0; #If error occur set to 1
+ $self->{STORE}->{DOIT} = undef;
+ $self->{ERRMSG} = ""; #If error occur look here for error message at
the moment only string message is supported
+ $self->{SERVICE} = undef; #The request message
+ $self->{SERVICES} = ();
+ $self->{RETURNMSG} = undef;
+ $self->{PARAMS} = {}; #The measurement parameters defined by a ID
+ $self->{DOECHO} = 0; #Do a status report for the selected service
+ $self->{WARN}->{OCCUR} = 0;
+ $self->{WARN}->{MSG} = "";
+
+ #Check if uri is given
+ if (!$uri){
+ croak "No service specified!";
+ }
+ else{
+ $self->{URI} = $uri;
+ }
+
+ $self->{"known_parameters"} = {
+ src => 1,
+ dst => 1,
+ interval => 1,
+ duration => 1,
+ windowSize => 1,
+ protocol => 1,
+ bufferSize => 1,
+ bandwidth => 1,
+ login => 1,
+ password => 1,
+ TOS => 1,
+
+ #more owamp
+ count => 1,
+ timeout => 1,
+ size => 1,
+ units => 1,
+ send_schedule => 1,
+ percentile => 1,
+ one_way => 1,
+ DSCP => 1,
+ PHB => 1,
+ enddelay => 1,
+ startdelay => 1,
+ bucket_width => 1,
+ intermediates => 1,
+ output => 1,
+ port => 1,
+ portrange => 1,
+ individual => 1, #TODO check this parameter
+
+ #store parameters
+ uri => 1,
+ dataref => 1,,
+
+ #Hades MA
+ startTime => 1,
+ endTime=> 1,
+ packetsize => 1,
+ precedence => 1,
+ groupsize => 1,
+ interval => 1,
+ mid => 1,
+ };
+
+ $self->{"unsupported_parameters"} = {
+ advisoryWindowsize => 1,
+ scheduleInterval => 1,
+ numberOfTests => 1,
+ latest => 1,
+ alpha => 1,
+
+ #owamp specific
+ save_summary => 1,
+ directory => 1,
+ no_summary => 1,
+ };
+
+
+ bless $self, $class;
+
+ #Look if message is nmwg message
+ if ( $msg && ref( $msg ) eq 'NMWG::Message') {
+ $self->{LOGGER}->info("Get a NMWG message request");
+ use perfSONAR::DataStruct::NMWG;
+ my $nmwgds = perfSONAR::DataStruct::NMWG->new();
+ $nmwgds->nmwg2ds($msg,$self);
+ $self->{$self->{DSTYPE}} = $nmwgds;
+ }
+
+ return $self;
+}
+
+
+
+1;
Modified: trunk/lib/perfSONAR/Echo.pm
===================================================================
--- trunk/lib/perfSONAR/Echo.pm 2011-03-07 10:07:09 UTC (rev 685)
+++ trunk/lib/perfSONAR/Echo.pm 2011-03-07 10:09:39 UTC (rev 686)
@@ -15,64 +15,60 @@
# limitations under the License.
#
#
+=head1 NAME
+perfSONAR::Echo
+
+=head1 DESCRIPTION
+
+This is the main class for Echo requests. All services use this class as a
base
+class. This class hasnt a constructor. All services use the
handle_echo_request
+method.
+=cut
+
#DEBUG
use Data::Dumper;
#/DEBUG
use strict;
use warnings;
+use Log::Log4perl qw(get_logger);
-use perfSONAR qw(print_log %services);
-
-our $log = undef;
-
-our %services = ();
-
my $echo_et = "http://schemas.perfsonar.net/tools/admin/echo/2.0";
my $selftest_et = "http://schemas.perfsonar.net/tools/admin/selftest/1.0";
my $response_et = "http://schemas.perfsonar.net/tools/admin/selftest/";
-my $returnstring = "I'm still alive and happy to talk to you!";
+=head2 handle_echo_request()
+ This method is used from the services to return a status response for the
service
+=cut
sub handle_echo_request{
-#sub start_action {
- my $msg = shift;
- my $service = shift;
+
+ my ($self, $ds) = @_;
+ my $logger = get_logger("perfSONAR::Echo" );
+ $logger->info("Start Echo");
+ my $params = $$ds->{SERVICE}->{DATA};
+ my @datalines;
+
+ foreach my $id (keys %{$params}){
+
+ #echo request
+ my %data_hash;
+ $logger->info("Reply to EchoRequest ping");
+ $data_hash{'echocode'} = "success.echo";
+ $data_hash{'echomsg'} = "Service: $$ds->{SERVICE}->{NAME} is ready
for call";
+ push @datalines, \%data_hash;
+ $$ds->{SERVICE}->{DATA}->{$id}->{MRESULT} =
\@datalines
+ }
+}
- print Dumper($msg->{"metadataIDs"});
- foreach my $key (keys %{$msg->{"metadataIDs"}}){
- my $et = $msg->{"metadataIDs"}{$key}{"eventType"};
- if ($et =~ /$echo_et/){
- #echo request
- print_log("info", "Reply to EchoRequest ping");
- $msg->return_result_code("success.echo", "$returnstring", "$key");
- }
- elsif ($et =~ /$selftest_et/){
-
- #my %refs = $services{$service}->{handler}->selftest();
- my $refs = $services{$service}->{handler}->selftest();
- if (!$refs){
- print_log("notice", "error.echo: Action not supported: $et.");
- $msg->return_result_code("error.echo", "Action not supported: $et.",
$key);
- return $msg;
- }
- foreach my $name (keys %{$refs}){
- my $ref = $refs->{$name};
- my ($message, $status) = $services{$service}->{handler}->$ref;
- print_log("notice", "$message $service");
- $msg->return_result_code("$response_et$service/$name/$status/1.0",
"$message", "$key", "$name");
- }
-
- }
- else { #some different eventtype, return error
- $msg->return_result_code("error.echo", "Unknown eventType: $et", $key);
- return $msg;
- }
- #return success message
- return $msg;
- }
-
+=head2 doselftests({})
+This method is used to get status for the called service tool.
+Start this method in the service so settings from this service is used.
+=cut
+sub doselftests{
+
}
+
1;
Copied: trunk/lib/perfSONAR/MA.old.pm (from rev 684,
branches/perfsonar-oppd-new-architect/lib/perfSONAR/MA.old.pm)
===================================================================
--- trunk/lib/perfSONAR/MA.old.pm (rev 0)
+++ trunk/lib/perfSONAR/MA.old.pm 2011-03-07 10:09:39 UTC (rev 686)
@@ -0,0 +1,398 @@
+package perfSONAR::MA;
+#
+# Copyright 2010 Verein zur Foerderung eines Deutschen Forschungsnetzes e.
V.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+
+#TODO
+# - Build IPPM (and RIPE) class tree as in Hades::Data
+
+use vars qw(@ISA);
+#@ISA
= qw(SOAP::Server::Parameters);
+
+#DEBUG
+use Data::Dumper;
+#/DEBUG
+
+use strict;
+use warnings;
+
+use Carp;
+
+use Hades;
+use Hades::Config;
+use Hades::Data::Finder_SQL;
+use Hades::Data::Finder;
+
+use perfSONAR qw(print_log);
+
+#this module is responsible for the select eventtype and relays action
+#to appropriate data module
+
+sub new {
+ my $this = shift;
+ my $class = ref($this) || $this;
+ my %param = (@_);
+
+ # Now create config and initialise everything
+ $Hades::configfile = undef;
+ $Hades::config = undef;
+ my $config = Hades::Config->new(
+ configfile => $param{config},
+ use_argv => 0,
+ );
+ # We don't need it anymore and it "may" cause trouble:
+ delete $param{config};
+ # Init config
+ $config->init() or die;
+ # Copy module config to config. TODO Really all?
+ @{$config->{config}}{keys %param} = values %param;
+
+ # Generate object
+ my $self = {
+ config => $config,
+ };
+ $self->{"supportedEventtypes"} = [
+ "http://ggf.org/ns/nmwg/ops/select/2.0/",
+ ];
+
+ bless $self, $class;
+ return $self;
+}
+
+sub selftest {
+ my $self = shift;
+ return undef;
+}
+
+sub open_request {
+ my $self = shift;
+ $self->{finder} = Hades::Data::Finder_SQL->new(
+ config => $self->{config},
+ );
+
+ return 1;
+}
+
+
+sub close_request {
+ my $self = shift;
+ $self->{finder} = undef;
+}
+
+sub set_eventType {
+
+ my $self = shift;
+ my $msg = shift;
+ my $dataid = shift;
+
+
+ foreach my $key (keys %{$msg->{"dataIDs"}{$dataid}}){
+ next if ($key eq "node" || $key eq "metaref" || $key =~ /select/
+ || $key eq "ns_uri" || $key eq "ns_prefix" );
+ $self->{"eventType"} = $key;
+ }
+
+}
+
+sub start_action {
+
+ my $self = shift;
+ my $msg = shift;
+ my $dataid = shift;
+ my $action = shift;
+ my $service_id = shift;
+
+
+ my $messagetype = $msg->get_message_type();
+
+ my $metaref = $msg->{"dataIDs"}{$dataid}{"metaref"};
+ my $select;
+
+ $self->set_eventType ($msg, $dataid);
+ my $eventType = $self->{"eventType"};
+
+ foreach my $key (keys %{$msg->{"dataIDs"}{$dataid}}){
+ if ($key =~ /select/) {
+ $select = $key;
+ }
+ }
+
+ if (!$select){
+ print_log("error", "No select block found for data id: $dataid",
$service_id);
+ return $msg->return_result_code("error.ma.parameters",
+ "No select block found for data id: $dataid", $metaref);
+ }
+
+ if (!($msg->{"dataIDs"}{$dataid}{$select}{"startTime"}) &&
+ !($msg->{"dataIDs"}{$dataid}{$select}{"endTime"})){
+ print_log("error", "No timespan specified!", $service_id);
+ return $msg->return_result_code("error.ma.parameters", "No timespan
specified", $metaref);
+ }
+
+ my $startTime = $msg->{"dataIDs"}{$dataid}{$select}{"startTime"};
+ my $endTime = $msg->{"dataIDs"}{$dataid}{$select}{"endTime"};
+
+ my $currentTime = time;
+ if ($endTime > $currentTime){
+ $endTime = $currentTime;
+ $msg->return_result_code("error.ma.parameters", "endTime value lies
ahead!", $metaref);
+ }
+
+ #if no time is specified, take today (for convenience)
+ #if (!(defined $startTime) && !(defined $endTime)) {
+ # $endTime = time;
+ # my ($sec,$min,$hour,$md,$mo,$ye,$wday,$yday,$isdst) =
+ # localtime($endTime);
+ # $startTime = Mktime(($ye+1900), $mo+1, $md, 0, 0, 0);
+ # $msg->{"dataIDs"}{$dataid}{$select}{"startTime"} = $startTime;
+ # $msg->{"dataIDs"}{$dataid}{$select}{"endTime"} = $endTime;
+ #}
+
+ my $filter = $msg->{"dataIDs"}{$dataid}{$eventType};
+ if ($$filter{"interval"}){
+ $$filter{"interval"} *= 1000000;
+ }
+
+ my $src = $msg->{"dataIDs"}{$dataid}{$eventType}{"src"}{"value"};
+ my $dst = $msg->{"dataIDs"}{$dataid}{$eventType}{"dst"}{"value"};
+ my $mid = $msg->{"dataIDs"}{$dataid}{$eventType}{"mid"};
+
+
+ $self->{finder}->reset;
+ $self->{finder}->set_time_epoch($startTime,$endTime)
+ or print_log("error", "Invalid date format", $service_id),
+ return $msg->return_result_code("error.ma.parameters", "Invalid
date format", $metaref);
+ $self->{finder}->set_route($src,$dst); # set_route understands "undef"!!!
+ if (defined $action){
+ $self->{finder}->set_type($action);
+ } else {
+ $self->{finder}->set_type($eventType); # ignores "undef"
+ }
+
+
+ $self->{finder}->set_mid($mid); # ignores "undef"
+ $self->{finder}->set_filter($filter); # filter with metadata
+
+ my @results = $self->{finder}->find;
+
+ unless (@results) {
+ print_log("info","No data found", $service_id);
+ return $msg->return_result_code("error.ma.data", "No data found",
$metaref);
+ }
+
+ my @result_params;
+ if ($#results > 0){ #More than one measurment result found matching the
request pattern
+ #get_meta_info($msg);
+ my $output = "";
+ my $count = 0;
+ foreach my $result (@results){
+ my $info = $result->{meta};
+ my %par;
+ foreach my $key (keys %{$info}){
+ next if ($key eq "sender_port" || $key eq "receiver_port");
+ if ($key eq "interval"){
+ $par{"interval"} = $info->{"interval"} / 1000000;
+ } else {
+ $par{$key} = $info->{$key};
+ }
+ }
+ $par{"sender"} = $result->{"sender"};
+ $par{"receiver"} = $result->{"receiver"};
+ $par{"mid"} = $result->{"mid"};
+ $par{"metadataIdRef"} = "result$count";
+ $count++;
+
+ push @result_params, \%par;
+
+
+ $output = $output . "$result->{sender} to $result->{receiver} "
+ . $result->type2string() . ", mid: $result->{mid}\n";
+ }
+ my $message = "More than one measurement result found";
+ print_log("info",$message, $service_id);
+ print_log("debug","Measurements:\n$output", $service_id);
+ $msg->set_parameter_list(@result_params);
+ print_log("debug", $message, $service_id);
+
+ return $msg->return_result_code("warning.ma.parameters", "More than one
measurement result found!", $metaref);
+ }
+
+ my $warnings = $self->{finder}->{warnings}->get_string();
+ if ($warnings) {
+ #TODO is that right/useful???
+ print_log("info","Warnings from data modules:\n$warnings", $service_id);
+ return $msg->return_result_code("error.ma.data", "Warnings from data
modules: $warnings", $metaref);
+ }
+
+
+ my $data_obj = $results[0];
+
+ my $info = $data_obj->{meta};
+ my %par;
+ foreach my $key (keys %{$info}){
+ next if ($key eq "sender_port" || $key eq "receiver_port");
+ if ($key eq "interval"){
+ $par{"interval"} = $info->{"interval"} / 1000000;
+ } else {
+ $par{$key} = $info->{$key};
+ }
+ }
+ $par{"sender"} = $data_obj->{"sender"};
+ $par{"receiver"} = $data_obj->{"receiver"};
+ $par{"mid"} = $data_obj->{"mid"};
+ $par{"metadataIdRef"} = $$filter{"metaID"};
+ $msg->set_parameter_hash (%par);
+
+ if(!(exists $data_obj->{meta})) {
+ print_log("info","No meta data found", $service_id);
+ return $msg->return_result_code("error.ma.data", "No meta data found",
$metaref);
+ }
+ print_log("info","Meta data retrieval seems to be successful",
$service_id);
+
+ my @datalines;
+
+ if ($messagetype eq "MetadataKeyResponse") {
+ my %data_hash;
+ $data_hash{"MetadataKey"} = "$src.$dst.$data_obj->{mid}";
+ push @datalines, \%data_hash;
+ $msg->set_data($dataid, @datalines);
+ print_log("info","Created MetadataKeyResponse", $service_id);
+ return 1;
+ }
+
+ $data_obj->extract_data();
+ $warnings = $self->{finder}->{warnings}->get_string();
+ #$warnings = $data_obj->{warnings}->get_string();
+ if ($warnings) {
+ #TODO is that right/useful???
+ print_log("info","Warnings from data modules:\n$warnings", $service_id);
+ return $msg->return_result_code("error.ma.data", "Warnings from data
modules: $warnings", $metaref);
+ }
+
+
+ my $data = $data_obj->get_data;
+ unless (defined $data) {
+ print_log("info","No data found", $service_id);
+ return $msg->return_result_code("error.ma.data", "No data found",
$metaref);
+ }
+
+ print_log("info","Data retrieval seems to be successful", $service_id);
+ #print_log("debug","Data:\n$data"); #Too verbose...
+
+
+ return $data_obj; #let data specific modules handle this
+}
+
+sub get_meta_info {
+ my $self = shift;
+ my $msg = shift;
+ my $action = shift;
+ my @eventtypes = @_;
+
+ $self->open_request;
+ $self->{finder}->reset;
+
+ my $endTime = time;
+ my $startTime = $endTime - 300;
+
+ $self->{finder}->set_time_epoch($startTime,$endTime);
+
+ $self->{finder}->set_type($action);
+ my @results = $self->{finder}->find;
+
+ my $datanode = ($msg->{dom}->getElementsByLocalName("data"))[0];
+
+
+ foreach my $result (@results){
+ foreach my $key (keys %{$result}){
+ next if $key eq "get_data_object";
+ next if $key eq "get_data_options";
+ }
+ my $info = $result->{meta};
+ my %par;
+ my %subject;
+
+ my $metaid = $result->{"mid"};
+
+ my ($src_type, $dst_type) = "unknown"; #TODO ipv6!
+ $src_type = "ipv4" if ($info->{"sender_ip"} =~ /\d+\.\d+\.\d+\.\d+/);
+ $dst_type = "ipv4" if ($info->{"receiver_ip"} =~ /\d+\.\d+\.\d+\.\d+/);
+
+
+ my $substring = "<nmwg:subject
xmlns:nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\" id=\"subject-$metaid\">\n";
+ $substring .= " <nmtl4:endPointPair
xmlns:nmtl4=\"http://ogf.org/schema/network/topology/l4/20070707/\">\n";
+ $substring .= " <nmtl4:src id=\"$result->{sender}\">\n";
+ $substring .= " <nmtl4:port>\n";
+ $substring .= " <nmtl4:address type=\"$src_type\"
value=\"$info->{sender_ip}\"/>\n";
+ $substring .= "
<nmtl4:portNum>$info->{sender_port}</nmtl4:portNum>\n";
+ $substring .= " </nmtl4:port>\n";
+ $substring .= " </nmtl4:src>\n";
+
+ $substring .= " <nmtl4:dst id=\"$result->{receiver}\">\n";
+ $substring .= " <nmtl4:port>\n";
+ $substring .= " <nmtl4:address type=\"$dst_type\"
value=\"$info->{receiver_ip}\"/>\n";
+ $substring .= "
<nmtl4:portNum>$info->{receiver_port}</nmtl4:portNum>\n";
+ $substring .= " </nmtl4:port>\n";
+ $substring .= " </nmtl4:dst>\n";
+ $substring .= " </nmtl4:endPointPair>\n";
+ $substring .= "</nmwg:subject>\n";
+
+=cut
+ $subject{"endPointPair"}{"namespace"} =
"http://ogf.org/schema/network/topology/l4/20070707/";
+ $subject{"endPointPair"}{"prefix"} = "nmtl4";
+
+ $subject{"endPointPair"}{"src"}{"port"}{"address"}{"ip"} =
$info->{"sender_ip"};
+ $subject{"endPointPair"}{"src"}{"port"}{"address"}{"IFName"} =
$result->{"sender"};
+ $subject{"endPointPair"}{"src"}{"port"}{"portNum"}{"element"} =
$info->{"sender_port"};
+ $subject{"endPointPair"}{"dst"}{"port"}{"address"}{"ip"} =
$info->{"receiver_ip"};
+ $subject{"endPointPair"}{"dst"}{"port"}{"address"}{"IFName"} =
$result->{"receiver"};
+ $subject{"endPointPair"}{"dst"}{"port"}{"portNum"}{"element"} =
$info->{"receiver_port"};
+
+
+=cut
+ foreach my $key (keys %{$info}){
+
+ next if $key eq "sender_ip";
+ next if $key eq "receiver_ip";
+ next if $key eq "sender_port";
+ next if $key eq "receiver_port";
+
+
+ if ($key eq "interval"){
+ $par{"interval"} = $info->{"interval"} / 1000000;
+ } else {
+ $par{$key} = $info->{$key};
+ }
+ }
+
+ my $subref = \%subject;
+ my $parref = \%par;
+ my $eventref =
\@eventtypes;
+
+
+ $msg->create_metadatablock( #subject => $subref,
+ substring => $substring,
+ parameters => $parref,
+ eventtypes => $eventref,
+ metadata_id => $metaid,
+ parent => $datanode,
+ );
+
+
+ }
+ $self->close_request;
+}
+1;
Deleted: trunk/lib/perfSONAR/MA.pm
===================================================================
--- trunk/lib/perfSONAR/MA.pm 2011-03-07 10:07:09 UTC (rev 685)
+++ trunk/lib/perfSONAR/MA.pm 2011-03-07 10:09:39 UTC (rev 686)
@@ -1,398 +0,0 @@
-package perfSONAR::MA;
-#
-# Copyright 2010 Verein zur Foerderung eines Deutschen Forschungsnetzes e.
V.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-
-#TODO
-# - Build IPPM (and RIPE) class tree as in Hades::Data
-
-use vars qw(@ISA);
-#@ISA
= qw(SOAP::Server::Parameters);
-
-#DEBUG
-use Data::Dumper;
-#/DEBUG
-
-use strict;
-use warnings;
-
-use Carp;
-
-use Hades;
-use Hades::Config;
-use Hades::Data::Finder_SQL;
-use Hades::Data::Finder;
-
-use perfSONAR qw(print_log);
-
-#this module is responsible for the select eventtype and relays action
-#to appropriate data module
-
-sub new {
- my $this = shift;
- my $class = ref($this) || $this;
- my %param = (@_);
-
- # Now create config and initialise everything
- $Hades::configfile = undef;
- $Hades::config = undef;
- my $config = Hades::Config->new(
- configfile => $param{config},
- use_argv => 0,
- );
- # We don't need it anymore and it "may" cause trouble:
- delete $param{config};
- # Init config
- $config->init() or die;
- # Copy module config to config. TODO Really all?
- @{$config->{config}}{keys %param} = values %param;
-
- # Generate object
- my $self = {
- config => $config,
- };
- $self->{"supportedEventtypes"} = [
- "http://ggf.org/ns/nmwg/ops/select/2.0/",
- ];
-
- bless $self, $class;
- return $self;
-}
-
-sub selftest {
- my $self = shift;
- return undef;
-}
-
-sub open_request {
- my $self = shift;
- $self->{finder} = Hades::Data::Finder_SQL->new(
- config => $self->{config},
- );
-
- return 1;
-}
-
-
-sub close_request {
- my $self = shift;
- $self->{finder} = undef;
-}
-
-sub set_eventType {
-
- my $self = shift;
- my $msg = shift;
- my $dataid = shift;
-
-
- foreach my $key (keys %{$msg->{"dataIDs"}{$dataid}}){
- next if ($key eq "node" || $key eq "metaref" || $key =~ /select/
- || $key eq "ns_uri" || $key eq "ns_prefix" );
- $self->{"eventType"} = $key;
- }
-
-}
-
-sub start_action {
-
- my $self = shift;
- my $msg = shift;
- my $dataid = shift;
- my $action = shift;
- my $service_id = shift;
-
-
- my $messagetype = $msg->get_message_type();
-
- my $metaref = $msg->{"dataIDs"}{$dataid}{"metaref"};
- my $select;
-
- $self->set_eventType ($msg, $dataid);
- my $eventType = $self->{"eventType"};
-
- foreach my $key (keys %{$msg->{"dataIDs"}{$dataid}}){
- if ($key =~ /select/) {
- $select = $key;
- }
- }
-
- if (!$select){
- print_log("error", "No select block found for data id: $dataid",
$service_id);
- return $msg->return_result_code("error.ma.parameters",
- "No select block found for data id: $dataid", $metaref);
- }
-
- if (!($msg->{"dataIDs"}{$dataid}{$select}{"startTime"}) &&
- !($msg->{"dataIDs"}{$dataid}{$select}{"endTime"})){
- print_log("error", "No timespan specified!", $service_id);
- return $msg->return_result_code("error.ma.parameters", "No timespan
specified", $metaref);
- }
-
- my $startTime = $msg->{"dataIDs"}{$dataid}{$select}{"startTime"};
- my $endTime = $msg->{"dataIDs"}{$dataid}{$select}{"endTime"};
-
- my $currentTime = time;
- if ($endTime > $currentTime){
- $endTime = $currentTime;
- $msg->return_result_code("error.ma.parameters", "endTime value lies
ahead!", $metaref);
- }
-
- #if no time is specified, take today (for convenience)
- #if (!(defined $startTime) && !(defined $endTime)) {
- # $endTime = time;
- # my ($sec,$min,$hour,$md,$mo,$ye,$wday,$yday,$isdst) =
- # localtime($endTime);
- # $startTime = Mktime(($ye+1900), $mo+1, $md, 0, 0, 0);
- # $msg->{"dataIDs"}{$dataid}{$select}{"startTime"} = $startTime;
- # $msg->{"dataIDs"}{$dataid}{$select}{"endTime"} = $endTime;
- #}
-
- my $filter = $msg->{"dataIDs"}{$dataid}{$eventType};
- if ($$filter{"interval"}){
- $$filter{"interval"} *= 1000000;
- }
-
- my $src = $msg->{"dataIDs"}{$dataid}{$eventType}{"src"}{"value"};
- my $dst = $msg->{"dataIDs"}{$dataid}{$eventType}{"dst"}{"value"};
- my $mid = $msg->{"dataIDs"}{$dataid}{$eventType}{"mid"};
-
-
- $self->{finder}->reset;
- $self->{finder}->set_time_epoch($startTime,$endTime)
- or print_log("error", "Invalid date format", $service_id),
- return $msg->return_result_code("error.ma.parameters", "Invalid
date format", $metaref);
- $self->{finder}->set_route($src,$dst); # set_route understands "undef"!!!
- if (defined $action){
- $self->{finder}->set_type($action);
- } else {
- $self->{finder}->set_type($eventType); # ignores "undef"
- }
-
-
- $self->{finder}->set_mid($mid); # ignores "undef"
- $self->{finder}->set_filter($filter); # filter with metadata
-
- my @results = $self->{finder}->find;
-
- unless (@results) {
- print_log("info","No data found", $service_id);
- return $msg->return_result_code("error.ma.data", "No data found",
$metaref);
- }
-
- my @result_params;
- if ($#results > 0){ #More than one measurment result found matching the
request pattern
- #get_meta_info($msg);
- my $output = "";
- my $count = 0;
- foreach my $result (@results){
- my $info = $result->{meta};
- my %par;
- foreach my $key (keys %{$info}){
- next if ($key eq "sender_port" || $key eq "receiver_port");
- if ($key eq "interval"){
- $par{"interval"} = $info->{"interval"} / 1000000;
- } else {
- $par{$key} = $info->{$key};
- }
- }
- $par{"sender"} = $result->{"sender"};
- $par{"receiver"} = $result->{"receiver"};
- $par{"mid"} = $result->{"mid"};
- $par{"metadataIdRef"} = "result$count";
- $count++;
-
- push @result_params, \%par;
-
-
- $output = $output . "$result->{sender} to $result->{receiver} "
- . $result->type2string() . ", mid: $result->{mid}\n";
- }
- my $message = "More than one measurement result found";
- print_log("info",$message, $service_id);
- print_log("debug","Measurements:\n$output", $service_id);
- $msg->set_parameter_list(@result_params);
- print_log("debug", $message, $service_id);
-
- return $msg->return_result_code("warning.ma.parameters", "More than one
measurement result found!", $metaref);
- }
-
- my $warnings = $self->{finder}->{warnings}->get_string();
- if ($warnings) {
- #TODO is that right/useful???
- print_log("info","Warnings from data modules:\n$warnings", $service_id);
- return $msg->return_result_code("error.ma.data", "Warnings from data
modules: $warnings", $metaref);
- }
-
-
- my $data_obj = $results[0];
-
- my $info = $data_obj->{meta};
- my %par;
- foreach my $key (keys %{$info}){
- next if ($key eq "sender_port" || $key eq "receiver_port");
- if ($key eq "interval"){
- $par{"interval"} = $info->{"interval"} / 1000000;
- } else {
- $par{$key} = $info->{$key};
- }
- }
- $par{"sender"} = $data_obj->{"sender"};
- $par{"receiver"} = $data_obj->{"receiver"};
- $par{"mid"} = $data_obj->{"mid"};
- $par{"metadataIdRef"} = $$filter{"metaID"};
- $msg->set_parameter_hash (%par);
-
- if(!(exists $data_obj->{meta})) {
- print_log("info","No meta data found", $service_id);
- return $msg->return_result_code("error.ma.data", "No meta data found",
$metaref);
- }
- print_log("info","Meta data retrieval seems to be successful",
$service_id);
-
- my @datalines;
-
- if ($messagetype eq "MetadataKeyResponse") {
- my %data_hash;
- $data_hash{"MetadataKey"} = "$src.$dst.$data_obj->{mid}";
- push @datalines, \%data_hash;
- $msg->set_data($dataid, @datalines);
- print_log("info","Created MetadataKeyResponse", $service_id);
- return 1;
- }
-
- $data_obj->extract_data();
- $warnings = $self->{finder}->{warnings}->get_string();
- #$warnings = $data_obj->{warnings}->get_string();
- if ($warnings) {
- #TODO is that right/useful???
- print_log("info","Warnings from data modules:\n$warnings", $service_id);
- return $msg->return_result_code("error.ma.data", "Warnings from data
modules: $warnings", $metaref);
- }
-
-
- my $data = $data_obj->get_data;
- unless (defined $data) {
- print_log("info","No data found", $service_id);
- return $msg->return_result_code("error.ma.data", "No data found",
$metaref);
- }
-
- print_log("info","Data retrieval seems to be successful", $service_id);
- #print_log("debug","Data:\n$data"); #Too verbose...
-
-
- return $data_obj; #let data specific modules handle this
-}
-
-sub get_meta_info {
- my $self = shift;
- my $msg = shift;
- my $action = shift;
- my @eventtypes = @_;
-
- $self->open_request;
- $self->{finder}->reset;
-
- my $endTime = time;
- my $startTime = $endTime - 300;
-
- $self->{finder}->set_time_epoch($startTime,$endTime);
-
- $self->{finder}->set_type($action);
- my @results = $self->{finder}->find;
-
- my $datanode = ($msg->{dom}->getElementsByLocalName("data"))[0];
-
-
- foreach my $result (@results){
- foreach my $key (keys %{$result}){
- next if $key eq "get_data_object";
- next if $key eq "get_data_options";
- }
- my $info = $result->{meta};
- my %par;
- my %subject;
-
- my $metaid = $result->{"mid"};
-
- my ($src_type, $dst_type) = "unknown"; #TODO ipv6!
- $src_type = "ipv4" if ($info->{"sender_ip"} =~ /\d+\.\d+\.\d+\.\d+/);
- $dst_type = "ipv4" if ($info->{"receiver_ip"} =~ /\d+\.\d+\.\d+\.\d+/);
-
-
- my $substring = "<nmwg:subject
xmlns:nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\" id=\"subject-$metaid\">\n";
- $substring .= " <nmtl4:endPointPair
xmlns:nmtl4=\"http://ogf.org/schema/network/topology/l4/20070707/\">\n";
- $substring .= " <nmtl4:src id=\"$result->{sender}\">\n";
- $substring .= " <nmtl4:port>\n";
- $substring .= " <nmtl4:address type=\"$src_type\"
value=\"$info->{sender_ip}\"/>\n";
- $substring .= "
<nmtl4:portNum>$info->{sender_port}</nmtl4:portNum>\n";
- $substring .= " </nmtl4:port>\n";
- $substring .= " </nmtl4:src>\n";
-
- $substring .= " <nmtl4:dst id=\"$result->{receiver}\">\n";
- $substring .= " <nmtl4:port>\n";
- $substring .= " <nmtl4:address type=\"$dst_type\"
value=\"$info->{receiver_ip}\"/>\n";
- $substring .= "
<nmtl4:portNum>$info->{receiver_port}</nmtl4:portNum>\n";
- $substring .= " </nmtl4:port>\n";
- $substring .= " </nmtl4:dst>\n";
- $substring .= " </nmtl4:endPointPair>\n";
- $substring .= "</nmwg:subject>\n";
-
-=cut
- $subject{"endPointPair"}{"namespace"} =
"http://ogf.org/schema/network/topology/l4/20070707/";
- $subject{"endPointPair"}{"prefix"} = "nmtl4";
-
- $subject{"endPointPair"}{"src"}{"port"}{"address"}{"ip"} =
$info->{"sender_ip"};
- $subject{"endPointPair"}{"src"}{"port"}{"address"}{"IFName"} =
$result->{"sender"};
- $subject{"endPointPair"}{"src"}{"port"}{"portNum"}{"element"} =
$info->{"sender_port"};
- $subject{"endPointPair"}{"dst"}{"port"}{"address"}{"ip"} =
$info->{"receiver_ip"};
- $subject{"endPointPair"}{"dst"}{"port"}{"address"}{"IFName"} =
$result->{"receiver"};
- $subject{"endPointPair"}{"dst"}{"port"}{"portNum"}{"element"} =
$info->{"receiver_port"};
-
-
-=cut
- foreach my $key (keys %{$info}){
-
- next if $key eq "sender_ip";
- next if $key eq "receiver_ip";
- next if $key eq "sender_port";
- next if $key eq "receiver_port";
-
-
- if ($key eq "interval"){
- $par{"interval"} = $info->{"interval"} / 1000000;
- } else {
- $par{$key} = $info->{$key};
- }
- }
-
- my $subref = \%subject;
- my $parref = \%par;
- my $eventref =
\@eventtypes;
-
-
- $msg->create_metadatablock( #subject => $subref,
- substring => $substring,
- parameters => $parref,
- eventtypes => $eventref,
- metadata_id => $metaid,
- parent => $datanode,
- );
-
-
- }
- $self->close_request;
-}
-1;
Copied: trunk/lib/perfSONAR/MA.pm (from rev 684,
branches/perfsonar-oppd-new-architect/lib/perfSONAR/MA.pm)
===================================================================
--- trunk/lib/perfSONAR/MA.pm (rev 0)
+++ trunk/lib/perfSONAR/MA.pm 2011-03-07 10:09:39 UTC (rev 686)
@@ -0,0 +1,60 @@
+package perfSONAR::MA;
+#
+# Copyright 2010 Verein zur Foerderung eines Deutschen Forschungsnetzes e.
V.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+
+=head1 NAME
+
+perfSONAR::MA - Main class for all measurement archiev (MA) services.
+
+=head1 SYNOPSIS
+
+use base qw(perfSONAR::MA);
+
+=head1 DESCRIPTION
+
+This is the main class for all MAs.
+=cut
+
+use strict;
+use warnings;
+
+#DEBUG
+use Data::Dumper;
+#DEBUG
+
+use version;
+our $VERSION = 0.53;
+
+use Log::Log4perl qw(get_logger);
+use base qw(perfSONAR::Echo);
+
+
+=head2 new()
+
+The constructor is called withoud a parameter.
+=cut
+sub new{
+ my ($class,%module_param) = @_;
+ my $self = {};
+ $self->{LOGGER} = get_logger(__PACKAGE__);
+ $self->{MODPARAM} = %module_param;
+ bless $self, $class;
+ return $self;
+}
+
+1;
+
Modified: trunk/lib/perfSONAR/MP/BWCTL.pm
===================================================================
--- trunk/lib/perfSONAR/MP/BWCTL.pm 2011-03-07 10:07:09 UTC (rev 685)
+++ trunk/lib/perfSONAR/MP/BWCTL.pm 2011-03-07 10:09:39 UTC (rev 686)
@@ -15,263 +15,184 @@
# limitations under the License.
#
#
+=head1 NAME
-use vars qw(@ISA);
-@ISA
= qw(perfSONAR::MP);
+perfSONAR::MP::BWCTL
-#DEBUG
-use Data::Dumper;
-#/DEBUG
+=head1 DESCRIPTION
-use strict;
-use warnings;
+This class runs measurementds for BWCTL. It use as base class the MP class.
All BWCTL specific
+definitions done here. This class has no concstructor defined. Ituse the new
method from MP class
-use Carp;
+=cut
-use perfSONAR::BWCTL;
-use perfSONAR::MP;
-BEGIN {
- use vars qw($VERSION);
- $VERSION = 0.51;
-}
+use strict;
+use warnings;
-my $ns_store = "http://ggf.org/ns/nmwg/ops/store/2.0/";
-sub new {
- my $this = shift;
+#DEBUG
+use Data::Dumper;
+#DEBUG
- my $self = perfSONAR::MP->new (@_);
- push @{$self->{"supportedEventtypes"}},
+use version;
+our $VERSION = 0.53;
- ("bwctl",
- "http://ggf.org/ns/nmwg/tools/bwctl/2.0/",
- "http://ggf.org/ns/nmwg/tools/iperf/2.0/");
-
- $self->{"known_parameters"} = {
+use Log::Log4perl qw(get_logger);
+use base qw(perfSONAR::MP);
- src => 1,
- dst => 1,
- interval => 1,
- duration => 1,
- windowSize => 1,
- protocol => 1,
- bufferSize => 1,
- bandwidth => 1,
- login => 1,
- password => 1,
- TOS => 1,
- };
- $self->{"unsupported_parameters"} = {
+=head2 run()
- advisoryWindowsize => 1,
- scheduleInterval => 1,
- numberOfTests => 1,
- latest => 1,
- alpha => 1,
- };
+The run method starts a bwctl measurement and use the runMeasurement()
+method from perfSONAR::MP. To start the measurement a data struct as
+input is needed. For example to start a bwctl measurement:
- bless $self, qw(perfSONAR::MP::BWCTL);
- return $self;
-}
+1. $bwctl = perfSONAR::MP::BWCTL->new();
+2.$ds = perfSONAR::DataStruct->new($uri, $message);
+3. $bwctl->run();
-sub parse_key {
-
- my $self = shift;
- my %parameters = shift;
- my %key = split (',', $parameters{"metadatakey"});
- $parameters{"src"} = $key{"src"}{"value"} if $key{"src"}{"value"};
- $parameters{"dst"} = $key{"dst"}{"value"} if $key{"dst"}{"value"};
- $parameters{"interval"} = $key{"int"} if $key{"int"};
- $parameters{"duration"} = $key{"dur"} if $key{"dur"};
- $parameters{"windowSize"} = $key{"win"} if $key{"win"};
- $parameters{"protocol"} = $key{"pro"} if $key{"pro"};
- $parameters{"bufferSize"} = $key{"buf"} if $key{"buf"};
- $parameters{"bandwidth"} = $key{"ban"} if $key{"ban"};
- $parameters{"TOS"} = $key{"tos"} if $key{"tos"};
+=cut
+sub run{
+ my ($self, $ds) = @_;
+
+ $self->{DS} = $ds;
+ $self->runMeasurement();
}
-sub selftest {
- my $self = shift;
- return {
- bwctl_command_test => \&bwctl_command_test,
- bwctl_exec_test => \&bwctl_exec_test,
- bwctld_running_test => \&bwctld_running_test,
- ntpd_running_test => \&ntpd_running_test,
- };
-}
+=head2 createCommandLine({})
+To start a measurement with bwctl a commandline expression is needed.
+This expression will be created here. As input a hash parameter of bwctl
options are needed.
+On success it will return a array with bwctl options and parameters. On
errpr it
+will return an array with ("ERROR,error message as string).
-sub bwctl_command_test{
- my $self = shift;
- my $message;
- my $status = "error";
- my $command = $self->{"command"};
- my $commandpath = `which $command`;
- chomp ($commandpath);
- if (!(-e "$commandpath")){
- $message = "BWCTL tool $command not found!";
- #die "BWCTL tool $commandpath not found!\n";
- } else {
- $message = "BWCTL tool $command found ";
- $status = "success";
- }
- return ($message, $status);
-}
+=cut
+sub createCommandLine{
+ my ($self,%parameters) = @_;
+ my @commandline;
+ my $errormsg;
+
+ unless ($parameters{"src"} || $parameters{"dst"}) {
+ $errormsg = "Neither source nor destination ip address specified.";
+ $self->{LOGGER}->error($errormsg);
+ return "ERROR", $errormsg;
+ }
+
+ if ($parameters{"src"} eq $parameters{"dst"}) {
+ $errormsg = "Source ip address equal to destination ip address.";
+ $self->{LOGGER}->error($errormsg);
+ return "ERROR", $errormsg;
+ }
-sub bwctl_exec_test{
- my $self = shift;
- my $message;
- my $status = "error";
- my $command = $self->{"command"};
- my $commandpath = `which $command`;
- chomp ($commandpath);
- if (!( -x "$commandpath")){
- $message = "BWCTL tool $command not executable!";
- #die "No executable $commandpath found!\n";
- } else {
- $message = "BWCTL tool $command executable.";
- $status = "success";
- }
- return ($message, $status);
+ #check parameters to be correct input:
+ #TODO test this condition
+ foreach my $param (keys %parameters){
+ next if ($param eq "param_ns_prefix" ||
+ $param eq "metaID" ||
+ $param eq "subject_ns_prefix" ||
+ $param eq "parameter_ID" ||
+ $param eq "param_ns_uri" ||
+ $param eq "subject_ns_uri");
+ next if ($param eq "src" || $param eq "dst");
+ if ($param eq "login" || $param eq "password"){
+ unless ($parameters{$param} =~ /^\w+$/){
+ $errormsg = "Invalid login/password string specified.";
+ $self->{LOGGER}->error($errormsg);
+ return "ERROR", $errormsg;
+ }
+ next;
+ }#End if ($param eq "login
+ if ($param eq "TOS"){
+ unless ($parameters{$param} =~ /^\d+|0x\d+$/){
+ $errormsg = "Invalid TOS string specified.";
+ $self->{LOGGER}->error($errormsg);
+ return "ERROR", $errormsg;
+ }
+ next;
+ }#End if ($param eq "TOS
+ if ($param eq "protocol"){
+ unless ($parameters{$param} =~ /^udp$/i || $parameters{$param}
=~ /^tcp$/i){
+ $errormsg = "Unknown protocol: $parameters{protocol}";
+ $self->{LOGGER}->error($errormsg);
+ return "ERROR", $errormsg;
+ }
+ next;
+ }#End if ($param eq "protocol
+ unless ($parameters{$param} =~ /^\d+$/){
+ $errormsg = "Invalid value specified for $param.";
+ $self->{LOGGER}->error($errormsg);
+ return "ERROR",
+ }
+ }#End foreach my $param
+ #End parameter check
+
+ #Now create Command
+ push @commandline , "-s" , $parameters{"src"};
+ push @commandline , "AE", "AESKEY" if($parameters{"login"});
+ push @commandline , $parameters{login} if($parameters{"login"});
+ push @commandline , "-c", $parameters{dst};
+ push @commandline , "AE", "AESKEY" if($parameters{"login"});
+ push @commandline , $parameters{login} if($parameters{"login"});
+ push @commandline , "-i", $parameters{interval}
if($parameters{"interval"});
+ push @commandline , "-t", $parameters{duration}
if($parameters{"duration"});
+ push @commandline , "-w", $parameters{windowSize}
if($parameters{"windowSize"});
+ push @commandline , "-u" if ($parameters{"protocol"} &&
$parameters{"protocol"} =~ /^udp$/i);
+ push @commandline , "-l", $parameters{bufferSize}
if($parameters{"bufferSize"});
+ push @commandline , "-b", $parameters{bandwidth}
if($parameters{"bandwidth"});
+ push @commandline , "-S", $parameters{TOS} if($parameters{"TOS"});
+
+ return @commandline;
+
}
-sub bwctld_running_test{
- my $self = shift;
- my $message;
- my $status = "error";
- my @ps_output = `ps auxw |grep bwctld`;
- my $bwctld = undef;
- while (my $elem = pop @ps_output){
- next if $elem =~ /grep/;
- $bwctld = 1;
- }
- if ($bwctld){
- $message = "bwctld running.";
- $status = "success";
- } else {
- $message = "bwctld not running! ";
- $self->print_log_id ("warning", "bwctld not running!");
- }
- return ($message, $status);
-}
-sub ntpd_running_test{
- my $self = shift;
- my $message;
- my $status = "error";
- my @ps_output = `ps auxw |grep ntpd`;
- my $ntpd = undef;
- while (my $elem = pop @ps_output){
- next if $elem =~ /grep/;
- $ntpd = 1;
- }
- if ($ntpd){
- $message = "ntpd running.";
- $status = "success";
- } else {
- $message .= "ntpd not running!";
- $self->print_log_id ("warning", "ntpd not running!");
- }
- return ($message, $status);
-}
+=head2 parse_result({})
+After a measurement call the result message of the tool should be parsed.
+This method will be called from the MP class. The measurement result
+ub $$ds->{PARAMS}->{$id}->{MEASRESULT}will be used. On success it returns
+a array. The elements of the array are hashes. On error the
$$ds->{ERROROCCUR}
+will be set to 1. For this $$ds->{RETURNMSG} will be set to the error string.
-sub start_action {
- my $self = shift;
- my $msg = shift;
- my $dataid = shift;
- my $service_id = shift;
-
- $self->{"service_id"} = shift;
-
- my %parameters;
- my $ns = "http://ggf.org/ns/nmwg/tools/iperf/2.0/";
-
- %parameters = $self->get_parameters($msg->{"dataIDs"}{$dataid});
-
- my $error = $self->check_parameters(%parameters);
-
- if ($error){
- $self->print_log_id ("info", $error);
- return $msg->return_result_code("error.mp.bwctl", $error,
$msg->{"dataIDs"}{$dataid}{"metaref"});
- }
-
+=cut
+sub parse_result {
+
+ my ($self, $ds, $id) = @_;
+ my $result = $$ds->{SERVICE}->{DATA}->{$id}->{MEASRESULT};
+ my @result = split(/\n/, $result);
my @datalines;
-
- my $messagetype = $msg->get_message_type();
+ my $time = time;
- if ($messagetype =~ /EchoResponse/){
- #do selftests
- my @tests = ("bwctl_command_test",
- "bwctl_exec_test",
- "bwctld_running_test",
- "ntpd_running_test");
- foreach my $test (@tests){
- $self->print_log_id("debug", "Perform test: $test");
- my ($message, $status) = $self->$test;
- my $et =
"http://schemas.perfsonar.net/tools/admin/selftest/MP/BWCTL/$test/$status/1.0";
- $msg->return_result_code(
- $et, $message, $msg->{"dataIDs"}{$dataid}{"metaref"}, $test);
- }
- return 1;
- }
- if ($messagetype eq "MetadataKeyResponse") {
- my %data_hash;
- my $key;
- $key .= "src,$parameters{src}" if $parameters{"src"};
- $key .= ",dst,$parameters{dst}" if $parameters{"dst"};
- $key .= ",int,$parameters{interval}" if $parameters{"interval"};
- $key .= ",dur,$parameters{duration}" if $parameters{"duration"};
- $key .= ",win,$parameters{windowSize}" if $parameters{"windowSize"};
- $key .= ",pro,$parameters{protocol}" if $parameters{"protocol"};
- $key .= ",buf,$parameters{bufferSize}" if $parameters{"bufferSize"};
- $key .= ",ban,$parameters{bandwidth}" if $parameters{"bandwidth"};
- $key .= ",tos,$parameters{TOS}" if $parameters{"TOS"};
+ foreach my $resultline (@result){
+ next unless ($resultline =~
+
/(\d+\.\d+\s*\-\s*\d+\.\d+)\s+sec\s+(\d+\.?\d*)\s+(\w+)\s+(\d+\.?\d*)\s+(\w+\/\w+)/);
- $data_hash{"MetadataKey"} = "$key";
+ my %data_hash;
+
+ $data_hash{"timeType"} = "unix";
+ $data_hash{"timeValue"} = $time;
+ $data_hash{"interval"} = $1;
+ $data_hash{"numBytes"} = $2;
+ $data_hash{"numBytesUnits"} = $3;
+ $data_hash{"value"} = $4;
+ $data_hash{"valueUnits"} = $5;
push @datalines, \%data_hash;
- $msg->set_data($dataid, @datalines);
- return 1;
}
-
- my $unixtime = time;
- my @commandline = perfSONAR::BWCTL::commandline(%parameters);
- if ($commandline[0] eq "ERROR") {
- return $msg->return_result_code("error.mp.bwctl", $commandline[1],
$msg->{"dataIDs"}{$dataid}{"metaref"});
- }
- $self->print_log_id("info", "BWCTL commandline: @commandline");
- my @result = perfSONAR::BWCTL::do_bwctl($self->{"command"},
$parameters{"password"}, @commandline);
- @datalines = perfSONAR::BWCTL::parse_result($unixtime, @result);
- if ($datalines[0] eq "BWCTL Error:"){
- my $errorstring = join(" ", @datalines);
+ if($#datalines < 0){
+ #no data -> something wrong, write result as error description:
+ $datalines[0]="BWCTL Error:";
+ my $errorstring = "@result";
$errorstring =~ s/usage.*$//;
- return $msg->return_result_code("error.mp.bwctl", $errorstring,
$msg->{"dataIDs"}{$dataid}{"metaref"});
- }
+ $$ds->{ERROROCCUR} = 1;
+ $self->{LOGGER}->error($errorstring);
+ push @datalines, @result;
+ push @datalines,"error.mp.bwctl";
+ }
+ return @datalines;
+}
- $msg->set_data_ns ($dataid, $ns, @datalines);
-=cut
- my $datanode = $msg->{"dataIDs"}{$dataid}{"node"};
- my $timenode = $msg->add_attribute(parent => $datanode, nodename =>
"commonTime",
- type => "unix", value => $unixtime);
- foreach my $data_hash (@datalines){
-
- $msg->add_attribute(parent => $timenode, nodename => "datum",
- namespace => $ns, %{$data_hash});
- }
-=cut
-
- if ($self->{"store"} == 1){
- $self->store($msg);
- }
-
-
- return 1;
-
-}
-
-1;
+1;
\ No newline at end of file
Modified: trunk/lib/perfSONAR/MP/OWAMP.pm
===================================================================
--- trunk/lib/perfSONAR/MP/OWAMP.pm 2011-03-07 10:07:09 UTC (rev 685)
+++ trunk/lib/perfSONAR/MP/OWAMP.pm 2011-03-07 10:09:39 UTC (rev 686)
@@ -15,145 +15,257 @@
# limitations under the License.
#
#
+=head1 NAME
-use vars qw(@ISA);
-#@ISA
= qw(SOAP::Server::Parameters);
+perfSONAR::MP::OWAMP
-#DEBUG
-use Data::Dumper;
-#/DEBUG
+=head1 DESCRIPTION
+This class runs measurementds for OWAMP. It use as base class the MP class.
All OWAMP specific
+definitions done here. This class has no concstructor defined. Ituse the new
method from MP class
+
+=cut
+
+
use strict;
use warnings;
-use Carp;
-use perfSONAR::OWAMP;
-use perfSONAR qw(print_log %services);
+#DEBUG
+use Data::Dumper;
+#DEBUG
-use NMWG;
-use NMWG::Message;
+use version;
+our $VERSION = 0.53;
+use Log::Log4perl qw(get_logger);
+use base qw(perfSONAR::MP);
-sub new {
- my $this = shift;
- my $class = ref($this) || $this;
- my %param = (@_); # IGNORED !!!
- # Generate object
- my $self = {
- };
- bless $self, $class;
- return $self;
-}
-sub open_request {
- #initialize whatever you have to initiliaze
-}
+=head2 run()
-sub close_request{
- #close request if necessary
+The run method starts a OWAMP measurement and use the runMeasurement()
+method from perfSONAR::MP. To start the measurement a data struct as
+input is needed. For example to start a OWAMP measurement:
+
+1. $owamp = perfSONAR::MP::OWAMP->new();
+2.$ds = perfSONAR::DataStruct->new($uri, $message);
+3. $owamp->run();
+
+=cut
+sub run{
+ my ($self, $ds) = @_;
+
+ $self->{DS} = $ds;
+ $self->runMeasurement();
}
-sub start_action {
- my $self = shift;
- my $msg = shift;
- my $dataid = shift;
- my $service_id = shift;
+=head2 createCommandLine({})
- my $eventType;
- foreach my $key (keys %{$msg->{"dataIDs"}{$dataid}}){
- next if ($key eq "node" || $key eq "metaref" );
- $eventType = $key;
- }
+To start a measurement with owamp a commandline expression is needed.
+This expression will be created here. As input a hash parameter of owamp
options is needed.
+On success it will return a array with owamp options and parameters. On
errpr it
+will return an array with ("ERROR,error message as string).
- my %parameters = %{$msg->{"dataIDs"}{$dataid}{$eventType}};
- my $metaref = $msg->{"dataIDs"}{$dataid}{"metaref"};
-
- if ($eventType =~ /store/){ #store data
- my $metaID = $parameters{"metaID"};
- my $dataref;
- if (!defined $parameters{"dataref"}){
- return $msg->return_result_code("error.mp.bwctl",
- "No data given for storage!", $metaID);
- } else {
- $dataref = $parameters{"dataref"};
+=cut
+sub createCommandLine{
+ my ($self,%parameters) = @_;
+ my @commandline;
+ my $errormsg;
+ my $ds = $self->{DS};
+
+ #$self->{LOGGER}->debug(Dumper(%parameters));
+
+ push @commandline, "-S" , $parameters{src} if($parameters{"src"});
+ push @commandline, "-c" , $parameters{count} if $parameters{count};
+ push @commandline, "-L" , $parameters{timeout} if $parameters{timeout};
+ #TODO HOW to
+ push @commandline, "-s" , $parameters{size} if $parameters{size};
+ push @commandline, "-H" , $parameters{PHB} if $parameters{PHB};
+ push @commandline, "-D", $parameters{DSCP} if $parameters{DSCP};
+ push @commandline, "-i", $parameters{send_schedule} if
$parameters{send_schedule};
+ push @commandline, "-E", $parameters{enddelay} if $parameters{enddelay};
+ push @commandline, "-z", $parameters{startdelay} if
$parameters{startdelay};
+ push @commandline, "-b", $parameters{bucket_width} if
$parameters{bucket_width};
+ push @commandline, "-N", $parameters{intermediates} if
$parameters{intermediates};
+
+ #Look for the output type
+ if ($parameters{"output"} && $parameters{"output"} eq "summary"){
+ $self->{OUTPUTTYPE} = "summary";
}
- if (!defined $parameters{"uri"}){
- return $msg->return_result_code("error.mp.bwctl",
- "No MA server address given. Data cannot be stored.",
- $metaID);
+ elsif ($parameters{"output"} && ($parameters{"output"} eq
"machine_readable")){
+ push @commandline, "-M";
+ $self->{OUTPUTTYPE} = "machine_readable";
}
- $msg->set_data_string($dataid, "Store action not supported.");
- return 1;
- }
-
- my @unknown;
- my @unsupported;
-
- foreach my $par (keys %parameters){
- next if $par eq "metaID";
- if ($par eq "metadatakey"){
- parse_key(\%parameters);
- } elsif ($par eq "save_summary" ||
- $par eq "directory" ||
- $par eq "no_summary" ){
- push @unsupported, $par;
- } elsif ($par ne "src" &&
- $par ne "dst" &&
- $par ne "count" &&
- $par ne "timeout" &&
- $par ne "size" &&
- $par ne "units" &&
- $par ne "send_schedule" &&
- $par ne "percentile" &&
- $par ne "one_way" &&
- $par ne "DSCP" &&
- $par ne "PHB" &&
- $par ne "enddelay" &&
- $par ne "startdelay" &&
- $par ne "bucket_width" &&
- $par ne "intermediates" &&
- $par ne "output" &&
- $par ne "port" &&
- $par ne "portrange"){
- push @unknown, $par;
+ elsif ($parameters{"output"} && ($parameters{"output"} eq "raw")){
+ push @commandline, "-R";
+ $self->{OUTPUTTYPE} = "raw";
}
- }
+ elsif ($parameters{"output"} ){
+ #unknown output type
+ $errormsg = "You choose a unknown output type: $parameters{output}.";
+ $self->{LOGGER}->error($errormsg);
+ return "ERROR", $errormsg, "error.mp.owamp";
+ }
+ else{
+ #No output type defined
+ push @commandline, "-R";
+ $self->{OUTPUTTYPE} = "raw";
+ }
+
+ push @commandline, "-P", $parameters{portrange} if
$parameters{portrange};
+
+ push @commandline, "-a" if($parameters{"percentile"});
+ push @commandline, "-f" if($parameters{"one_way"} &&
($parameters{"one_way"} eq "from"));
+ push @commandline, "-t" if($parameters{"one_way"} &&
($parameters{"one_way"} eq "to"));
+
+ #Append destination
+ if ($parameters{"dst"} ){
+ if ($parameters{"port"} ){
+ my $dst = "$parameters{dst}:$parameters{port}";
+ push @commandline, $dst;
+ }
+ else{
+ push @commandline, $parameters{"dst"};
+ }
+ }
+ else{
+ $errormsg = "No destination address specified.";
+ $self->{LOGGER}->error($errormsg);
+ return "ERROR", $errormsg, "error.mp.owamp";
+ }
+
+ #Check the command
+ my $countlimit =
$$ds->{SERVICES}->{$$ds->{SERVICE}->{NAME}}->{countlimit};
+ if (int($parameters{"count"}) >int($countlimit)){
+ $errormsg = "count greater than $countlimit is not allowed. Please
change it in your request.";
+ return "ERROR", $errormsg, "error.mp.owamp";
+ }
+ #$self->{LOGGER}->info(Dumper($countlimit));
+
+ return @commandline;
+
+}
- if ($parameters{"output"} && !($parameters{"output"} eq "per_packet" ||
- $parameters{"output"} eq "machine_readable" ||
- $parameters{"output"} eq "raw") ){
- my $errorstring = "Unknown output parameter: $parameters{output}";
- return $msg->return_result_code("error.mp.owping", $errorstring,
$metaref);
- }
- my @datalines;
- my $commandline = Hades::perfSONAR::OWAMP::commandline(%parameters);
- $commandline .= " -R" if $eventType eq "ippm";
- my $tool = $services{owamp}{command} || "/usr/local/bin/owping";
- my @result = `$tool $commandline 2>&1`; #TODO (authentifizierung)
(fehlerrueckgabe abfangen)
- my $type="default"; #TODO (machinereadable)
- $type = "per_packet" if $parameters{"output"} eq "per_packet";
- $type = "machine_readable" if $parameters{"output"} eq "machine_readable";
- $type = "ippm" if $parameters{"output"} eq "raw";
- $type = $eventType if $eventType eq "ippm";
- #$type = $parameters{"individual"} if $parameters{"individual"}; #TODO
IPPM output extra behandeln!
- @datalines = Hades::perfSONAR::OWAMP::parse_result($type, @result);
+=head2 parse_result({})
- if ($datalines[0] eq "OWPING Error:"){
- my $errorstring = join(" ", @datalines);
- $errorstring =~ s/usage.*$//;
- return $msg->return_result_code("error.mp.owping", $errorstring,
$metaref);
- }
+After a measurement call the result message of the tool should be parsed.
+This method will be called from the MP class. The measurement result
+in $$ds->{PARAMS}->{$id}->{MEASRESULT}will be used. On success it returns
+a array. The elements of the array are hashes. On error the
$$ds->{ERROROCCUR}
+will be set to 1. For this $$ds->{RETURNMSG} will be set to the error string.
-
- $msg->set_data($dataid, @datalines);
- return 1;
-
-
+=cut
+sub parse_result {
+
+ my ($self, $ds, $id) = @_;
+ my $result = $$ds->{SERVICE}->{DATA}->{$id}->{MEASRESULT};
+ my @result = split(/\n/, $result);
+ my $time = time;
+ my @datalines = ();
+
+ if ($self->{OUTPUTTYPE} eq "raw"){
+ foreach my $resultline (@result){
+ if ($resultline =~
+ #SEQNO STIME SSYNC SERR RTIME RSYNC RERR TTL\n
+ /(\d+)\s*(\d+)\s*(\d+)\s(.+)\s(\d+)\s(\d+)\s(.+)\s(\d+)/){
+ my %data_hash;
+ $data_hash{"sequenceNumber"} = $1;
+ $data_hash{"send_time"} = $2;
+ $data_hash{"sender_sync"} = $3;
+ $data_hash{"sender_error"} = $4;
+ $data_hash{"receive_time"} = $5;
+ $data_hash{"receiver_sync"} = $6;
+ $data_hash{"receiver_error"} = $7;
+ $data_hash{"packetTTL"} = $8;
+ push @datalines, \%data_hash;
+ } #End foreach
+ }#End if
+ }elsif ($self->{OUTPUTTYPE} eq "machine_readable"){
+ my $begin_buckets = 0;
+ my $begin_nreorder = 0;
+ my %data_hash = ();
+ my $linecount = 0;
+
+
+ #$self->{LOGGER}->debug(Dumper(@result));
+
+ foreach my $resultline (@result){
+ next if $resultline =~ /Approximately/;
+ next if $resultline =~ s/^\s+//;
+
+ #look if <BUCKETS> begin
+ $begin_buckets = 1 if $resultline =~ /<BUCKETS/;
+
+ #Look if <NREORDERING>
+ $begin_nreorder = 1 if $resultline =~ /<NREORDERING>/;
+
+
+ if (!$begin_buckets){
+ if (!$begin_nreorder){
+ my ($key, $value) = split (/\s+/, $resultline);
+ $data_hash{$key} = $value;
+ $linecount++;
+ if ($linecount == 24){
+ push @datalines, \%data_hash;
+ $linecount = 0;
+ }
+ }
+ }#End if (!$begin_buckets
+ else{
+ #TODO add buckets
+ }
+
+ $begin_buckets = 0 if $resultline =~ /\/BUCKETS/;
+ $begin_nreorder = 0 if $resultline =~ /\/NREORDERING/;
+
+ #$self->{LOGGER}->debug(Dumper($linecount));
+ }# End foreach
+
+ }#End if
+ elsif ($self->{OUTPUTTYPE} eq "summary"){
+ my %data_hash;
+ foreach my $resultline (@result){
+ if ($resultline =~
+ #10 sent, 0 lost (0.000%), 0 duplicates
+
/(\d+)\s+sent,\s+(\d+)\s+lost\s+\((\S+)\),\s+(\d+)\s+duplicates/){
+ $data_hash{"number_of_packets"} = $1;
+ $data_hash{"lost_packets"} = $2;
+ $data_hash{"lost_percent"} = $3;
+ $data_hash{"duplicate_packets"} = $4;
+ #push @datalines, \%data_hash;
+ } elsif ($resultline =~
+ #one-way delay min/median/max = 0.202/0.4/0.582 ms,
(err=0.628 ms)
+ /one-way delay min\/median\/max =
(\S+\/\S+\/\S+)\s+(\w+),\s+\(err=(.+)\s+(\w+)/){
+ my $delay = $1;
+ my ($min,$med,$max) = split ("/", $delay);
+ $data_hash{"delay_min"} = $min;
+ $data_hash{"delay_med"} = $med;
+ $data_hash{"delay_max"} = $max;
+ $data_hash{"delay_units"} = $2;
+ $data_hash{"error"} = $3;
+ $data_hash{"error_units"} = $4;
+ #push @datalines, \%data_hash;
+ } else { next; }
+ }#End foreach
+ push @datalines, \%data_hash;
+ }#End else
+
+
+ if($#datalines < 0){
+ #no data -> something wrong, write result as error description:
+ $datalines[0]="OWAMP Error:";
+ push @datalines, @result;
+
+ my $errorstring = "@datalines";
+ $$ds->{ERROROCCUR} = 1;
+ $self->{LOGGER}->error($errorstring);
+ push @datalines,"error.mp.owamp";
+ } #End if ($#datalines < 0
+
+ return @datalines;
}
-
1;
-
Modified: trunk/lib/perfSONAR/MP.pm
===================================================================
--- trunk/lib/perfSONAR/MP.pm 2011-03-07 10:07:09 UTC (rev 685)
+++ trunk/lib/perfSONAR/MP.pm 2011-03-07 10:09:39 UTC (rev 686)
@@ -15,175 +15,197 @@
# limitations under the License.
#
#
+=head1 NAME
-BEGIN {
- use vars qw(@ISA);
-
#@ISA
= qw(SOAP::Server::Parameters);
- @ISA = qw(Exporter);
- @EXPORT = qw(store check_parameters get_parameters);
-}
+perfSONAR::MP - Main class for all measurement poibt (MP) services.
+=head1 DESCRIPTION
+This is the base class for all measurement point classes like
+bwctl or owamp. It holds all main methods to start a measurement
+use the runMeasuremt method. For detail information see below.It
+is important that all measurement point classes like BWCTL, which
+uses this class as base class, should have this 3 methods:
+run() - to start the measurement point
+createCommand() - to create a command from the parameters
+parse_result() - to parse the measurement result data
-#DEBUG
-use Data::Dumper;
-#/DEBUG
+for details see the examples BWCTL and OWAMP
+=cut
+
use strict;
use warnings;
-use Carp;
-use perfSONAR qw(print_log);
-use NMWG;
-use NMWG::Message;
+#DEBUG
+use Data::Dumper;
+#DEBUG
-sub new {
- my $this = shift;
- my $class = ref($this) || $this;
- my %param = (@_);
+use version;
+our $VERSION = 0.52;
- my $self = {
- };
- $self->{"supportedEventtypes"} = [
- "http://ggf.org/ns/nmwg/ops/store/2.0",
- ];
- $self->{"command"} = $param{"command"};
- $self->{"store"} = $param{"store"};
- $self->{"store_url"} = $param{"store_url"};
+use Log::Log4perl qw(get_logger);
+use IPC::Run qw( run timeout start finish pump);
+use IO::Pty;
+use POSIX ":sys_wait_h";
+use base qw(perfSONAR::Echo);
- bless $self, $class;
- return $self;
-}
+=head1 Methods:
-sub open_request {
- #initialize whatever you have to initiliaze
-}
+=head2 createCommandLine(%parameters)
-sub close_request{
- #close request if necessary
+Every service which works as a measurement point (MP) should have (overrite)
this method.
+This method will be called from the method MP::runMeasurement(). It called
with a hash
+which contains the iotions with the regarding value. Build from this a
array, which calls
+the command. Dont include the tool name like bwctl or owping. Return as
result this array.
+=cut
+sub createCommandLine{
+
}
+=head2 parse_result($datastruct_ref, $id_of_measurement)
-#obsolete!
-sub set_command {
- my $self = shift;
- my $c = shift;
- $self->{"command"} = $c;
-}
+After the measurement the method MP::runMeasurement() will call this method.
So include this method to your MP service.
+This method will get a reference to the data structure. As second value it
will get the identification from the measurement.
+Use this to get the result data from the measurement. Use:
+
+ my $result = $$ds->{SERVICE}->{DATA}->{$id}->{MEASRESULT};
+
+This is a string. Parse it to the specific form. Build a array of hashes
with the values. Return this array so the main method can use it.
-sub selftest {
- my $self = shift;
- return undef;
+=cut
+sub parse_result{
+
}
+=head2 run($reference_to_datastructucre)
-sub start_action {
-
-}
-
-
-sub store {
-
- my $self = shift;
- my $msg = shift;
-
- if (!$self->{"store_url"}){
- $self->print_log_id("error", "Store to MA failed: no url to SQL MA
given!");
- } else {
- my $store_msg = $msg->clone;
- if (!$store_msg){
- $self->print_log_id("error", "Store to MA failed: Could not clone
storage message.");
- return;
+This is the starting point of a MP. So include this method to your service
to make runable. Only a reference to the
+data strucre is on start given. Save this and call the main method
runMeasurement() with no argument. Use the following
+template for this:
+ sub run{
+ my ($self, $ds) = @_;
+
+ $self->{DS} = $ds;
+ $self->runMeasurement();
}
- $store_msg->set_message_type("MeasurementArchiveStoreRequest");
+=cut
- #my $store_string = $store_msg->as_string(1);
- #print "$store_string\n";
+=head2 new()
- my $response = perfSONAR::sendReceive( message => $store_msg,
- uri => $self->{"store_url"},
- );
-
- if ($response){
- my $result = $response->as_string(2);
- $self->print_log_id("info", "Answer from SQL MA:\n$result");
- #print "$result\n"; #TODO parse response?
- } else {
- $self->print_log_id("error", "Store to MA failed: No response from SQL
MA!");
+The constructor is called withoud a parameter.
+=cut
+sub new{
+ my ($class,%module_param) = @_;
+ my $self = {};
+ $self->{LOGGER} = get_logger(__PACKAGE__);
+ $self->{COMMAND} = $module_param{command};
+ my $ret = `which $self->{COMMAND} 2>/dev/null`;
+ if ( length $ret <= 0 ){
+ my @errmsg;
+ push @errmsg, "ERROR:";
+ push @errmsg, "command:", $self->{COMMAND} ;
+ push @errmsg, "not found. Please install it!";
+ $self->{LOGGER}->error("@errmsg");
+ die "@errmsg";
}
- }
+ $self->{MODPARAM} = %module_param;
+ bless $self, $class;
+ return $self;
}
+=head2 runMeasurement({})
-sub get_parameters {
+This function can be used to start a measurement point (MP). It use a data
struct.
+The PARAMS field should be set. The result of the measurement is stored
+in the MPRESULT field of data struct. The type is array. On error
+occurnes the field is set to "ERROR".
- my $self = shift;
- my $datablock = shift;
-
- my %parameters;
-
- foreach my $key (keys %{$datablock}){ #get eventtypes
- next if ($key eq "node" || $key eq "metaref" ); #no eventtype
- foreach my $k (keys %{$datablock->{$key}}){
- if (!defined $parameters{$k}){
- if ($k eq "src" || $k eq "dst"){
- $parameters{$k} = $datablock->{$key}{$k}{"value"};
- } else {
- $parameters{$k} = $datablock->{$key}{$k};
+=cut
+sub runMeasurement{
+ my ($self) = @_;
+ my $logger = get_logger("perfSONAR::MP" );
+ my $ds = $self->{DS};
+ my $pass;
+
+ #Get tool for commandline
+ my $tool = $$ds->{SERVICES}->{$$ds->{SERVICE}->{NAME}}->{tool};
+
+ my $data = $$ds->{SERVICE}->{DATA};
+ #$self->{LOGGER}->info(Dumper($data));
+ foreach my $id (keys %{$data}){
+
+ my @commandline = $self->createCommandLine(
+ %{$data->{$id}->{PARAMS}});
+
+ if ($commandline[0] eq "ERROR") {
+ $$ds->{ERROROCCUR} = 1;
+ push @commandline,"error.$tool.mp";
+ $$ds->{SERVICE}->{DATA}->{$id}->{MRESULT} =
\@commandline;
+ return;
}
- }
- }
- }
-
- return %parameters;
+ #Start commandline
+ #first check if tool is available
+ my $ret = `which $tool 2>/dev/null`;
+ if ( length $ret <= 0 ){
+ $$ds->{ERROROCCUR} = 1;
+ my $et = "error.$tool.mp";
+ my @errmsg;
+ push @errmsg, "ERROR:";
+ push @errmsg, "command:", $tool;
+ push @errmsg, "not found";
+ $self->{LOGGER}->error("@errmsg");
+ push @errmsg, $et;
+ $$ds->{SERVICE}->{DATA}->{$id}->{MRESULT} =
\@errmsg;
+ return;
+ }
+
+ $self->{LOGGER}->info("Service: $$ds->{SERVICE}->{NAME} called with
command: $tool @commandline");
+
+ #Define pipes
+ my ($in, $out, $err);
+
+ #Define call
+ my @call = @commandline;
+ unshift @call, $tool;
+
+ my $h = start
(\@call,
'<pty<', \$in, '>pty>', \$out, '2>', \$err);
+ while (1){
+ pump $h;
+ if ($err =~ /passphrase/){
+ $in = "$pass\n";
+ $err = "";
+ }
+ elsif ($err ne "\n"){
+ last;
+ }
+ }#End while (1)
+ my $out_tmp = $out;
+ my $err_tmp = $err;
+ finish $h;
+
+ if (!$out){
+ $$ds->{SERVICE}->{DATA}->{$id}->{MEASRESULT} = "$err";
+ }
+ else{
+ $$ds->{SERVICE}->{DATA}->{$id}->{MEASRESULT} = "$out";
+ }
+ #$logger->info(Dumper($out));
+ #parse the result
+ my @mresult = $self->parse_result($ds,$id);
+ $$ds->{SERVICE}->{DATA}->{$id}->{MRESULT} =
\@mresult;
+ #$logger->info(Dumper(@mresult));
+ }#End foreach my $id
+
+ #On success write to log
+ if ($$ds->{ERROROCCUR}){
+ $logger->info("Measurement point was NOT successfull for
service: $$ds->{SERVICE}->{NAME}");
+ }
+ else{
+ $logger->info("Measurement point was successfull for service:
$$ds->{SERVICE}->{NAME}");
+ }
+
}
-
-sub check_parameters {
-
- my $self = shift;
- my %params = @_;
-
- my @unknown;
- my @unsupported;
-
-
- foreach my $par (keys %params){
- next if ($par eq "ns_prefix" ||
- $par eq "param_ns_prefix" ||
- $par eq "subject_ns_prefix" ||
- $par eq "subject_ns_uri" ||
- $par eq "param_ns_uri" ||
- $par eq "parameter_ID" ||
- $par eq "metaID" ||
- $par eq "address" ||
- $par eq "metadatakey"
- );
- next if exists $self->{"known_parameters"}{$par};
- if (exists $self->{"unsupported_parameters"}->{$par}){
- push @unsupported, $par;
- } else {
- push @unknown, $par;
- }
-
- }
-#TODO
- if ($#unknown >= 0){
- my $error = "Unknown parameter(s): " . join (", ", @unknown);
- return $error;
- }
-
- if ($#unsupported >= 0){
- my $error = "Unsupported parameters(s): " . join (", ", @unsupported);
- return $error;
- }
-}
-
-
-sub print_log_id {
- my ($self, $level,$message) = @_;
- print_log($level,$message,$self->{"service_id"});
-}
-
1;
Deleted: trunk/lib/perfSONAR/OWAMP.pm
===================================================================
--- trunk/lib/perfSONAR/OWAMP.pm 2011-03-07 10:07:09 UTC (rev 685)
+++ trunk/lib/perfSONAR/OWAMP.pm 2011-03-07 10:09:39 UTC (rev 686)
@@ -1,150 +0,0 @@
-package perfSONAR::OWAMP;
-#
-# Copyright 2010 Verein zur Foerderung eines Deutschen Forschungsnetzes e.
V.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-
-use strict;
-use warnings;
-
-#DEBUG
-use Data::Dumper;
-#DEBUG
-
-#composing of commandline and parsing of results of owamp
-
-
-sub commandline {
- my %parameters = @_;
- #print Dumper(\%parameters);
- my $commandline = "";
-
- $commandline = $commandline . " -S $parameters{src}"
if($parameters{"src"});
- $commandline = $commandline . " -c $parameters{count}"
if($parameters{"count"});
- $commandline = $commandline . " -L $parameters{timeout}"
if($parameters{"timeout"});
- $commandline = $commandline . " -s $parameters{size}"
if($parameters{"size"});
- $commandline = $commandline . " -H $parameters{PHB}"
if($parameters{"PHB"});
- $commandline = $commandline . " -D $parameters{DSCP}"
if($parameters{"DSCP"});
- $commandline = $commandline . " -i $parameters{send_schedule}"
if($parameters{"send_schedule"});
- $commandline = $commandline . " -E $parameters{enddelay}"
if($parameters{"enddelay"});
- $commandline = $commandline . " -z $parameters{startdelay}"
if($parameters{"startdelay"});
- $commandline = $commandline . " -b $parameters{bucket_width}"
if($parameters{"bucket_width"});
- $commandline = $commandline . " -N $parameters{intermediates}"
if($parameters{"intermediates"});
- $commandline = $commandline . " -v" if ($parameters{"output"} &&
($parameters{"output"} eq "per_packet"));
- $commandline = $commandline . " -M" if ($parameters{"output"} &&
($parameters{"output"} eq "machine_readable"));
- $commandline = $commandline . " -R" if ($parameters{"output"} &&
($parameters{"output"} eq "raw"));
- $commandline = $commandline . " -P $parameters{portrange}"
if($parameters{"portrange"});
- $commandline = $commandline . " -a" if($parameters{"percentile"});
- $commandline = $commandline . " -f" if($parameters{"one_way"} &&
($parameters{"one_way"} eq "from"));
- $commandline = $commandline . " -t" if($parameters{"one_way"} &&
($parameters{"one_way"} eq "to"));
- $commandline = $commandline . " $parameters{dst}" if ($parameters{"dst"});
- $commandline = $commandline . ":$parameters{port}" if
($parameters{"port"});
-
-
- print "commandline: $commandline\n";
- return $commandline;
-}
-
-sub parse_result {
- my $type = shift;
- my @result = @_;
- my @datalines;
Dumper(\@result);
-
- #output raw data:
- #SEQNO SENDTIME SSYNC SERR RECVTIME RSYNC RERR
- #if ($type eq "raw"){
- if ($type eq "ippm"){
- foreach my $resultline (@result){
- next unless ($resultline =~
- /(\d+)\s*(\d+)\s*(\d+)\s(.+)\s(\d+)\s(\d+)\s(.+)/);
- my %data_hash;
- $data_hash{"seq_number"} = $1;
- $data_hash{"send_time"} = $2;
- $data_hash{"sender_sync"} = $3;
- $data_hash{"sender_error"} = $4;
- $data_hash{"receive_time"} = $5;
- $data_hash{"receiver_sync"} = $6;
- $data_hash{"receiver_error"} = $7;
- push @datalines, \%data_hash;
- }
- #output individual delay data:
- #seq_no delay sync precision
- } elsif ($type eq "per_packet") {
- print "individual delay\n";
- foreach my $resultline (@result){
- next unless ($resultline =~
-
#/seq_no=(\d+)\s+delay=(.+)\s+(\w+)\s+\((\w+),\s+precision\s+(.+)\s+(\w+)/);
- /seq_no=(\d+)\s+delay=(.+)\s+(\w+)\s+\((\w+),\s+err=(.+)\s+(\w+)/);
- my %data_hash;
- $data_hash{"seq_number"} = $1;
- $data_hash{"delay"} = $2;
- $data_hash{"delay_units"} = $3;
- $data_hash{"sync"} = $4;
- $data_hash{"error"} = $5;
- $data_hash{"error_units"} = $6;
- push @datalines, \%data_hash;
- }
- } elsif ($type eq "machine_readable") { #TODO!
- foreach my $resultline (@result){
- next if $resultline =~ /Approximately/;
- next if $resultline =~ /BUCKETS/;
- next if $resultline =~ /^\s+/; #TODO buckets
- #$resultline =~ s/^\s+//;
- my %data_hash;
- my ($key, $value) = split (/\s+/, $resultline);
- $data_hash{$key} = $value;
- push @datalines, \%data_hash;
- }
- #output summarized (default):
- } else {
- foreach my $resultline (@result){
- if ($resultline =~
- #10 sent, 0 lost (0.000%), 0 duplicates
- #/(\d+)\spackets transmitted,\s(\d+)\spackets
lost\s\((\d+\.\d+\%)/){
- /(\d+)\s+sent,\s+(\d+)\s+lost\s+\((\S+)\),\s+(\d+)\s+duplicates/){
- my %data_hash;
- $data_hash{"number_of_packets"} = $1;
- $data_hash{"lost_packets"} = $2;
- $data_hash{"lost_percent"} = $3;
- $data_hash{"duplicate_packets"} = $4;
- push @datalines, \%data_hash;
- } elsif ($resultline =~
- #one-way delay min/median/max = 0.202/0.4/0.582 ms, (err=0.628 ms)
- /one-way delay min\/median\/max =
(\S+\/\S+\/\S+)\s+(\w+),\s+\(err=(.+)\s+(\w+)/){
- my %data_hash;
- my $delay = $1;
- my ($min,$med,$max) = split ("/", $delay);
- $data_hash{"delay_min"} = $min;
- $data_hash{"delay_med"} = $med;
- $data_hash{"delay_max"} = $max;
- $data_hash{"delay_units"} = $2;
- $data_hash{"error"} = $3;
- $data_hash{"error_units"} = $4;
- push @datalines, \%data_hash;
- } else { next; }
- }
-
- }
- if($#datalines < 0){
- #no data -> something wrong, write result as error description:
- $datalines[0]="OWPING Error:";
- foreach my $resultline (@result){
- push @datalines, $resultline;
- }
- }
- return @datalines;
-}
-1;
Modified: trunk/lib/perfSONAR/SOAP/HTTP/UserAgent.pm
===================================================================
--- trunk/lib/perfSONAR/SOAP/HTTP/UserAgent.pm 2011-03-07 10:07:09 UTC (rev
685)
+++ trunk/lib/perfSONAR/SOAP/HTTP/UserAgent.pm 2011-03-07 10:09:39 UTC (rev
686)
@@ -28,7 +28,7 @@
use Carp;
use LWP::UserAgent;
-
+use perfSONAR::SOAP::HTTP::Response;
use base 'LWP::UserAgent';
Modified: trunk/lib/perfSONAR.pm
===================================================================
--- trunk/lib/perfSONAR.pm 2011-03-07 10:07:09 UTC (rev 685)
+++ trunk/lib/perfSONAR.pm 2011-03-07 10:09:39 UTC (rev 686)
@@ -30,7 +30,7 @@
@ISA = qw(Exporter);
# set the version for version checking
- $VERSION = 0.51;
+ $VERSION = 0.53;
# if using RCS/CVS, this may be preferred
#$VERSION = sprintf "%d.%03d", q$Revision: 1.1 $ =~ /(\d+)/g;
@EXPORT = qw(); # Symbols to autoexport (:DEFAULT tag)
@@ -41,229 +41,72 @@
use Carp;
-use perfSONAR::SOAP::HTTP::Request;
-use perfSONAR::SOAP::HTTP::Response;
-use perfSONAR::SOAP::HTTP::UserAgent;
-#use perfSONAR::Echo;
-use NMWG;
-use NMWG::Message;
+use Log::Log4perl qw(get_logger);
-our $log = undef;
-our %services = ();
+=head1 NAME
-my $echo_et = "http://schemas.perfsonar.net/tools/admin/echo/2.0";
+perfSONAR
-sub handle_request {
- my $class = shift; # TODO
- my ($uri,$reqmsg) = (@_);
- my $xmlmsg = $reqmsg->as_string;
- print_log("info","Received message");
- print_log("debug","Raw Message:\n$xmlmsg");
- #print_log("debug","Parsed Message:\n" . Dumper($reqmsg));
- # How to print DOM tree? Useful???
+=head1 DESCRIPTION
- my $service = undef;
+Use this to have a starting point to use all availible services.
- #if no accesspoint is given we do not know what service is meant!
- if (!$uri){
- croak "No service specified!";
- } else {
- ($service = $uri) =~ s/^.*\/services\///;
- $service =~ s/\/$//;
- my $serviceurl = $service;
- print_log("info", "Service: $service");
- if (!$services{$service}){
- croak "Service $serviceurl not known!";
- }
- }
+=head1 Methods
- my @module_ets =
@{$services{$service}->{"handler"}->{"supportedEventtypes"}};
- push @module_ets, $echo_et;
+=cut
+#This are the globals
+our %services = ();
+my $echo_et = "http://schemas.perfsonar.net/tools/admin/echo/2.0";
- my $messagetype = $reqmsg->get_message_type();
- if ($messagetype eq "ErrorResponse"){ #error from authentication!
- return $reqmsg;
- }
- if ($messagetype eq "AuthNEERequest"){ #authorization rquest to dummy AS
- require perfSONAR::AS;
- return perfSONAR::AS::dummy();
- }
- if ($messagetype eq "SetupDataRequest"){
- $reqmsg->set_message_type("SetupDataResponse");
- }
- elsif ($messagetype eq "MeasurementRequest"){
- $reqmsg->set_message_type("MeasurementResponse");
- }
- elsif ($messagetype eq "MetadataKeyRequest"){
- $reqmsg->set_message_type("MetadataKeyResponse");
- }
- elsif ($messagetype =~ /EchoRequest/){
- $reqmsg->set_message_type("EchoResponse");
- }
- else {
- my $errorstring = "Unknown messagetype: $messagetype";
- print_log("info",$errorstring);
- $reqmsg->set_message_type("ErrorResponse");
- $reqmsg->return_result_code("error.common.action_not_supported",
"$errorstring", "message");
- return $reqmsg;
- }
+#TODO
+#Replace complete NMWG from this handler
+#to make it more flexible
+#replace by DataStruct
- #create $reqmsg->{"dataIDs"} and
- # $reqmsg->{"metadataIDs"} hashes from document
- my ($errorstring, $metaid) = $reqmsg->parse_all;
- if($errorstring){
- print_log("info",$errorstring);
- $reqmsg->return_result_code("error.common.parse_error", "$errorstring",
$metaid);
- return $reqmsg;
- }
+=head2 handle_request(uri,requestMessage)
- #check if at least one metadata and one data element is in message
- if(!($reqmsg->{"metadataIDs"})){
- $errorstring = "No metadata definition in message.";
- print_log("info",$errorstring);
- $reqmsg->return_result_code("error.common.message", "$errorstring",
"message");
- return $reqmsg;
- }
+ starts all requested EventTypes included in the request.
+ Need two parameters which are uri and requestMessage.
+ The parameters should have the following types:
+
+ uri STRING => complette link for the service
+
+ requestMessage
+
+ returns t
+=back
- if(!(defined $reqmsg->{"dataIDs"})){
- $errorstring = "No data trigger in message.";
- print_log("info",$errorstring);
- $reqmsg->return_result_code("error.common.message", "$errorstring",
"message");
- return $reqmsg;
- }
+=cut
+sub handle_request {
- #do some checks on metadata content
- foreach my $meta (keys %{$reqmsg->{"metadataIDs"}}){
- #check for unknown eventTypes
- my $et = $reqmsg->{"metadataIDs"}{$meta}{"eventType"};
- if ($et =~ /admin/){ #dispatch to Echo module
- return perfSONAR::Echo::handle_echo_request($reqmsg, $service);
- return $reqmsg;
+ my ($self, $ds) = @_;
+ my $logger = get_logger(__PACKAGE__);
+ my @datalines;
+
+ #look if service is availible
+ if (! $ds->{SERVICES}->{$ds->{SERVICE}->{NAME}}){
+ my $errormsg = "Requested service: $ds->{SERVICE}->{NAME} is not
availible";
+ $logger->error($errormsg);
+ $ds->{ERROROCCUR} = 1;
+ $datalines[0]="Service request Error:";
+ push @datalines, $errormsg;
+ push @datalines, "error.common.service_not_availible";
+ $ds->{PARAMS}->{"1"}->{MRESULT} =
\@datalines;
+ $ds->{$ds->{DSTYPE}}->parseResult(\$ds);
+ return;
}
-
- my $found = undef;
- #foreach my $sup_et (@{$services{$service}{"eventtype"}}){
- foreach my $sup_et (@module_ets){
- next unless ($sup_et =~ /$et/);
- $found = 1;
+
+ if ($ds->{DOECHO}){
+
$ds->{SERVICES}->{$ds->{SERVICE}->{NAME}}->{handler}->handle_echo_request(\$ds);
+ }else{
+ $ds->{SERVICES}->{$ds->{SERVICE}->{NAME}}->{handler}->run(\$ds);
}
- if (!defined $found){
- my $errorstring = "Unknown eventType: $et";
- print_log("info",$errorstring);
- $reqmsg->return_result_code("error.common.parse_error", $errorstring,
$meta);
- return $reqmsg;
- }
- #check times
- my $startTime = $reqmsg->{"metadataIDs"}{$meta}{"startTime"};
- my $endTime = $reqmsg->{"metadataIDs"}{$meta}{"endTime"};
- if ($endTime && $startTime && ($endTime < $startTime)){
- my $errorstring = "Illegal time duration specified: " .
- "$endTime is later than $startTime!";
- print_log("info",$errorstring);
- $reqmsg->return_result_code("error.common.parse_error", $errorstring,
$meta);
- return $reqmsg;
- }
- }
-
- #add metadata parameters to data hashes
- ($errorstring, $metaid) = $reqmsg->concatenate_params;
- if ($errorstring){
- print_log("info", $errorstring);
- $reqmsg->return_result_code("error.common.parse_error", "$errorstring",
$metaid);
- return $reqmsg;
- }
-
- #DEBUG output:
- print Dumper ($reqmsg->{"dataIDs"});
- #print Dumper ($reqmsg->{"metadataIDs"});
-
-
- #initialize data module
- $services{$service}->{handler}->open_request();
-
- #start action for each data block
- foreach my $dataid (keys %{$reqmsg->{"dataIDs"}}){
- $services{$service}->{handler}->start_action($reqmsg, $dataid, $service);
- }
-
- $services{$service}->{handler}->close_request();
-
- return $reqmsg;
-}
-
-
-sub sendReceive {
- my %p = (
- message => undef,
- host => "localhost",
- port => "8090",
- endpoint => "/",
- uri => "",
- soapheader => "", #TODO TODO noch nicht fertig und kein String!
- @_
- );
-
- my $uri = $p{uri} || "http://$p{host}:$p{port}$p{endpoint}";
- my $body = $p{message}->as_dom;
-
- # Message is NMWG::Message
- my $message = perfSONAR::SOAP::Message->new(
- body => $body,
- uri => $uri
- );
- # Modify SOAP header using $message or set via "new" call directly
-
- my $userAgent = perfSONAR::SOAP::HTTP::UserAgent->new;
- my $request = perfSONAR::SOAP::HTTP::Request->new(message => $message);
-
- my $response = $userAgent->request($request);
- unless ($response->is_success) {
- # HTTP error
- #my $code = $response->code();
- #my $message = $response->message();
- carp $response->status_line if $^W; # "<code> <message>"
- return;
- }
-
- my $soap_message = $response->soap_message;
- if ($soap_message->is_fault) {
- carp "TODO" if $^W;
- return;
- }
-
- my $nmwg_message = NMWG::Message->new( ($soap_message->body)[0] );
- #TODO This should perhaps be
NMWG::Message->from_soap_message($soap_message);
+ $ds->{$ds->{DSTYPE}}->parseResult(\$ds);
- return $nmwg_message;
}
-
-sub print_log_old {
- my ($level,$message) = @_;
-
- if (defined $log) {
- $level = "debug" unless $log->level_is_valid($level);
- $log->log(level => $level, message => $message);
- } else {
- print STDERR "$level: $message\n";
- }
- return 1;
-}
-
-sub print_log {
- my ($level,$message,$service) = @_;
-
- if (defined $log) {
- $level = "debug" unless $log->level_is_valid($level);
- $log->log(level => $level, service => $service, message => $message);
- } else {
- print STDERR ($service ? "$service: " : "unknown service: ") .
- "$level: $message\n";
- }
- return 1;
-}
-1;
+1;
\ No newline at end of file
Modified: trunk/t/perfSONAR-001-SOAP-Message.t
===================================================================
--- trunk/t/perfSONAR-001-SOAP-Message.t 2011-03-07 10:07:09 UTC (rev
685)
+++ trunk/t/perfSONAR-001-SOAP-Message.t 2011-03-07 10:09:39 UTC (rev
686)
@@ -7,6 +7,10 @@
use Test::More tests => 75;
+use FindBin;
+use lib "$FindBin::RealBin/../lib";
+
+
BEGIN {
# Third party modules:
use_ok('XML::LibXML');
Modified: trunk/t/perfSONAR-002-Core.t
===================================================================
--- trunk/t/perfSONAR-002-Core.t 2011-03-07 10:07:09 UTC (rev 685)
+++ trunk/t/perfSONAR-002-Core.t 2011-03-07 10:09:39 UTC (rev 686)
@@ -3,8 +3,13 @@
use strict;
use warnings;
-use Test::More tests => 48;
+use Test::More tests => 50;
+
+use FindBin;
+use lib "$FindBin::RealBin/../lib";
+
+
BEGIN {
# Third party modules:
use_ok('XML::LibXML');
@@ -15,6 +20,9 @@
use_ok('perfSONAR::SOAP::HTTP::Request');
use_ok('perfSONAR::SOAP::HTTP::Response');
use_ok('perfSONAR::SOAP::HTTP::UserAgent');
+ #DataStruct is availible
+ use_ok('perfSONAR::DataStruct');
+ use_ok('perfSONAR::DataStruct::NMWG');
}
Copied: trunk/tools/perfSONAR-client/README (from rev 684,
branches/perfsonar-oppd-new-architect/tools/perfSONAR-client/README)
===================================================================
--- trunk/tools/perfSONAR-client/README (rev 0)
+++ trunk/tools/perfSONAR-client/README 2011-03-07 10:09:39 UTC (rev 686)
@@ -0,0 +1,10 @@
+REQUESTS BY COMMANDLINE
+=========================
+
+At tte moment oppd supports following requests:
+ * BWCTL MP
+ * OWAMP MP
+
+To see if this services are available use the ECHO request.
+For this use a normal request endpoint. For example: MP/BWCTL.
+Look at the files in this directory for more details.
Deleted: trunk/tools/perfSONAR-client/bulk-request.xml
===================================================================
--- trunk/tools/perfSONAR-client/bulk-request.xml 2011-03-07 10:07:09
UTC (rev 685)
+++ trunk/tools/perfSONAR-client/bulk-request.xml 2011-03-07 10:09:39
UTC (rev 686)
@@ -1,33 +0,0 @@
-<nmwg:message xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/"
- xmlns:nmwgm="http://ggf.org/ns/nmwg/time/2.0/"
- xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/"
- xmlns:select="http://ggf.org/ns/nmwg/ops/select/2.0/"
- xmlns:hades="http://ggf.org/ns/nmwg/tools/hades/"
- id="1208356112" type="MetadataKeyRequest">
- <nmwg:metadata id="keymeta">
- <key:subject id="keysubject"/>
- <key:parameters id ="keyparam1">
- <nmwg:parameter name="transfer" value="bulk"/>
- <nmwg:parameter name="format" value="perl-storable"/>
- <nmwg:parameter name="validity" value="30000"/> #seconds?
- </key:parameters>
- </nmwg:metadata>
- <nmwg:metadata id="meta1" metadataIdRef="keymeta">
- <hades:subject id="subject1">
- <nmwgt:endPointPair>
- <nmwgt:src type="IFname" value="Ljubljana_ARNES"/>
- <nmwgt:dst type="IFname" value="Amsterdam_SURFnet"/>
- </nmwgt:endPointPair>
- </hades:subject>
- <nmwg:eventType>http://ggf.org/ns/nmwg/tools/hades/</nmwg:eventType>
- </nmwg:metadata>
- <nmwg:metadata id="meta2" metadataIdRef="meta1">
- <select:subject id="subject2"/>
- <select:parameters id="param1">
- <nmwg:parameter name="startTime">1208296800</nmwg:parameter>
- <nmwg:parameter name="endTime">1208383200</nmwg:parameter>
- </select:parameters>
- <nmwg:eventType>http://ggf.org/ns/nmwg/ops/select/</nmwg:eventType>
- </nmwg:metadata>
- <nmwg:data id="data1" metadataIdRef="meta2"/>
-</nmwg:message>
Copied: trunk/tools/perfSONAR-client/bwctl-iperf-req-more-data.xml (from rev
684,
branches/perfsonar-oppd-new-architect/tools/perfSONAR-client/bwctl-iperf-req-more-data.xml)
===================================================================
--- trunk/tools/perfSONAR-client/bwctl-iperf-req-more-data.xml
(rev 0)
+++ trunk/tools/perfSONAR-client/bwctl-iperf-req-more-data.xml 2011-03-07
10:09:39 UTC (rev 686)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<nmwg:message type="SetupDataRequest"
+ id="bwctl-request"
+ xmlns="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
+ xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/"
+ xmlns:nmtm="http://ggf.org/ns/nmwg/time/2.0/"
+ xmlns:select="http://ggf.org/ns/nmwg/ops/select/2.0/"
+ xmlns:bwctl="http://ggf.org/ns/nmwg/tools/bwctl/2.0/"
+ xmlns:iperf="http://ggf.org/ns/nmwg/tools/iperf/2.0/"
+ xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+
+ <nmwg:metadata id="bwctl-metadata">
+ <bwctl:subject id="bwctl-subject">
+ <nmwgt:endPoint type="ipv4" value="130.59.35.142"/>
+ </bwctl:subject>
+
+ <nmwg:eventType>http://ggf.org/ns/nmwg/tools/bwctl/2.0</nmwg:eventType>
+ <bwctl:parameters id="bwctl-parameters">
+ <nmwg:parameter name="duration" value="5"/>
+ </bwctl:parameters>
+ </nmwg:metadata>
+
+ <nmwg:metadata id="iperf-metadata">
+ <iperf:subject id="iperf-subject" metadataIdRef="bwctl-metadata">
+ <nmwgt:endPointPair>
+ <nmwgt:src type="ipv4" value="130.59.35.142"/>
+ <nmwgt:dst type="ipv4" value="195.111.107.114"/>
+ </nmwgt:endPointPair>
+ </iperf:subject>
+ <iperf:parameters id="iperf-parameters">
+ <nmwg:parameter name="interval" value="2"/>
+ <nmwg:parameter name="protocol" value="tcp"/>
+ </iperf:parameters>
+ <nmwg:eventType>http://ggf.org/ns/nmwg/tools/iperf/2.0</nmwg:eventType>
+ </nmwg:metadata>
+
+ <!-- triggers to indicate head of chains -->
+
+ <nmwg:data id="1" metadataIdRef="iperf-metadata"/>
+ <nmwg:data id="2" metadataIdRef="iperf-metadata"/>
+ <nmwg:data id="3" metadataIdRef="iperf-metadata"/>
+
+</nmwg:message>
Modified: trunk/tools/perfSONAR-client/bwctl-iperf-req2.xml
===================================================================
--- trunk/tools/perfSONAR-client/bwctl-iperf-req2.xml 2011-03-07 10:07:09
UTC (rev 685)
+++ trunk/tools/perfSONAR-client/bwctl-iperf-req2.xml 2011-03-07 10:09:39
UTC (rev 686)
@@ -12,7 +12,7 @@
<nmwg:metadata id="bwctl-metadata">
<bwctl:subject id="bwctl-subject">
- <nmwgt:endPoint type="ipv4" value="131.188.81.12"/>
+ <nmwgt:endPoint type="ipv4" value="130.59.35.142"/>
</bwctl:subject>
<nmwg:eventType>http://ggf.org/ns/nmwg/tools/bwctl/2.0</nmwg:eventType>
@@ -24,8 +24,8 @@
<nmwg:metadata id="iperf-metadata">
<iperf:subject id="iperf-subject" metadataIdRef="bwctl-metadata">
<nmwgt:endPointPair>
- <nmwgt:src type="ipv4" value="131.188.81.12"/>
- <nmwgt:dst type="ipv4" value="131.188.81.90"/>
+ <nmwgt:src type="ipv4" value="130.59.35.142"/>
+ <nmwgt:dst type="ipv4" value="195.111.107.114"/>
</nmwgt:endPointPair>
</iperf:subject>
<iperf:parameters id="iperf-parameters">
Modified: trunk/tools/perfSONAR-client/bwctl-test
===================================================================
--- trunk/tools/perfSONAR-client/bwctl-test 2011-03-07 10:07:09 UTC (rev
685)
+++ trunk/tools/perfSONAR-client/bwctl-test 2011-03-07 10:09:39 UTC (rev
686)
@@ -1 +1 @@
-./perfsonar-client.pl --reqfile=bwctl-iperf-req2.xml
--uri=http://radagast.rrze.uni-erlangen.de:3070/services/MP/BWCTL
--host=radagast.rrze.uni-erlangen.de --port=3070
+./perfsonar-client.pl --reqfile=message.xml
--uri=http://calim.rrze.uni-erlangen.de:8090/services/MP/BWCTL
--host=calim.rrze.uni-erlangen.de --port=80900
Copied: trunk/tools/perfSONAR-client/bwctl-test-ARNES (from rev 684,
branches/perfsonar-oppd-new-architect/tools/perfSONAR-client/bwctl-test-ARNES)
===================================================================
--- trunk/tools/perfSONAR-client/bwctl-test-ARNES
(rev 0)
+++ trunk/tools/perfSONAR-client/bwctl-test-ARNES 2011-03-07 10:09:39
UTC (rev 686)
@@ -0,0 +1 @@
+./perfsonar-client.pl --reqfile=$1
--uri=http://193.2.63.2:8090/services/MP/BWCTL
Copied: trunk/tools/perfSONAR-client/bwctl-test-calim (from rev 684,
branches/perfsonar-oppd-new-architect/tools/perfSONAR-client/bwctl-test-calim)
===================================================================
--- trunk/tools/perfSONAR-client/bwctl-test-calim
(rev 0)
+++ trunk/tools/perfSONAR-client/bwctl-test-calim 2011-03-07 10:09:39
UTC (rev 686)
@@ -0,0 +1 @@
+./perfsonar-client.pl --reqfile=$1
--uri=http://calim.rrze.uni-erlangen.de:8090/services/MP/BWCTL
--host=calim.rrze.uni-erlangen.de --port=80900
Deleted: trunk/tools/perfSONAR-client/generic-req-which.xml
===================================================================
--- trunk/tools/perfSONAR-client/generic-req-which.xml 2011-03-07 10:07:09
UTC (rev 685)
+++ trunk/tools/perfSONAR-client/generic-req-which.xml 2011-03-07 10:09:39
UTC (rev 686)
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
- <nmwg:message xmlns:nmtm="http://ggf.org/ns/nmwg/time/2.0/"
- xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/"
- xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/"
- xmlns:select="http://ggf.org/ns/nmwg/ops/select/2.0/"
- xmlns:generic="http://ggf.org/ns/nmwg/tools/generic/2.0/"
- type="SetupDataRequest">
- <nmwg:metadata id="status_meta">
- <generic:subject id="status_subject">
- <nmwgt:endPointPair>
- <nmwgt:src value="131.188.81.12" type="ipv4"/>
- <nmwgt:dst value="131.188.81.12" type="ipv4"/>
- </nmwgt:endPointPair>
- </generic:subject>
- <generic:parameters id="gen-params">
- <nmwg:parameter name="command" value="which"/>
- <nmwg:parameter name="commandline" value="ping"/>
- </generic:parameters>
-
<nmwg:eventType>http://ggf.org/ns/nmwg/tools/generic/2.0/</nmwg:eventType>
- </nmwg:metadata>
- <nmwg:data id="data1" metadataIdRef="status_meta"/>
- </nmwg:message>
Deleted: trunk/tools/perfSONAR-client/generic-req.xml
===================================================================
--- trunk/tools/perfSONAR-client/generic-req.xml 2011-03-07 10:07:09
UTC (rev 685)
+++ trunk/tools/perfSONAR-client/generic-req.xml 2011-03-07 10:09:39
UTC (rev 686)
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
- <nmwg:message xmlns:nmtm="http://ggf.org/ns/nmwg/time/2.0/"
- xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/"
- xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/"
- xmlns:select="http://ggf.org/ns/nmwg/ops/select/2.0/"
- xmlns:generic="http://ggf.org/ns/nmwg/tools/generic/2.0/"
- type="SetupDataRequest">
- <nmwg:metadata id="status_meta">
- <generic:subject id="status_subject">
- <nmwgt:endPointPair>
- <nmwgt:src value="131.188.81.12" type="ipv4"/>
- <nmwgt:dst value="131.188.81.12" type="ipv4"/>
- </nmwgt:endPointPair>
- </generic:subject>
- <generic:parameters id="gen-params">
- <nmwg:parameter name="command" value="pingling"/>
- <nmwg:parameter name="commandline" value="131.188.81.30 -c 5"/>
- </generic:parameters>
-
<nmwg:eventType>http://ggf.org/ns/nmwg/tools/generic/2.0/</nmwg:eventType>
- </nmwg:metadata>
- <nmwg:data id="data1" metadataIdRef="status_meta"/>
- </nmwg:message>
Deleted: trunk/tools/perfSONAR-client/generic-test
===================================================================
--- trunk/tools/perfSONAR-client/generic-test 2011-03-07 10:07:09 UTC (rev
685)
+++ trunk/tools/perfSONAR-client/generic-test 2011-03-07 10:09:39 UTC (rev
686)
@@ -1 +0,0 @@
-./perfsonar-client.pl --reqfile=generic-req.xml
--uri=http://radagast.rrze.uni-erlangen.de:3070/services/MP/GENERIC
--host=radagast.rrze.uni-erlangen.de
Modified: trunk/tools/perfSONAR-client/hades-test
===================================================================
--- trunk/tools/perfSONAR-client/hades-test 2011-03-07 10:07:09 UTC (rev
685)
+++ trunk/tools/perfSONAR-client/hades-test 2011-03-07 10:09:39 UTC (rev
686)
@@ -1 +1 @@
-./perfsonar-client.pl --reqfile=hades-psui-req1.xml
--uri=http://radagast.rrze.uni-erlangen.de:3070/services/MA/HADES/GEANT
--host=radagast.rrze.uni-erlangen.de
+./perfsonar-client.pl --reqfile=hades-request.xml
--uri=http://calim.rrze.uni-erlangen.de:8090/services/MA/HADES/MYDOMAIN
--host=calim.rrze.uni-erlangen.de
Deleted: trunk/tools/perfSONAR-client/hoplist-request.xml
===================================================================
--- trunk/tools/perfSONAR-client/hoplist-request.xml 2011-03-07 10:07:09
UTC (rev 685)
+++ trunk/tools/perfSONAR-client/hoplist-request.xml 2011-03-07 10:09:39
UTC (rev 686)
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
- <nmwg:message xmlns:nmtm="http://ggf.org/ns/nmwg/time/2.0/"
- xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/"
- xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/"
- xmlns:select="http://ggf.org/ns/nmwg/ops/select/2.0/"
-
xmlns:hoplist="http://ggf.org/ns/nmwg/tools/hades/traceroute/hoplist/2.0/"
- type="SetupDataRequest">
- <nmwg:metadata id="status_meta">
- <hoplist:subject id="status_subject">
- <nmwgt:endPointPair>
- <nmwgt:src value="Poznan_GEANT" type="IFName"/>
- <nmwgt:dst value="Frankfurt_GEANT" type="IFName"/>
- </nmwgt:endPointPair>
- </hoplist:subject>
-
<nmwg:eventType>http://ggf.org/ns/nmwg/tools/hades/traceroute/hoplist/2.0</nmwg:eventType>
- </nmwg:metadata>
- <nmwg:metadata id="select_meta">
- <select:subject id="select_subject" metadataIdRef="status_meta"/>
-
<nmwg:eventType>http://ggf.org/ns/nmwg/ops/select/2.0</nmwg:eventType>
- <select:parameters id="param2">
- <nmwg:parameter name="startTime">1222706430</nmwg:parameter>
- <nmwg:parameter name="endTime">1222766430</nmwg:parameter>
- </select:parameters>
- </nmwg:metadata>
- <nmwg:data id="data1" metadataIdRef="select_meta"/>
- </nmwg:message>
Deleted: trunk/tools/perfSONAR-client/hoplist-test
===================================================================
--- trunk/tools/perfSONAR-client/hoplist-test 2011-03-07 10:07:09 UTC (rev
685)
+++ trunk/tools/perfSONAR-client/hoplist-test 2011-03-07 10:09:39 UTC (rev
686)
@@ -1 +0,0 @@
-./perfsonar-client.pl --reqfile=hoplist-fault-request.xml
--uri=http://radagast.rrze.uni-erlangen.de:3030/services/MA/HADES/GEANT/STATUS
--host=radagast.rrze.uni-erlangen.de
Deleted: trunk/tools/perfSONAR-client/owamp-ind-req.xml
===================================================================
--- trunk/tools/perfSONAR-client/owamp-ind-req.xml 2011-03-07 10:07:09
UTC (rev 685)
+++ trunk/tools/perfSONAR-client/owamp-ind-req.xml 2011-03-07 10:09:39
UTC (rev 686)
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<nmwg:message type="SetupDataRequest"
- id="datarq2-1"
- xmlns="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
-
xmlns:perfsonar="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
- xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/"
- xmlns:nmtm="http://ggf.org/ns/nmwg/time/2.0/"
- xmlns:select="http://ggf.org/ns/nmwg/ops/select/2.0/"
- xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
-
- <nmwg:metadata id="meta1">
- <perfsonar:subject id="subj1">
- <nmwgt:endPointPair>
- <nmwgt:src type="ipv4" value="131.188.81.61"/>
- <nmwgt:dst type="ipv4" value="131.188.81.14"/>
- </nmwgt:endPointPair>
- </perfsonar:subject>
-
- <nmwg:eventType>owamp</nmwg:eventType>
- <nmwg:parameters id="param1">
- <nmwg:parameter name="individual" value="delay"/>
- <nmwg:parameter name="port" value="6767"/>
- </nmwg:parameters>
- </nmwg:metadata>
-
- <!-- triggers to indicate head of chains -->
- <nmwg:data id="1" metadataIdRef="meta1"/>
-
-
-</nmwg:message>
-
Deleted: trunk/tools/perfSONAR-client/owamp-ind2-req.xml
===================================================================
--- trunk/tools/perfSONAR-client/owamp-ind2-req.xml 2011-03-07 10:07:09
UTC (rev 685)
+++ trunk/tools/perfSONAR-client/owamp-ind2-req.xml 2011-03-07 10:09:39
UTC (rev 686)
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<nmwg:message type="SetupDataRequest"
- id="datarq2-1"
- xmlns="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
-
xmlns:perfsonar="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
- xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/"
- xmlns:nmtm="http://ggf.org/ns/nmwg/time/2.0/"
- xmlns:select="http://ggf.org/ns/nmwg/ops/select/2.0/"
- xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
-
- <nmwg:metadata id="meta1">
- <perfsonar:subject id="subj1">
- <nmwgt:endPointPair>
- <nmwgt:src type="ipv4" value="131.188.81.61"/>
- <nmwgt:dst type="ipv4" value="131.188.81.14"/>
- </nmwgt:endPointPair>
- </perfsonar:subject>
-
- <nmwg:eventType>owamp</nmwg:eventType>
- <nmwg:parameters id="param1">
- <nmwg:parameter name="individual" value="timestamps"/>
- <nmwg:parameter name="port" value="6767"/>
- </nmwg:parameters>
- </nmwg:metadata>
-
- <!-- triggers to indicate head of chains -->
- <nmwg:data id="1" metadataIdRef="meta1"/>
-
-
-</nmwg:message>
-
Copied: trunk/tools/perfSONAR-client/owamp-raw-req-01.xml (from rev 684,
branches/perfsonar-oppd-new-architect/tools/perfSONAR-client/owamp-raw-req-01.xml)
===================================================================
--- trunk/tools/perfSONAR-client/owamp-raw-req-01.xml
(rev 0)
+++ trunk/tools/perfSONAR-client/owamp-raw-req-01.xml 2011-03-07 10:09:39
UTC (rev 686)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<nmwg:message type="SetupDataRequest"
+ id="datarq2-1"
+ xmlns="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
+
xmlns:perfsonar="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
+ xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/"
+ xmlns:owamp="http://ggf.org/ns/nmwg/tools/owamp/2.0/"
+ xmlns:nmtm="http://ggf.org/ns/nmwg/time/2.0/"
+ xmlns:select="http://ggf.org/ns/nmwg/ops/select/2.0/"
+ xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+
+ <nmwg:metadata id="meta1">
+ <perfsonar:subject id="subj1">
+ <nmwgt:endPointPair>
+ <nmwgt:src type="ipv4" value="131.188.81.34"/>
+ <nmwgt:dst type="ipv4" value="131.188.81.178"/>
+ </nmwgt:endPointPair>
+ </perfsonar:subject>
+
+ <nmwg:eventType>http://ggf.org/ns/nmwg/tools/owamp/2.0</nmwg:eventType>
+ <nmwg:parameters id="param1">
+ <nmwg:parameter name="count" value="10"/>
+ <nmwg:parameter name="size" value="10"/>
+ </nmwg:parameters>
+ </nmwg:metadata>
+
+ <!-- triggers to indicate head of chains -->
+ <nmwg:data id="1" metadataIdRef="meta1"/>
+
+</nmwg:message>
Copied: trunk/tools/perfSONAR-client/owamp-raw-req-more-01.xml (from rev 684,
branches/perfsonar-oppd-new-architect/tools/perfSONAR-client/owamp-raw-req-more-01.xml)
===================================================================
--- trunk/tools/perfSONAR-client/owamp-raw-req-more-01.xml
(rev 0)
+++ trunk/tools/perfSONAR-client/owamp-raw-req-more-01.xml 2011-03-07
10:09:39 UTC (rev 686)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<nmwg:message type="SetupDataRequest"
+ id="datarq2-1"
+ xmlns="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
+
xmlns:perfsonar="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
+ xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/"
+ xmlns:owamp="http://ggf.org/ns/nmwg/tools/owamp/2.0/"
+ xmlns:nmtm="http://ggf.org/ns/nmwg/time/2.0/"
+ xmlns:select="http://ggf.org/ns/nmwg/ops/select/2.0/"
+ xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+
+
+ <nmwg:metadata id="meta2">
+ <perfsonar:subject id="subj2">
+ <nmwgt:endPointPair>
+ <nmwgt:src type="ipv4" value="131.188.81.34"/>
+ <nmwgt:dst type="ipv4" value="82.130.1.234:861"/>
+ </nmwgt:endPointPair>
+ </perfsonar:subject>
+
+ <nmwg:eventType>http://ggf.org/ns/nmwg/tools/owamp/2.0</nmwg:eventType>
+ <nmwg:parameters id="param1">
+ <nmwg:parameter name="count" value="20"/>
+ </nmwg:parameters>
+ </nmwg:metadata>
+
+ <!-- triggers to indicate head of chains -->
+ <nmwg:data id="1" metadataIdRef="meta2"/>
+ <nmwg:data id="2" metadataIdRef="meta2"/>
+ <nmwg:data id="3" metadataIdRef="meta2"/>
+ <nmwg:data id="4" metadataIdRef="meta2"/>
+
+</nmwg:message>
+
Deleted: trunk/tools/perfSONAR-client/owamp-raw-req.xml
===================================================================
--- trunk/tools/perfSONAR-client/owamp-raw-req.xml 2011-03-07 10:07:09
UTC (rev 685)
+++ trunk/tools/perfSONAR-client/owamp-raw-req.xml 2011-03-07 10:09:39
UTC (rev 686)
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<nmwg:message type="SetupDataRequest"
- id="datarq2-1"
- xmlns="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
-
xmlns:perfsonar="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
- xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/"
- xmlns:nmtm="http://ggf.org/ns/nmwg/time/2.0/"
- xmlns:select="http://ggf.org/ns/nmwg/ops/select/2.0/"
- xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
-
- <nmwg:metadata id="meta1">
- <perfsonar:subject id="subj1">
- <nmwgt:endPointPair>
- <nmwgt:src type="ipv4" value="131.188.81.61"/>
- <nmwgt:dst type="ipv4" value="131.188.81.14"/>
- </nmwgt:endPointPair>
- </perfsonar:subject>
-
- <nmwg:eventType>owamp</nmwg:eventType>
- <nmwg:parameters id="param1">
- <nmwg:parameter name="raw" value="yes"/>
- <nmwg:parameter name="port" value="6767"/>
- </nmwg:parameters>
- </nmwg:metadata>
-
- <!-- triggers to indicate head of chains -->
- <nmwg:data id="1" metadataIdRef="meta1"/>
-
-
-</nmwg:message>
-
Deleted: trunk/tools/perfSONAR-client/owamp-req.xml
===================================================================
--- trunk/tools/perfSONAR-client/owamp-req.xml 2011-03-07 10:07:09 UTC (rev
685)
+++ trunk/tools/perfSONAR-client/owamp-req.xml 2011-03-07 10:09:39 UTC (rev
686)
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<nmwg:message type="SetupDataRequest"
- id="datarq2-1"
- xmlns="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
-
xmlns:perfsonar="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
- xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/"
- xmlns:nmtm="http://ggf.org/ns/nmwg/time/2.0/"
- xmlns:select="http://ggf.org/ns/nmwg/ops/select/2.0/"
- xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
-
- <nmwg:metadata id="meta1">
- <perfsonar:subject id="subj1">
- <nmwgt:endPointPair>
- <nmwgt:src type="ipv4" value="131.188.81.61"/>
- <nmwgt:dst type="ipv4" value="131.188.81.14"/>
- </nmwgt:endPointPair>
- </perfsonar:subject>
-
- <nmwg:eventType>owamp</nmwg:eventType>
- <nmwg:parameters id="param1">
- <nmwg:parameter name="port" value="6767"/>
- </nmwg:parameters>
- </nmwg:metadata>
-
- <!-- triggers to indicate head of chains -->
- <nmwg:data id="1" metadataIdRef="meta1"/>
-
-
-</nmwg:message>
-
Deleted: trunk/tools/perfSONAR-client/psui-all-request.xml
===================================================================
--- trunk/tools/perfSONAR-client/psui-all-request.xml 2011-03-07 10:07:09
UTC (rev 685)
+++ trunk/tools/perfSONAR-client/psui-all-request.xml 2011-03-07 10:09:39
UTC (rev 686)
@@ -1,22 +0,0 @@
-<nmwg:message xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/"
- xmlns:nmwgm="http://ggf.org/ns/nmwg/time/2.0/"
- xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/"
- xmlns:select="http://ggf.org/ns/nmwg/ops/select/2.0/"
- xmlns:hades="http://ggf.org/ns/nmwg/tools/hades/"
- id="1208356112" type="MetadataKeyRequest">
- <nmwg:metadata id="meta1">
- <hades:subject id="subject1">
- <nmwgt:endpointPair/>
- </hades:subject>
- <nmwg:eventType>http://ggf.org/ns/nmwg/tools/hades/</nmwg:eventType>
- </nmwg:metadata>
- <nmwg:metadata id="meta2" metadataIdRef="meta1">
- <select:subject id="subject2"/>
- <select:parameters id="param1">
- <nmwg:parameter name="startTime">1208296800</nmwg:parameter>
- <nmwg:parameter name="endTime">1208383200</nmwg:parameter>
- </select:parameters>
- <nmwg:eventType>http://ggf.org/ns/nmwg/ops/select/</nmwg:eventType>
- </nmwg:metadata>
- <nmwg:data id="data1" metadataIdRef="meta2"/>
-</nmwg:message>
Deleted: trunk/tools/perfSONAR-client/psui-one-request.xml
===================================================================
--- trunk/tools/perfSONAR-client/psui-one-request.xml 2011-03-07 10:07:09
UTC (rev 685)
+++ trunk/tools/perfSONAR-client/psui-one-request.xml 2011-03-07 10:09:39
UTC (rev 686)
@@ -1,33 +0,0 @@
-<nmwg:message xmlns:nmtm="http://ggf.org/ns/nmwg/time/2.0/"
- xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/"
- xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/"
- xmlns:select="http://ggf.org/ns/nmwg/ops/select/2.0/"
- xmlns:hades="http://ggf.org/ns/nmwg/tools/hades/"
- id="datarq2-1" type="SetupDataRequest">
-
- <nmwg:metadata id="meta1">
- <hades:subject id="subj1">
- <nmwgt:endPointPair>
- <nmwgt:src type="IFname" value="Ljubljana_ARNES"/>
- <nmwgt:dst type="IFname" value="Amsterdam_SURFnet"/>
- </nmwgt:endPointPair>
- </hades:subject>
- <hades:parameters id="params1">
- <nmwg:parameter name="mid" value="6461"/>
- </hades:parameters>
-
- <nmwg:eventType>http://ggf.org/ns/nmwg/tools/hades/</nmwg:eventType>
- </nmwg:metadata>
-
- <nmwg:metadata id="meta2">
- <select:subject id="subj2" metadataIdRef="meta1"/>
- <nmwg:eventType>http://ggf.org/ns/nmwg/ops/select/</nmwg:eventType>
- <select:parameters id="param2">
- <nmwg:parameter name="startTime">1208296800</nmwg:parameter>
- <nmwg:parameter name="endTime">1208383200</nmwg:parameter>
- </select:parameters>
- </nmwg:metadata>
-
- <!-- triggers to indicate head of chains -->
- <nmwg:data id="1" metadataIdRef="meta2"/>
-</nmwg:message>
Deleted: trunk/tools/perfSONAR-client/status-request.xml
===================================================================
--- trunk/tools/perfSONAR-client/status-request.xml 2011-03-07 10:07:09
UTC (rev 685)
+++ trunk/tools/perfSONAR-client/status-request.xml 2011-03-07 10:09:39
UTC (rev 686)
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
- <nmwg:message xmlns:nmtm="http://ggf.org/ns/nmwg/time/2.0/"
- xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/"
- xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/"
- xmlns:select="http://ggf.org/ns/nmwg/ops/select/2.0/"
-
xmlns:status="http://ggf.org/ns/nmwg/tools/hades/traceroute/aggregated/2.0/"
- type="SetupDataRequest">
- <nmwg:metadata id="status_meta">
- <status:subject id="status_subject">
- <nmwgt:endPointPair>
- <nmwgt:src value="Poznan_GEANT" type="IFName"/>
- <nmwgt:dst value="Frankfurt_GEANT" type="IFName"/>
- </nmwgt:endPointPair>
- </status:subject>
-
<nmwg:eventType>http://ggf.org/ns/nmwg/tools/hades/traceroute/aggregated/2.0/</nmwg:eventType>
- </nmwg:metadata>
- <nmwg:metadata id="select_meta" metadataIdRef="status_meta">
- <select:subject id="select_subject"/>
-
<nmwg:eventType>http://ggf.org/ns/nmwg/ops/select/2.0</nmwg:eventType>
- <select:parameters id="param2">
- <nmwg:parameter name="startTime">1228174750</nmwg:parameter>
- <nmwg:parameter name="endTime">1228214350</nmwg:parameter>
- </select:parameters>
- </nmwg:metadata>
- <nmwg:data id="data1" metadataIdRef="select_meta"/>
- </nmwg:message>
Deleted: trunk/tools/perfSONAR-client/status-test
===================================================================
--- trunk/tools/perfSONAR-client/status-test 2011-03-07 10:07:09 UTC (rev
685)
+++ trunk/tools/perfSONAR-client/status-test 2011-03-07 10:09:39 UTC (rev
686)
@@ -1 +0,0 @@
-./perfsonar-client.pl --reqfile=status-req-psui-3.xml
--uri=http://radagast.rrze.uni-erlangen.de:3070/services/MA/HADES/STATUS
--host=radagast.rrze.uni-erlangen.de
- [pS-dev] [GEANT/SA2/SA2T3-OPPD] r686 - in trunk: build build/NMWG build/debian build/debian/libnmwg-perl-debian build/debian/perfsonar-oppd-debian build/debian/perfsonar-oppd-mp-bwctl-debian build/debian/perfsonar-oppd-mp-owamp-debian build/perfSONAR build/perfSONAR/lib/perfSONAR build/perfSONAR/t build/perfSONAR-MP-BWCTL build/perfSONAR-MP-BWCTL/lib/perfSONAR build/perfSONAR-MP-OWAMP doc etc/oppd-mdm etc/oppd-mdm/oppd.d lib lib/NMWG/schema/2.0 lib/perfSONAR lib/perfSONAR/MP lib/perfSONAR/SOAP/HTTP t tools/perfSONAR-client, svn-noreply, 03/07/2011
Archive powered by MHonArc 2.6.16.