From a9265b9368826bf07f148e74c49f365333dcec5f Mon Sep 17 00:00:00 2001 From: cvs2svn Date: Mon, 12 Sep 2005 10:17:14 +0000 Subject: [PATCH] This commit was manufactured by cvs2svn to create tag 'RELEASE_1_4_0_SC'. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Sprout from master 2005-08-08 14:17:20 UTC Aleš Křenek 'clean up install: tools to sbin, examples to examples' Cherrypick from master 2005-06-10 09:43:14 UTC Andrew McNab 'Tidy up for tag': org.gridsite.core/CHANGES org.gridsite.core/LICENSE org.gridsite.core/VERSION org.gridsite.core/doc/gacl.html org.gridsite.core/doc/install.html org.gridsite.core/doc/module.html org.gridsite.core/project/version.properties org.gridsite.core/src/Doxyfile org.gridsite.core/src/grst_admin_main.c org.gridsite.core/src/grst_gacl.c org.gridsite.core/src/grst_x509.c Cherrypick from master 2004-08-17 13:41:21 UTC Elisabetta Ronchieri 'Moved out JobIdExceptions.h cjobid.h JobId.h': org.glite.security.proxyrenewal/project/configure.properties.xml org.glite.wms-utils.jobid/interface/glite/wmsutils/jobid/JobId.h Cherrypick from master 2005-02-15 09:29:04 UTC Jiří Škrábal '- files lb_gss.* renamed to glite_gss.*': org.glite.security.gsoap-plugin/test/test_gss.cpp Cherrypick from master 2005-08-11 12:04:48 UTC Aleš Křenek 'Tagged dependencies properties file [GLBUILDER]': org.glite.lb/project/dependencies.properties Cherrypick from glite-security-proxyrenewal_branch_1_0_0_RC1 2005-08-10 18:42:48 UTC Joni Hahkala 'get the header from teh right place after the removal of the copy': org.glite.security.proxyrenewal/Makefile org.glite.security.proxyrenewal/build.xml org.glite.security.proxyrenewal/config/startup org.glite.security.proxyrenewal/interface/renewal.h org.glite.security.proxyrenewal/project/build.number org.glite.security.proxyrenewal/project/version.properties org.glite.security.proxyrenewal/src/api.c org.glite.security.proxyrenewal/src/commands.c org.glite.security.proxyrenewal/src/common.c org.glite.security.proxyrenewal/src/renew.c org.glite.security.proxyrenewal/src/renewal_locl.h org.glite.security.proxyrenewal/src/renewd.c org.glite.security.proxyrenewal/src/renewd_locl.h org.glite.security.proxyrenewal/src/voms.c Cherrypick from glite-deployment-lb_branch_2_0_0 2005-09-12 10:17:13 UTC Master Builder 'Incremented build number [GLBUILDER]': org.glite.deployment.lb/CHANGELOG org.glite.deployment.lb/config/scripts/glite-lb-config.py org.glite.deployment.lb/config/templates/glite-lb.cfg.xml org.glite.deployment.lb/doc/release_notes/release_notes.doc org.glite.deployment.lb/doc/release_notes/release_notes.html org.glite.deployment.lb/doc/release_notes/release_notes.pdf org.glite.deployment.lb/project/build.number org.glite.deployment.lb/project/glite-lb.sdf.xml.template org.glite.deployment.lb/project/lxscript-rpm.xsl org.glite.deployment.lb/project/quattor-template.xsl org.glite.deployment.lb/project/version.properties Cherrypick from glite-security-gsoap-plugin_branch_1_1_0 2005-06-02 11:00:51 UTC Jiří Škrábal '- clean connection on unsuccessfull connect': org.glite.security.gsoap-plugin/Makefile org.glite.security.gsoap-plugin/build.xml org.glite.security.gsoap-plugin/project/build.number org.glite.security.gsoap-plugin/project/configure.properties.xml org.glite.security.gsoap-plugin/project/version.properties org.glite.security.gsoap-plugin/src/glite_gsplugin.c org.glite.security.gsoap-plugin/src/stdsoap2_2.6.2.c Cherrypick from glite-wms-utils-exception_branch_1_0_0 2005-07-28 13:55:08 UTC Giuseppe Avellino 'updating version': org.glite.wms-utils.exception/build.xml org.glite.wms-utils.exception/configure.ac org.glite.wms-utils.exception/interface/glite/wmsutils/exception/Exception.h org.glite.wms-utils.exception/project/build.number org.glite.wms-utils.exception/project/version.properties org.glite.wms-utils.exception/src/Exception.cpp Cherrypick from glite-lb-server_branch_1_2_4 2005-08-11 12:01:36 UTC Aleš Křenek 'pushed version to reflect internal testing fixes': org.glite.lb.server/Makefile org.glite.lb.server/project/configure.properties.xml org.glite.lb.server/project/version.properties org.glite.lb.server/src/request.c Cherrypick from glite-lb-client_branch_2_0_0 2005-08-11 11:58:24 UTC Aleš Křenek 'pushed version to reflect internal testing fixes': org.glite.lb.client/project/version.properties org.glite.lb.client/src/prod_proto.c org.glite.lb.client/src/producer.c Cherrypick from glite-lb-common_branch_2_0_0 2005-08-11 11:57:43 UTC Aleš Křenek 'pushed version to reflect internal testing fixes': org.glite.lb.common/project/version.properties org.glite.lb.common/src/il_msg.c org.glite.lb.common/test/il_msg_test.cpp Cherrypick from glite-wms-utils-jobid_branch_1_0_0 2005-04-03 01:12:39 UTC Master Builder 'Incremented build number [GLBUILDER]': org.glite.wms-utils.jobid/build.xml org.glite.wms-utils.jobid/project/build.number org.glite.wms-utils.jobid/project/version.properties Cherrypick from glite-lb-logger_branch_1_1_1 2005-08-11 12:00:24 UTC Aleš Křenek 'pushed version to reflect internal testing fixes': org.glite.lb.logger/project/version.properties org.glite.lb.logger/src/server_msg.c Cherrypick from glite-lb_branch_1_1_0_ 2005-08-11 12:03:14 UTC Aleš Křenek 'pushed version to reflect internal testing fixes': org.glite.lb/project/version.properties Delete: org.glite.jp.client/.cvsignore org.glite.jp.client/Makefile org.glite.jp.client/build.xml org.glite.jp.client/project/build.number org.glite.jp.client/project/build.properties org.glite.jp.client/project/configure.properties.xml org.glite.jp.client/project/properties.xml org.glite.jp.client/project/tar_exclude org.glite.jp.client/project/version.properties org.glite.jp.client/src/authz.c org.glite.jp.client/src/authz.h org.glite.jp.client/src/backend.h org.glite.jp.client/src/bones_server.c org.glite.jp.client/src/builtin_plugins.h org.glite.jp.client/src/db.h org.glite.jp.client/src/feed.c org.glite.jp.client/src/feed.h org.glite.jp.client/src/file_plugin.c org.glite.jp.client/src/ftp_backend.c org.glite.jp.client/src/is_client.c org.glite.jp.client/src/jpimporter.c org.glite.jp.client/src/jptype_map.h org.glite.jp.client/src/mysql.c org.glite.jp.client/src/new_ftp_backend.c org.glite.jp.client/src/simple_server.c org.glite.jp.client/src/soap_ops.c org.glite.jp.client/src/tags.c org.glite.jp.client/src/tags.h org.glite.jp.client/src/tags_plugin.c org.glite.jp.client/src/typemap.dat org.glite.jp.common/.cvsignore org.glite.jp.common/Makefile org.glite.jp.common/build.xml org.glite.jp.common/interface/context.h org.glite.jp.common/interface/strmd5.h org.glite.jp.common/interface/type_plugin.h org.glite.jp.common/interface/types.h org.glite.jp.common/project/build.number org.glite.jp.common/project/build.properties org.glite.jp.common/project/configure.properties.xml org.glite.jp.common/project/properties.xml org.glite.jp.common/project/tar_exclude org.glite.jp.common/project/version.properties org.glite.jp.common/src/attr.c org.glite.jp.common/src/context.c org.glite.jp.common/src/stdtypes.c org.glite.jp.common/src/strmd5.c org.glite.jp.index/.cvsignore org.glite.jp.index/Makefile org.glite.jp.index/build.xml org.glite.jp.index/project/JobProvenanceIS.wsdl org.glite.jp.index/project/build.number org.glite.jp.index/project/build.properties org.glite.jp.index/project/configure.properties.xml org.glite.jp.index/project/properties.xml org.glite.jp.index/project/tar_exclude org.glite.jp.index/project/version.properties org.glite.jp.index/src/simple_server.c org.glite.jp.index/src/soap_ops.c org.glite.jp.index/src/typemap.dat org.glite.jp.primary/.cvsignore org.glite.jp.primary/Makefile org.glite.jp.primary/build.xml org.glite.jp.primary/config/glite-jp-primary-dbsetup.sql org.glite.jp.primary/examples/README.test org.glite.jp.primary/examples/jpps-test.c org.glite.jp.primary/interface/file_plugin.h org.glite.jp.primary/project/build.number org.glite.jp.primary/project/build.properties org.glite.jp.primary/project/configure.properties.xml org.glite.jp.primary/project/properties.xml org.glite.jp.primary/project/tar_exclude org.glite.jp.primary/project/version.properties org.glite.jp.primary/src/authz.c org.glite.jp.primary/src/authz.h org.glite.jp.primary/src/backend.h org.glite.jp.primary/src/bones_server.c org.glite.jp.primary/src/builtin_plugins.h org.glite.jp.primary/src/db.h org.glite.jp.primary/src/feed.c org.glite.jp.primary/src/feed.h org.glite.jp.primary/src/file_plugin.c org.glite.jp.primary/src/ftp_backend.c org.glite.jp.primary/src/is_client.c org.glite.jp.primary/src/is_client.h org.glite.jp.primary/src/jptype_map.h org.glite.jp.primary/src/mysql.c org.glite.jp.primary/src/new_ftp_backend.c org.glite.jp.primary/src/simple_server.c org.glite.jp.primary/src/soap_ops.c org.glite.jp.primary/src/tags.c org.glite.jp.primary/src/tags.h org.glite.jp.primary/src/tags_plugin.c org.glite.jp.primary/src/typemap.dat org.glite.jp.ws-interface/.cvsignore org.glite.jp.ws-interface/LICENSE org.glite.jp.ws-interface/Makefile org.glite.jp.ws-interface/build.xml org.glite.jp.ws-interface/interface/JobProvenanceIS.wsdl org.glite.jp.ws-interface/project/build.number org.glite.jp.ws-interface/project/build.properties org.glite.jp.ws-interface/project/configure.properties.xml org.glite.jp.ws-interface/project/glite-jp-ws-interface.spec org.glite.jp.ws-interface/project/properties.xml org.glite.jp.ws-interface/project/tar_exclude org.glite.jp.ws-interface/project/version.properties org.glite.jp.ws-interface/src/JobProvenancePS.xml org.glite.jp.ws-interface/src/JobProvenanceTypes.xml org.glite.jp.ws-interface/src/doc.xml org.glite.jp.ws-interface/src/puke-ug.xsl org.glite.jp.ws-interface/src/puke-wsdl.xsl org.glite.jp/.cvsignore org.glite.jp/build.xml org.glite.jp/project/build.number org.glite.jp/project/build.properties org.glite.jp/project/dependencies.properties org.glite.jp/project/glite.jp.csf.xml org.glite.jp/project/properties.xml org.glite.jp/project/run-workspace org.glite.jp/project/taskdefs.xml org.glite.jp/project/version.properties org.glite.security.proxyrenewal/src/acstack.h org.glite.security.proxyrenewal/src/newformat.h org.glite.wms-utils.exception/test/Makefile.am org.glite.wms-utils.exception/test/exception_cu_main.cpp org.glite.wms-utils.exception/test/exception_cu_suite.cpp org.glite.wms-utils.exception/test/exception_cu_suite.h org.glite.wms-utils.jobid/test/Makefile.am org.glite.wms-utils.jobid/test/jobid_cu_main.cpp org.glite.wms-utils.jobid/test/jobid_cu_suite.cpp org.glite.wms-utils.jobid/test/jobid_cu_suite.h org.glite.wms-utils.jobid/test/manipulation_cu_main.cpp org.glite.wms-utils.jobid/test/manipulation_cu_suite.cpp org.glite.wms-utils.jobid/test/manipulation_cu_suite.h --- org.glite.deployment.lb/CHANGELOG | 3 + .../config/scripts/glite-lb-config.py | 182 +- .../config/templates/glite-lb.cfg.xml | 54 +- .../doc/release_notes/release_notes.doc | Bin 267264 -> 145920 bytes .../doc/release_notes/release_notes.html | 3039 ++--- .../doc/release_notes/release_notes.pdf | Bin 217944 -> 84475 bytes org.glite.deployment.lb/project/build.number | 4 +- .../project/glite-lb.sdf.xml.template | 26 +- org.glite.deployment.lb/project/lxscript-rpm.xsl | 6 +- .../project/quattor-template.xsl | 12 + org.glite.deployment.lb/project/version.properties | 2 +- org.glite.jp.client/.cvsignore | 1 - org.glite.jp.client/Makefile | 135 - org.glite.jp.client/build.xml | 86 - org.glite.jp.client/project/build.number | 1 - org.glite.jp.client/project/build.properties | 0 .../project/configure.properties.xml | 43 - org.glite.jp.client/project/properties.xml | 44 - org.glite.jp.client/project/tar_exclude | 10 - org.glite.jp.client/project/version.properties | 2 - org.glite.jp.client/src/authz.c | 76 - org.glite.jp.client/src/authz.h | 18 - org.glite.jp.client/src/backend.h | 116 - org.glite.jp.client/src/bones_server.c | 327 - org.glite.jp.client/src/builtin_plugins.h | 7 - org.glite.jp.client/src/db.h | 83 - org.glite.jp.client/src/feed.c | 327 - org.glite.jp.client/src/feed.h | 21 - org.glite.jp.client/src/file_plugin.c | 115 - org.glite.jp.client/src/ftp_backend.c | 1744 --- org.glite.jp.client/src/is_client.c | 38 - org.glite.jp.client/src/jpimporter.c | 243 - org.glite.jp.client/src/jptype_map.h | 18 - org.glite.jp.client/src/mysql.c | 265 - org.glite.jp.client/src/new_ftp_backend.c | 1790 --- org.glite.jp.client/src/simple_server.c | 59 - org.glite.jp.client/src/soap_ops.c | 465 - org.glite.jp.client/src/tags.c | 233 - org.glite.jp.client/src/tags.h | 1 - org.glite.jp.client/src/tags_plugin.c | 148 - org.glite.jp.client/src/typemap.dat | 3 - org.glite.jp.common/.cvsignore | 1 - org.glite.jp.common/Makefile | 85 - org.glite.jp.common/build.xml | 97 - org.glite.jp.common/interface/context.h | 17 - org.glite.jp.common/interface/strmd5.h | 28 - org.glite.jp.common/interface/type_plugin.h | 49 - org.glite.jp.common/interface/types.h | 67 - org.glite.jp.common/project/build.number | 1 - org.glite.jp.common/project/build.properties | 0 .../project/configure.properties.xml | 52 - org.glite.jp.common/project/properties.xml | 52 - org.glite.jp.common/project/tar_exclude | 10 - org.glite.jp.common/project/version.properties | 2 - org.glite.jp.common/src/attr.c | 13 - org.glite.jp.common/src/context.c | 139 - org.glite.jp.common/src/stdtypes.c | 127 - org.glite.jp.common/src/strmd5.c | 115 - org.glite.jp.index/.cvsignore | 1 - org.glite.jp.index/Makefile | 129 - org.glite.jp.index/build.xml | 98 - org.glite.jp.index/project/JobProvenanceIS.wsdl | 531 - org.glite.jp.index/project/build.number | 1 - org.glite.jp.index/project/build.properties | 0 .../project/configure.properties.xml | 53 - org.glite.jp.index/project/properties.xml | 52 - org.glite.jp.index/project/tar_exclude | 10 - org.glite.jp.index/project/version.properties | 2 - org.glite.jp.index/src/simple_server.c | 39 - org.glite.jp.index/src/soap_ops.c | 81 - org.glite.jp.index/src/typemap.dat | 2 - org.glite.jp.primary/.cvsignore | 1 - org.glite.jp.primary/Makefile | 186 - org.glite.jp.primary/build.xml | 102 - .../config/glite-jp-primary-dbsetup.sql | 46 - org.glite.jp.primary/examples/README.test | 40 - org.glite.jp.primary/examples/jpps-test.c | 245 - org.glite.jp.primary/interface/file_plugin.h | 73 - org.glite.jp.primary/project/build.number | 1 - org.glite.jp.primary/project/build.properties | 0 .../project/configure.properties.xml | 58 - org.glite.jp.primary/project/properties.xml | 51 - org.glite.jp.primary/project/tar_exclude | 10 - org.glite.jp.primary/project/version.properties | 2 - org.glite.jp.primary/src/authz.c | 78 - org.glite.jp.primary/src/authz.h | 18 - org.glite.jp.primary/src/backend.h | 116 - org.glite.jp.primary/src/bones_server.c | 333 - org.glite.jp.primary/src/builtin_plugins.h | 7 - org.glite.jp.primary/src/db.h | 83 - org.glite.jp.primary/src/feed.c | 336 - org.glite.jp.primary/src/feed.h | 21 - org.glite.jp.primary/src/file_plugin.c | 115 - org.glite.jp.primary/src/ftp_backend.c | 1744 --- org.glite.jp.primary/src/is_client.c | 39 - org.glite.jp.primary/src/is_client.h | 1 - org.glite.jp.primary/src/jptype_map.h | 34 - org.glite.jp.primary/src/mysql.c | 265 - org.glite.jp.primary/src/new_ftp_backend.c | 1791 --- org.glite.jp.primary/src/simple_server.c | 59 - org.glite.jp.primary/src/soap_ops.c | 415 - org.glite.jp.primary/src/tags.c | 233 - org.glite.jp.primary/src/tags.h | 1 - org.glite.jp.primary/src/tags_plugin.c | 149 - org.glite.jp.primary/src/typemap.dat | 3 - org.glite.jp.ws-interface/.cvsignore | 2 - org.glite.jp.ws-interface/LICENSE | 69 - org.glite.jp.ws-interface/Makefile | 61 - org.glite.jp.ws-interface/build.xml | 120 - .../interface/JobProvenanceIS.wsdl | 110 - org.glite.jp.ws-interface/project/build.number | 1 - org.glite.jp.ws-interface/project/build.properties | 0 .../project/configure.properties.xml | 54 - .../project/glite-jp-ws-interface.spec | 42 - org.glite.jp.ws-interface/project/properties.xml | 73 - org.glite.jp.ws-interface/project/tar_exclude | 0 .../project/version.properties | 2 - org.glite.jp.ws-interface/src/JobProvenancePS.xml | 112 - .../src/JobProvenanceTypes.xml | 75 - org.glite.jp.ws-interface/src/doc.xml | 2 - org.glite.jp.ws-interface/src/puke-ug.xsl | 156 - org.glite.jp.ws-interface/src/puke-wsdl.xsl | 292 - org.glite.jp/.cvsignore | 1 - org.glite.jp/build.xml | 268 - org.glite.jp/project/build.number | 1 - org.glite.jp/project/build.properties | 0 org.glite.jp/project/dependencies.properties | 12 - org.glite.jp/project/glite.jp.csf.xml | 271 - org.glite.jp/project/properties.xml | 47 - org.glite.jp/project/run-workspace | 10 - org.glite.jp/project/taskdefs.xml | 24 - org.glite.jp/project/version.properties | 2 - org.glite.lb.client/project/version.properties | 2 +- org.glite.lb.client/src/prod_proto.c | 65 +- org.glite.lb.client/src/producer.c | 4 +- org.glite.lb.common/project/version.properties | 2 +- org.glite.lb.common/src/il_msg.c | 21 +- org.glite.lb.common/test/il_msg_test.cpp | 8 +- org.glite.lb.logger/project/version.properties | 2 +- org.glite.lb.server/Makefile | 57 +- .../project/configure.properties.xml | 4 + org.glite.lb.server/project/version.properties | 2 +- org.glite.lb/project/dependencies.properties | 32 +- org.glite.lb/project/version.properties | 2 +- org.glite.security.gsoap-plugin/Makefile | 7 +- org.glite.security.gsoap-plugin/build.xml | 2 +- .../project/build.number | 3 +- .../project/configure.properties.xml | 1 + .../project/version.properties | 3 +- .../src/glite_gsplugin.c | 2 + .../src/stdsoap2_2.6.2.c | 11020 +++++++++++++++++++ org.glite.security.gsoap-plugin/test/test_gss.cpp | 69 +- org.glite.security.proxyrenewal/build.xml | 3 +- .../project/build.number | 3 +- .../project/configure.properties.xml | 11 +- .../project/version.properties | 6 +- org.glite.security.proxyrenewal/src/acstack.h | 79 - org.glite.security.proxyrenewal/src/newformat.h | 195 - org.glite.security.proxyrenewal/src/voms.c | 2 +- org.glite.wms-utils.exception/build.xml | 3 +- org.glite.wms-utils.exception/configure.ac | 8 +- org.glite.wms-utils.exception/project/build.number | 3 +- .../project/version.properties | 6 +- org.glite.wms-utils.exception/src/Exception.cpp | 17 +- org.glite.wms-utils.exception/test/Makefile.am | 33 - .../test/exception_cu_main.cpp | 33 - .../test/exception_cu_suite.cpp | 56 - .../test/exception_cu_suite.h | 29 - org.glite.wms-utils.jobid/build.xml | 3 +- .../interface/glite/wmsutils/jobid/JobId.h | 28 +- org.glite.wms-utils.jobid/project/build.number | 3 +- .../project/version.properties | 6 +- org.glite.wms-utils.jobid/test/Makefile.am | 48 - org.glite.wms-utils.jobid/test/jobid_cu_main.cpp | 33 - org.glite.wms-utils.jobid/test/jobid_cu_suite.cpp | 102 - org.glite.wms-utils.jobid/test/jobid_cu_suite.h | 34 - .../test/manipulation_cu_main.cpp | 33 - .../test/manipulation_cu_suite.cpp | 34 - .../test/manipulation_cu_suite.h | 29 - org.gridsite.core/CHANGES | 6 +- org.gridsite.core/LICENSE | 4 +- org.gridsite.core/VERSION | 2 +- org.gridsite.core/doc/gacl.html | 2 +- org.gridsite.core/doc/install.html | 24 +- org.gridsite.core/doc/module.html | 79 - org.gridsite.core/project/version.properties | 2 +- org.gridsite.core/src/Doxyfile | 2 +- org.gridsite.core/src/grst_admin_main.c | 33 +- org.gridsite.core/src/grst_gacl.c | 30 +- org.gridsite.core/src/grst_x509.c | 6 +- 190 files changed, 12696 insertions(+), 19706 deletions(-) delete mode 100644 org.glite.jp.client/.cvsignore delete mode 100644 org.glite.jp.client/Makefile delete mode 100755 org.glite.jp.client/build.xml delete mode 100644 org.glite.jp.client/project/build.number delete mode 100644 org.glite.jp.client/project/build.properties delete mode 100644 org.glite.jp.client/project/configure.properties.xml delete mode 100755 org.glite.jp.client/project/properties.xml delete mode 100644 org.glite.jp.client/project/tar_exclude delete mode 100644 org.glite.jp.client/project/version.properties delete mode 100644 org.glite.jp.client/src/authz.c delete mode 100644 org.glite.jp.client/src/authz.h delete mode 100644 org.glite.jp.client/src/backend.h delete mode 100644 org.glite.jp.client/src/bones_server.c delete mode 100644 org.glite.jp.client/src/builtin_plugins.h delete mode 100644 org.glite.jp.client/src/db.h delete mode 100644 org.glite.jp.client/src/feed.c delete mode 100644 org.glite.jp.client/src/feed.h delete mode 100644 org.glite.jp.client/src/file_plugin.c delete mode 100644 org.glite.jp.client/src/ftp_backend.c delete mode 100644 org.glite.jp.client/src/is_client.c delete mode 100644 org.glite.jp.client/src/jpimporter.c delete mode 100644 org.glite.jp.client/src/jptype_map.h delete mode 100644 org.glite.jp.client/src/mysql.c delete mode 100644 org.glite.jp.client/src/new_ftp_backend.c delete mode 100644 org.glite.jp.client/src/simple_server.c delete mode 100644 org.glite.jp.client/src/soap_ops.c delete mode 100644 org.glite.jp.client/src/tags.c delete mode 100644 org.glite.jp.client/src/tags.h delete mode 100644 org.glite.jp.client/src/tags_plugin.c delete mode 100644 org.glite.jp.client/src/typemap.dat delete mode 100644 org.glite.jp.common/.cvsignore delete mode 100644 org.glite.jp.common/Makefile delete mode 100755 org.glite.jp.common/build.xml delete mode 100644 org.glite.jp.common/interface/context.h delete mode 100755 org.glite.jp.common/interface/strmd5.h delete mode 100644 org.glite.jp.common/interface/type_plugin.h delete mode 100644 org.glite.jp.common/interface/types.h delete mode 100644 org.glite.jp.common/project/build.number delete mode 100644 org.glite.jp.common/project/build.properties delete mode 100644 org.glite.jp.common/project/configure.properties.xml delete mode 100755 org.glite.jp.common/project/properties.xml delete mode 100644 org.glite.jp.common/project/tar_exclude delete mode 100644 org.glite.jp.common/project/version.properties delete mode 100644 org.glite.jp.common/src/attr.c delete mode 100644 org.glite.jp.common/src/context.c delete mode 100644 org.glite.jp.common/src/stdtypes.c delete mode 100755 org.glite.jp.common/src/strmd5.c delete mode 100644 org.glite.jp.index/.cvsignore delete mode 100644 org.glite.jp.index/Makefile delete mode 100755 org.glite.jp.index/build.xml delete mode 100644 org.glite.jp.index/project/JobProvenanceIS.wsdl delete mode 100644 org.glite.jp.index/project/build.number delete mode 100644 org.glite.jp.index/project/build.properties delete mode 100644 org.glite.jp.index/project/configure.properties.xml delete mode 100755 org.glite.jp.index/project/properties.xml delete mode 100644 org.glite.jp.index/project/tar_exclude delete mode 100644 org.glite.jp.index/project/version.properties delete mode 100644 org.glite.jp.index/src/simple_server.c delete mode 100644 org.glite.jp.index/src/soap_ops.c delete mode 100644 org.glite.jp.index/src/typemap.dat delete mode 100644 org.glite.jp.primary/.cvsignore delete mode 100644 org.glite.jp.primary/Makefile delete mode 100755 org.glite.jp.primary/build.xml delete mode 100644 org.glite.jp.primary/config/glite-jp-primary-dbsetup.sql delete mode 100644 org.glite.jp.primary/examples/README.test delete mode 100644 org.glite.jp.primary/examples/jpps-test.c delete mode 100644 org.glite.jp.primary/interface/file_plugin.h delete mode 100644 org.glite.jp.primary/project/build.number delete mode 100644 org.glite.jp.primary/project/build.properties delete mode 100644 org.glite.jp.primary/project/configure.properties.xml delete mode 100755 org.glite.jp.primary/project/properties.xml delete mode 100644 org.glite.jp.primary/project/tar_exclude delete mode 100644 org.glite.jp.primary/project/version.properties delete mode 100644 org.glite.jp.primary/src/authz.c delete mode 100644 org.glite.jp.primary/src/authz.h delete mode 100644 org.glite.jp.primary/src/backend.h delete mode 100644 org.glite.jp.primary/src/bones_server.c delete mode 100644 org.glite.jp.primary/src/builtin_plugins.h delete mode 100644 org.glite.jp.primary/src/db.h delete mode 100644 org.glite.jp.primary/src/feed.c delete mode 100644 org.glite.jp.primary/src/feed.h delete mode 100644 org.glite.jp.primary/src/file_plugin.c delete mode 100644 org.glite.jp.primary/src/ftp_backend.c delete mode 100644 org.glite.jp.primary/src/is_client.c delete mode 100644 org.glite.jp.primary/src/is_client.h delete mode 100644 org.glite.jp.primary/src/jptype_map.h delete mode 100644 org.glite.jp.primary/src/mysql.c delete mode 100644 org.glite.jp.primary/src/new_ftp_backend.c delete mode 100644 org.glite.jp.primary/src/simple_server.c delete mode 100644 org.glite.jp.primary/src/soap_ops.c delete mode 100644 org.glite.jp.primary/src/tags.c delete mode 100644 org.glite.jp.primary/src/tags.h delete mode 100644 org.glite.jp.primary/src/tags_plugin.c delete mode 100644 org.glite.jp.primary/src/typemap.dat delete mode 100755 org.glite.jp.ws-interface/.cvsignore delete mode 100755 org.glite.jp.ws-interface/LICENSE delete mode 100644 org.glite.jp.ws-interface/Makefile delete mode 100644 org.glite.jp.ws-interface/build.xml delete mode 100644 org.glite.jp.ws-interface/interface/JobProvenanceIS.wsdl delete mode 100644 org.glite.jp.ws-interface/project/build.number delete mode 100755 org.glite.jp.ws-interface/project/build.properties delete mode 100644 org.glite.jp.ws-interface/project/configure.properties.xml delete mode 100644 org.glite.jp.ws-interface/project/glite-jp-ws-interface.spec delete mode 100644 org.glite.jp.ws-interface/project/properties.xml delete mode 100644 org.glite.jp.ws-interface/project/tar_exclude delete mode 100755 org.glite.jp.ws-interface/project/version.properties delete mode 100644 org.glite.jp.ws-interface/src/JobProvenancePS.xml delete mode 100644 org.glite.jp.ws-interface/src/JobProvenanceTypes.xml delete mode 100644 org.glite.jp.ws-interface/src/doc.xml delete mode 100644 org.glite.jp.ws-interface/src/puke-ug.xsl delete mode 100644 org.glite.jp.ws-interface/src/puke-wsdl.xsl delete mode 100644 org.glite.jp/.cvsignore delete mode 100644 org.glite.jp/build.xml delete mode 100644 org.glite.jp/project/build.number delete mode 100644 org.glite.jp/project/build.properties delete mode 100644 org.glite.jp/project/dependencies.properties delete mode 100644 org.glite.jp/project/glite.jp.csf.xml delete mode 100755 org.glite.jp/project/properties.xml delete mode 100644 org.glite.jp/project/run-workspace delete mode 100755 org.glite.jp/project/taskdefs.xml delete mode 100644 org.glite.jp/project/version.properties create mode 100644 org.glite.security.gsoap-plugin/src/stdsoap2_2.6.2.c delete mode 100755 org.glite.security.proxyrenewal/src/acstack.h delete mode 100755 org.glite.security.proxyrenewal/src/newformat.h delete mode 100755 org.glite.wms-utils.exception/test/Makefile.am delete mode 100644 org.glite.wms-utils.exception/test/exception_cu_main.cpp delete mode 100644 org.glite.wms-utils.exception/test/exception_cu_suite.cpp delete mode 100644 org.glite.wms-utils.exception/test/exception_cu_suite.h delete mode 100755 org.glite.wms-utils.jobid/test/Makefile.am delete mode 100644 org.glite.wms-utils.jobid/test/jobid_cu_main.cpp delete mode 100644 org.glite.wms-utils.jobid/test/jobid_cu_suite.cpp delete mode 100644 org.glite.wms-utils.jobid/test/jobid_cu_suite.h delete mode 100644 org.glite.wms-utils.jobid/test/manipulation_cu_main.cpp delete mode 100644 org.glite.wms-utils.jobid/test/manipulation_cu_suite.cpp delete mode 100644 org.glite.wms-utils.jobid/test/manipulation_cu_suite.h diff --git a/org.glite.deployment.lb/CHANGELOG b/org.glite.deployment.lb/CHANGELOG index 9f1b376..9a4d20d 100644 --- a/org.glite.deployment.lb/CHANGELOG +++ b/org.glite.deployment.lb/CHANGELOG @@ -1,4 +1,7 @@ DATE: 08-07-2005 15:20 +[dimeglio] Increased major version because of interface changes in the config scripts + +DATE: 08-07-2005 15:20 [dimeglio] Merged from branch 1.2.2 DATE: 25-05-2005 20:00 diff --git a/org.glite.deployment.lb/config/scripts/glite-lb-config.py b/org.glite.deployment.lb/config/scripts/glite-lb-config.py index f63be09..29b5939 100644 --- a/org.glite.deployment.lb/config/scripts/glite-lb-config.py +++ b/org.glite.deployment.lb/config/scripts/glite-lb-config.py @@ -6,7 +6,7 @@ # For license conditions see the license file or http://eu-egee.org/license.html # ################################################################################ -# glite-lb-config v. 1.3.0 +# glite-lb-config v. 2.0.1 # # Post-installation script for configuring the gLite Logging and Bookkeping Server # Robert Harakaly < robert.harakaly@cern.ch > @@ -16,9 +16,13 @@ # Version info: $Id$ # # Usage: python glite-lb-config [-c|-v|-h|--help] -# -c print configuration -# -v print version -# -h,--help print usage info +# -c, --checkconf print configuration +# -v, --version print version +# -h,--help print usage info +# --configure configure the service +# --start start the service +# --stop stop the service +# --status show service status # # Return codes: 0 - Ok # 1 - Configuration failed @@ -42,7 +46,7 @@ class glite_lb: def __init__(self): self.mysql = MySQL.Mysql() self.verbose = 0 - self.version = "1.3.0" + self.version = "2.0.1" self.name = "glite-lb" self.friendly_name = "gLite Logging and Bookkeeping" params['module.version'] = self.version @@ -98,6 +102,7 @@ python %s-config [OPTION...]""" % (self.name, os.environ['GLITE_LOCATION'], \ print ' -c, --checkconf print the service configuration' print ' -v, --version print the version of the configuration script' print ' -h, --help print this usage information' + print ' --configure configure the service' print ' --start start the service' print ' --stop stop the service' print ' --status check service status' @@ -178,6 +183,10 @@ python %s-config [OPTION...]""" % (self.name, os.environ['GLITE_LOCATION'], \ print 'The LB Server service has been stopped ', glib.printOkMessage() + #------------------------------------------------------------------- + # MySQL + #------------------------------------------------------------------- + self.mysql.stop() #------------------------------------------------------------------- @@ -215,12 +224,11 @@ python %s-config [OPTION...]""" % (self.name, os.environ['GLITE_LOCATION'], \ #-------------------------------------------------------- if os.system("python %s/glite-security-utils-config.py --subservice" % glib.getScriptPath()): - print "\nInstalling gLite Security Utilities ", + print "\nConfiguring gLite Security Utilities ", glib.printFailedMessage() - return 1 - - print "\nInstalling gLite Security Utilities ", - glib.printOkMessage() + else: + print "\nConfiguring gLite Security Utilities ", + glib.printOkMessage() # Create the GLITE_USER if it doesn't exists print "\nCreating/Verifying the GLITE_USER account %s" % os.environ['GLITE_USER'] @@ -244,17 +252,28 @@ python %s-config [OPTION...]""" % (self.name, os.environ['GLITE_LOCATION'], \ os.chmod("%s/hostkey.pem" % lb_cert_path, 0400) glib.printOkMessage() - # Create the MySQL database - print "\nCreate/Verify the %s database" % params['lb.database.name'] + #-------------------------------------------------------- + # Configure MySQL + #-------------------------------------------------------- + + # start MySQL self.mysql.stop() time.sleep(5) - self.mysql.start() - + self.mysql.start() + if not os.path.exists('/tmp/mysql.sock'): os.symlink('/var/lib/mysql/mysql.sock', '/tmp/mysql.sock') + # Set root password + mysql_root_password = params['mysql.root.password'] + if mysql_root_password != "": + self.mysql.setpassword(mysql_root_password) + + # Create the MySQL database + print "\nCreate/Verify the %s database" % params['lb.database.name'] + # Check if database exists - if self.mysql.existsDB(params['lb.database.name']) != 0: + if self.mysql.existsDB(params['lb.database.name'],mysql_root_password) != 0: # Create database print ('\n==> Creating MySQL %s database\n' % params['lb.database.name']) @@ -270,7 +289,7 @@ python %s-config [OPTION...]""" % (self.name, os.environ['GLITE_LOCATION'], \ file.writelines(text) file.close() - os.system('/usr/bin/mysql < /tmp/mysql_ct') + os.system('/usr/bin/mysql -p%s < /tmp/mysql_ct' % mysql_root_password) os.system('/bin/rm /tmp/mysql_ct') #Starting and stopping the database before the index creation @@ -330,6 +349,13 @@ python %s-config [OPTION...]""" % (self.name, os.environ['GLITE_LOCATION'], \ # Set all environment variables #------------------------------------------------------------------------------- +def loadDefaults(params): + + params['GLITE_LOCATION'] = "/opt/glite" + params['mysql.root.password'] = "" + params['lb.database.name'] = "lbserver20" + params['lb.database.username'] = "lbserver" + def set_env(): # gLite @@ -385,6 +411,7 @@ if __name__ == '__main__': # Load parameters params = {} + loadDefaults(params) try: opts, args = getopt.getopt(sys.argv[1:], '', ['siteconfig=']) for o, a in opts: @@ -415,66 +442,109 @@ if __name__ == '__main__': # Command line opts if any try: - opts, args = getopt.getopt(sys.argv[1:], 'chv', ['checkconf', 'help', 'version','stop','start','status','siteconfig=']) + opts, args = getopt.getopt(sys.argv[1:], 'chv', ['checkconf', 'help', 'version','configure','stop','start','status','siteconfig=']) except getopt.GetoptError: service.usage(msg = "Unknown options(s)") sys.exit(1) + if len(opts) == 0: + service.usage() + sys.exit(0) + # Check cli options for o, a in opts: + if o in ("-h", "--help"): service.usage() sys.exit(0) + if o in ("-v", "--version"): service.showVersion() sys.exit(0) + if o in ("-c", "--checkconf"): service.copyright() service.showVersion() glib.print_params(params) sys.exit(0) - if o in ("stop", "--stop"): + + if o == "--configure": + + # Check certificates + if params.has_key('glite.installer.checkcerts'): + if params['glite.installer.checkcerts'] == "true": + if glib.check_certs(params) != 0: + print "An error occurred while configuring the %s service" \ + % service.friendly_name + sys.exit(1) + + # Print configuration parameters + if verbose: + glib.print_params(params) + + service.copyright() + service.showVersion() + service.banner() + + # Stop all services + glib.printInfoMessage("\n\nStopping all running LB services...") service.stop() - sys.exit(0) - if o in ("start", "--start"): - service.start() - sys.exit(0) - if o == "--status": - sys.exit(service.status()) + + # Configure the service + return_result = service.configure() + + if return_result == 0: + + # Stop all services + glib.printInfoMessage("\n\nStopping all running LB services...") + service.stop() + print "\n\nThe %s configuration was successfully completed\n" % service.friendly_name + print "You can now start the service using the --start option of this script\n\n" + glib.registerService() + + sys.exit(0) - # Check certificates - if params.has_key('glite.installer.checkcerts'): - if params['glite.installer.checkcerts'] == "true": - if glib.check_certs(params) != 0: - print "An error occurred while configuring the %s service" \ + elif return_result == 2: + + # Stop all services + glib.printInfoMessage("\n\nStopping all running LB services...") + service.stop() + + print "\n\nThe %s configuration was completed,\n" % service.friendly_name + print "but warnings were issued. Please revise them and re-run the script\n" + print "or configure LB manually\n" + + sys.exit(2) + + else: + print "\n\nAn unrecoverable error occurred while configuring the %s" \ % service.friendly_name - sys.exit(1) - - # Print configuration parameters - if verbose: - glib.print_params(params) - service.copyright() - service.showVersion() - service.banner() - - # Configure the service - if service.configure() == 0: - print "\n%s configuration successfully completed " % service.friendly_name, - glib.printOkMessage() - glib.registerService() - else: - print "\nAn error occurred while configuring the %s " % service.friendly_name, - glib.printFailedMessage() - sys.exit(1) + sys.exit(1) + + if o in ("start", "--start"): + # Start the service + if service.start() == 0: + print "\n\nThe %s was successfully started " % service.friendly_name, + glib.printOkMessage() + sys.exit(0) + else: + print "\n\nAn error occurred while starting the %s " % service.friendly_name, + glib.printFailedMessage() + sys.exit(1) + + if o in ("stop", "--stop"): + # Stop the service + if service.stop() == 0: + print "\n\nThe %s was successfully stopped " % service.friendly_name, + glib.printOkMessage() + sys.exit(0) + else: + print "\n\nAn unrecoverable error occurred while stopping the %s " % service.friendly_name, + glib.printFailedMessage() + sys.exit(1) - # Start the service - if service.start() == 0: - print "\nThe %s was successfully started " % service.friendly_name, - glib.printOkMessage() - else: - print "\nAn error occurred while starting the %s " % service.friendly_name, - glib.printFailedMessage() - sys.exit(1) - + if o == "--status": + sys.exit(service.status()) + diff --git a/org.glite.deployment.lb/config/templates/glite-lb.cfg.xml b/org.glite.deployment.lb/config/templates/glite-lb.cfg.xml index ed39d97..72ada69 100644 --- a/org.glite.deployment.lb/config/templates/glite-lb.cfg.xml +++ b/org.glite.deployment.lb/config/templates/glite-lb.cfg.xml @@ -17,6 +17,10 @@ parameter. Leave it empty of comment it out to use the same as 'glite.user.name'" value="changeme"/> + + @@ -30,12 +34,10 @@ description="Enable check of host certificates" value="true"/> - - - + + + + @@ -45,15 +47,6 @@ - - - - - - @@ -66,28 +59,23 @@ value="true"/> + + + description="Name of the service. This should be globally unique. + [Example: 'HOSTANME_LB_LocalLogger'] [Type: 'String']" + value="${HOSTNAME}_${rgma.servicetool.service_type}"/> - - + value="not available"/> + value="30"/> + value="not available"/> + value="not available"/> diff --git a/org.glite.deployment.lb/doc/release_notes/release_notes.doc b/org.glite.deployment.lb/doc/release_notes/release_notes.doc index ae9fd1814da46c1ba144a0202e5185f6fe1069cf..f6cf345070bf9017a50d7209e6717a3a733c7159 100644 GIT binary patch literal 145920 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 - - - - - - -
- -

gLite Logging & Bookkeeping Server

- -

1. Release Description

- -

This release contains the gLite Logging & Bookkeeping -Server module v. 1.2.3. The following sections provide additional information about -the release content, the module dependencies, the know bugs and issues and a -list of bugs closed since the previous release. For information about -installing and using the gLite Logging & Bookkeeping Server, please refer -to the gLite Installation and User Guides.

- -

2. Changes in this Release

- -

This release introduces the following changes:

- -

 

- -
    -
  • All R-GMA service publishing - instances in the configuration template now have default values
  • -
  • Bug fixes (see below for the complete lists)
  • -
- -

3. Release contents

- -

The gLite Logging & Bookkeeping Server v. 1.2.3 is -composed of the following gLite components:

- -

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Component name

-
-

Version

-
-

File

-
-

org.glite.deployment.lb

-
-

1.2.3

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/installers/glite-lb_installer.sh -

-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/noarch/RPMS/glite-lb-config-1.2.3-1.noarch.rpm

-

apt-get install - glite-lb-config

-
-

org.glite.deployment.config

-
-

1.1.1

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/noarch/RPMS/glite-config-1.1.1-3.noarch.rpm

-
-

org.glite.lb.client-interface

-
-

1.0.3

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-lb-client-interface-1.0.3-1.i386.rpm

-
-

org.glite.lb.common

-
-

1.1.4

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-lb-common-1.1.4-1.i386.rpm

-
-

org.glite.lb.logger

-
-

1.0.1

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-lb-logger-1.0.1-1.i386.rpm

-
-

org.glite.lb.server

-
-

1.0.1

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-lb-server-1.0.1-1.i386.rpm

-
-

org.glite.lb.server-bones

-
-

1.0.0

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-lb-server-bones-1.0.0-1.i386.rpm

-
-

org.glite.lb.ws-interface

-
-

1.0.1

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-lb-ws-interface-1.0.1-1.i386.rpm

-
-

org.glite.security.proxyrenewal

-
-

1.0.13

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-security-proxyrenewal-1.0.13-1.i386.rpm

-
-

org.glite.wms-utils.exception

-
-

1.0.1

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-wms-utils-exception-1.0.1-1.i386.rpm

-
-

org.glite.wms-utils.jobid

-
-

1.0.0

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-wms-utils-jobid-1.0.0-1.i386.rpm

-
-

org.glite.security.voms

-
-

1.2.32

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-security-voms-1.2.32-1.i386.rpm

-
-

org.gridsite.core

-
-

1.1.5

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/gridsite-1.1.5-1.i386.rpm

-
- -

 

- -

4. Dependencies

- -

The gLite Logging & Bookkeeping Server v. 1.2.2 module -has the following dependencies:

- -

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Component name

-
-

Version

-
-

RPM file name

-
-

gLite Security Utilities

-
-

1.0.1

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/installers/glite-security-utils_installer.sh

-
-

gLite R-GMA Service Publisher

-
-

4.2.0

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/installers/glite-rgma-servicetool_installer.sh

-
-

GPT

-
-

VDT 1.2.2

-
-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/gpt-VDT1.2.2rh9-1.i386.rpm

-
-

VDT Globus Essentials

-
-

VDT 1.2.2

-
-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/vdt_globus_essentials-VDT1.2.2rh9-1.i386.rpm

-
-

MySQL-server

-
-

4.0.20

-
-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/MySQL-server-4.0.20-0.i386.rpm

-
-

MySQL-client

-
-

4.0.20

-
-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/MySQL-client-4.0.20-0.i386.rpm

-
-

ares

-
-

1.1.1

-
-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/ares-1.1.1-EGEE.i386.rpm

-
-

myproxy

-
-

1.14

-
-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/myproxy-1.14-EGEE.i386.rpm

-
-

perl-Expect.pm

-
-

1.01

-
-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/per-Expect.pm-1.01-9.i386.rpm

-
-

Java SDK/JRE

-
-

1.4.2

-
-

http://java.sun.com/j2se/1.4.2/download.html

-
- -

 

+ margin-left:54.0pt; + text-align:justify; + text-indent:-18.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListNumber4, li.MsoListNumber4, div.MsoListNumber4 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:72.0pt; + text-align:justify; + text-indent:-18.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListNumber5, li.MsoListNumber5, div.MsoListNumber5 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:90.0pt; + text-align:justify; + text-indent:-18.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoTitle, li.MsoTitle, div.MsoTitle + {margin-top:12.0pt; + margin-right:0mm; + margin-bottom:3.0pt; + margin-left:0mm; + text-align:center; + font-size:16.0pt; + font-family:Arial; + font-weight:bold;} +p.MsoClosing, li.MsoClosing, div.MsoClosing + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:216.0pt; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoSignature, li.MsoSignature, div.MsoSignature + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:216.0pt; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoBodyText, li.MsoBodyText, div.MsoBodyText + {margin-top:3.0pt; + margin-right:0mm; + margin-bottom:3.0pt; + margin-left:0mm; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoBodyTextIndent, li.MsoBodyTextIndent, div.MsoBodyTextIndent + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:18.0pt; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListContinue, li.MsoListContinue, div.MsoListContinue + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:18.0pt; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListContinue2, li.MsoListContinue2, div.MsoListContinue2 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:36.0pt; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListContinue3, li.MsoListContinue3, div.MsoListContinue3 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:54.0pt; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListContinue4, li.MsoListContinue4, div.MsoListContinue4 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:72.0pt; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListContinue5, li.MsoListContinue5, div.MsoListContinue5 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:90.0pt; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoMessageHeader, li.MsoMessageHeader, div.MsoMessageHeader + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:54.0pt; + text-align:justify; + text-indent:-54.0pt; + background:#CCCCCC; + border:none; + padding:0mm; + font-size:12.0pt; + font-family:Arial;} +p.MsoSubtitle, li.MsoSubtitle, div.MsoSubtitle + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:3.0pt; + margin-left:0mm; + text-align:center; + font-size:12.0pt; + font-family:Arial;} +p.MsoSalutation, li.MsoSalutation, div.MsoSalutation + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoDate, li.MsoDate, div.MsoDate + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoBodyTextFirstIndent, li.MsoBodyTextFirstIndent, div.MsoBodyTextFirstIndent + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:0mm; + text-align:justify; + text-indent:10.5pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoBodyTextFirstIndent2, li.MsoBodyTextFirstIndent2, div.MsoBodyTextFirstIndent2 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:18.0pt; + text-align:justify; + text-indent:10.5pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoNoteHeading, li.MsoNoteHeading, div.MsoNoteHeading + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoBodyText2, li.MsoBodyText2, div.MsoBodyText2 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:0mm; + text-align:justify; + line-height:200%; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoBodyText3, li.MsoBodyText3, div.MsoBodyText3 + {margin-top:2.5pt; + margin-right:0mm; + margin-bottom:2.5pt; + margin-left:0mm; + text-align:justify; + page-break-after:avoid; + font-size:10.0pt; + font-family:Arial;} +p.MsoBodyTextIndent2, li.MsoBodyTextIndent2, div.MsoBodyTextIndent2 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:18.0pt; + text-align:justify; + line-height:200%; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoBodyTextIndent3, li.MsoBodyTextIndent3, div.MsoBodyTextIndent3 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:18.0pt; + text-align:justify; + font-size:8.0pt; + font-family:"Times New Roman";} +p.MsoBlockText, li.MsoBlockText, div.MsoBlockText + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + text-indent:17.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +a:link, span.MsoHyperlink + {color:blue; + text-decoration:underline;} +a:visited, span.MsoHyperlinkFollowed + {color:purple; + text-decoration:underline;} +p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + background:navy; + font-size:11.0pt; + font-family:Tahoma;} +p.MsoPlainText, li.MsoPlainText, div.MsoPlainText + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:10.0pt; + font-family:"Courier New";} +p.MsoAutoSig, li.MsoAutoSig, div.MsoAutoSig + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p + {margin-top:5.0pt; + margin-right:0mm; + margin-bottom:5.0pt; + margin-left:0mm; + text-align:justify; + font-size:12.0pt; + font-family:"Times New Roman";} +address + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman"; + font-style:italic;} +pre + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:10.0pt; + font-family:"Courier New";} +tt + {font-family:"Courier New";} +p.MsoCommentSubject, li.MsoCommentSubject, div.MsoCommentSubject + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:10.0pt; + font-family:"Times New Roman"; + font-weight:bold;} +p.MsoAcetate, li.MsoAcetate, div.MsoAcetate + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:8.0pt; + font-family:Tahoma;} +p.3eretraitnormal, li.3eretraitnormal, div.3eretraitnormal + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:3.0pt; + margin-left:102.9pt; + text-align:justify; + text-indent:-17.85pt; + font-size:12.0pt; + font-family:"Times New Roman";} +p.2eretraitjustifi, li.2eretraitjustifi, div.2eretraitjustifi + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:3.0pt; + margin-left:40.0mm; + text-align:justify; + text-indent:-7.1pt; + line-height:12.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.2eretraitnormal, li.2eretraitnormal, div.2eretraitnormal + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:3.0pt; + margin-left:18.0pt; + text-align:justify; + text-indent:-18.0pt; + font-size:12.0pt; + font-family:"Times New Roman";} +p.1erretraitnormal, li.1erretraitnormal, div.1erretraitnormal + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:12.0pt; + margin-left:0mm; + text-align:justify; + font-size:12.0pt; + font-family:"Times New Roman";} +p.titrebloc, li.titrebloc, div.titrebloc + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:11.0pt; + font-family:Arial; + font-weight:bold;} +p.TitreTable, li.TitreTable, div.TitreTable + {margin-top:6.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:center; + font-size:12.0pt; + font-family:Arial; + font-weight:bold;} +p.form, li.form, div.form + {margin-top:6.0pt; + margin-right:7.05pt; + margin-bottom:0mm; + margin-left:0mm; + margin-bottom:.0001pt; + text-align:justify; + background:black; + border:none; + padding:0mm; + font-size:14.0pt; + font-family:"Univers \(W1\)"; + color:white; + text-transform:uppercase; + font-weight:bold;} +p.HB, li.HB, div.HB + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:12.0pt; + margin-left:0mm; + text-align:justify; + page-break-after:avoid; + font-size:12.0pt; + font-family:"Times New Roman"; + color:black; + font-weight:bold;} +p.reference, li.reference, div.reference + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + page-break-after:avoid; + font-size:9.0pt; + font-family:Arial;} +p.1erretraitjustifi, li.1erretraitjustifi, div.1erretraitjustifi + {margin-top:6.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:14.2pt; + text-align:justify; + text-indent:-14.2pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.ZonetatEnTte, li.ZonetatEnTte, div.ZonetatEnTte + {margin-top:2.0pt; + margin-right:2.85pt; + margin-bottom:2.0pt; + margin-left:2.85pt; + text-align:center; + page-break-after:avoid; + font-size:36.0pt; + font-family:Arial; + text-transform:uppercase; + font-weight:bold;} +p.DocTitle, li.DocTitle, div.DocTitle + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:center; + font-size:22.0pt; + font-family:Arial; + font-variant:small-caps; + color:gray; + letter-spacing:4.0pt; + font-weight:bold;} +p.DocDate, li.DocDate, div.DocDate + {margin-top:6.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:0mm; + text-align:justify; + font-size:11.0pt; + font-family:Arial; + layout-grid-mode:line; + font-weight:bold;} +p.DocSubTitle, li.DocSubTitle, div.DocSubTitle + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:center; + line-height:12.0pt; + font-size:12.0pt; + font-family:Arial; + font-variant:small-caps; + color:gray; + letter-spacing:4.0pt; + font-weight:bold;} + /* Page Definitions */ + @page Section1 + {size:595.3pt 841.9pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.Section1 + {page:Section1;} + /* List Definitions */ + ol + {margin-bottom:0mm;} +ul + {margin-bottom:0mm;} +--> + -

5. Known bugs and issues

+ -

This release has the -following bugs and issues. Bug numbers refer to the gLite Bug Tracking system -database hosted on the CERN Savannah system at https://savannah.cern.ch/bugs/?group=jra1mdw -.

+ -

 

+
-
    -
  • If the mysql root password is set - and it is not specified in the mysql.conf file, the configuration script - fails. This bug will be fixed in the next release
  • -
  • No removal procedure is provided - with this release apart from the removal of the RPMS. Any account, group - or other resource created during the module configuration must be manually - cleaned.
  • -
+

gLite Logging & Bookkeeping Server

-

 

+

1. Release Description

-

Known open bugs:

+

This release contains the gLite Logging & Bookkeeping +Server module v. 2.0.0. The following sections provide additional information about +the release content, the module dependencies, the know bugs and issues and a +list of bugs closed since the previous release. For information about +installing and using the gLite Logging & Bookkeeping Server, please refer +to the gLite Installation and User Guides.

-

 

+

2. Changes in this Release

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Bug number

-
-

Description

-
-

 

-
-

 #7053

-
-

LB configuration fails if the - mysql root pwd is set 

-
-

 

-
-

 #7237

-
-

Intermittent errors with job - submission 

-
-

 

-
-

 #7300

-
-

update of the lb instructions - at the end of the installer script  

-
-

 

-
-

 #7305

-
-

lb.database.username paramenter - in config file 

-
-

 

-
-

 #7307

-
-

lb config script does _not_ - fail if mysql root password is set 

-
-

 

-
-

 #7324

-
-

lb-bkserver is running with no - pid 

-
-

 

-
-

 #7389

-
-

LB server and WMS local logger - related issues 

-
-

 

-
+

This release doesn’t introduce any functional change. The +following configuration changes have been done:

 

-

Bugs fixed in this or previous releases, but not yet officially -tested:

+
    +
  • The configuration script now has a new --configure command + line switch to execute the configuration steps only without starting the + services. The --start switch must be used to start the services. Running + the script without options print usage instructions
  • +
  • R-GMA Service Publisher parameters updated to use new + common conventions (please make sure you use the new configuration + templates)
  • +
  • Bug fixes (see below for the complete lists)
  • +
+ +

3. Release contents

+ +

The gLite Logging & Bookkeeping Server v. 2.0.0 is +composed of the following gLite components:

 

- +
- - - - - - - - - + - - - + - - - + - - - + - - - + - - - - - - -
-

Bug number

+

Component name

-

Description

+

Description

-

 

-
-

 #6412

-
-

--start and --stop options not - documented in glite-ce-config.py, glite-lb-config.py 

+

Version

-

 

+
+

File

+

glite-config

+
-

 #6722

+

gLite configuration scripts

-

glite-job-status -all doesn't - work 

+

1.2.1

-

 

+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/noarch/RPMS/glite-config-1.2.1-1.noarch.rpmH

+

org.glite.lb-client.interface

+
-

 #7151

+

L&B client library header files

-

There are conflicts when - installing WMS and LB on the same node 

+

1.0.3

-

 

+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/i386/RPMS/glite-lb-client-interface-1.0.3-1.i386.rpmH

+

org.glite.lb.common

+
-

 #7180

+

L&B common subroutines library

-

Logging & Bookkeping UI  

+

1.1.6

-

 

+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/i386/RPMS/glite-lb-common-1.1.6-1.i386.rpmH

+

org.glite.lb.config

+
-

 #7321

+

gLite Logging and Bookkeeping node configuration files

-

creation of indices fails - randomly 

+

2.0.0

-

 

+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/noarch/RPMS/glite-TUlb-configUT-2.0.0-1.noarch.rpmH

+

org.glite.lb.logger

+
-

 #7884

+

L&B local logger

-

local header files distributed - in RPMs.  

+

1.0.3

-

 

+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/i386/RPMS/glite-lb-logger-1.0.3-1.i386.rpmH

-

 #7910

+
+

org.glite.lb.server

-

Duplicate apostroph in MySQL - calls 

+

L&B bookkeeping server

-

 

-
- -

 

- -

6. Bugs closed since last release

- -

This release fixes the -following bugs and issues. Bug numbers refer to the gLite Bug Tracking system -database hosted on the CERN Savannah system at https://savannah.cern.ch/bugs/?group=jra1mdw

- -

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Bug number

-
-

Description

+

1.0.4

-

 #5850

-
-

glite-lb-config.py has - glite.location and globus.location not set in params[] 

+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/i386/RPMS/glite-lb-server-1.0.4-1.i386.rpmH

-

 #5901

+

org.glite.lb-server.bones

-

mysqlaccess command fails with - Broken pipe if mysql socket file is in /tmp  

-
-

 #5908

-
-

Environment variables set via - the configuration script are not passed to daemon startup scripts 

+

L&B server bones

-

 #6057

-
-

glite-lb configuration scripts - has missing dependency (CGI.pm) 

+

1.0.1

-

 #6075

-
-

glite-lb-config.py crashes with - KeyError: GLITE_CERT_DIR 

+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/i386/RPMS/glite-lb-server-bones-1.0.1-1.i386.rpmH

-

 #6190

-
-

LB local logger doesn't start - on the CE node 

+
+

org.glite.lb-ws.interface

-

 #6366

-
-

LB install script:: Fails but - no error reported 

+

 

-

 #6415

-
-

glite-lb-bkserver does not - start and blocks execution of glite-lb-config.py 

+

1.0.1

-

 #7296

-
-

glite-lb-config.py crashes with - a TypeError exception 

+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/i386/RPMS/glite-lb-ws-interface-1.0.1-1.i386.rpmH

-

 #7753

-
-

glite-lb-config.py fails with - an indentation error 

+
+

org.glite.rgma-api-java

-

 #7976

-
-

edg-job-status not working with - voms proxies 

+

Java API for R.GMA

-

 #8094

-
-

interlogd on the WMS doesn't - restart 

+

4.1.5

- -

 

- -
-
- -

7. Previous Releases

- -

7.1. Release 1.2.2

- -

7.1.1. Release Description

- -

This release contains the gLite Logging & Bookkeeping -Server module v. 1.2.2. The following sections provide additional information -about the release content, the module dependencies, the know bugs and issues -and a list of bugs closed since the previous release. For information about -installing and using the gLite Logging & Bookkeeping Server, please refer -to the gLite Installation and User Guides.

- -

7.1.2. Changes in this Release

- -

This release introduces the following changes:

- -

 

- -
    -
  • Implemented status method
  • -
  • Added definition of PERL5LIB env var
  • -
  • Stopping and starting the database before the index - creation (just after the database is created and the user granted) to fix - access denied error
  • -
  • Moved creation of indices inside database creation (if - database exists indices must not be recreated)
  • -
  • GLITE_USER parameter is not exposed anymore in the - configuration file; instead the module uses the same user parameters as - WMS to allow installation on same node
  • -
  • LB admin tools are now installed in sbin, not in bin
  • -
  • Bug fixes (see below for the complete lists)
  • -
- -

7.1.3. Release contents

- -

The gLite Logging & Bookkeeping Server v. 1.2.2 is -composed of the following gLite components:

- -

 

- - - - - - - - - - - - - - - - - - - - - - - + - - - + - - - - - + - - - + - - - + - - - + - - - + - - - + - + - -
-

Component name

-
-

Version

-
-

File

+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/noarch/RPMS/glite-rgma-api-java-4.1.5-1.noarch.rpmH

-

org.glite.deployment.lb

-
-

1.2.2

+

org.glite.rgma-base

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/installers/glite-lb_installer.sh -

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/noarch/RPMS/glite-lb-config-1.2.2-1.noarch.rpm

-
-

org.glite.deployment.config

+

R.GMA basic configuration and documentation

-

1.0.0

+

4.1.19

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/noarch/RPMS/glite-config-1.0.0-1.noarch.rpm

+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/noarch/RPMS/glite-rgma-base-4.1.19-1.noarch.rpmH

-

org.glite.lb.client-interface

-
-

1.0.2

+

org.glite.rgma-common.config

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-lb-client-interface-1.0.2-1.i386.rpm

-
-

org.glite.lb.common

+

gLite rgma common configuration items installation

-

1.1.4

+

5.0.0

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-lb-common-1.1.4-1.i386.rpm

+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/noarch/RPMS/glite-rgma-common-config-5.0.0-1.noarch.rpmH

-

org.glite.lb.logger

+

org.glite.rgma-servicetool

+
+

R.GMA service tool

-

1.0.1

+

4.1.19

-

Hhttp://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-lb-logger-1.0.1-1.i386.rpm

+ href="http://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/noarch/RPMS/glite-rgma-servicetool-4.1.19-3.noarch.rpm">http://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/noarch/RPMS/glite-rgma-servicetool-4.1.19-3.noarch.rpmH

-

org.glite.lb.server

+

org.glite.rgma-servicetool-config

+
+

gLite R.GMA servicetool installation

-

1.0.1

+

5.0.0

-

Hhttp://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-lb-server-1.0.1-1.i386.rpm

+ href="http://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/noarch/RPMS/glite-rgma-servicetool-config-5.0.0-1.noarch.rpm">http://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/noarch/RPMS/glite-rgma-servicetool-config-5.0.0-1.noarch.rpmH

-

org.glite.lb.server-bones

+

org.glite.rgma-stubs-servlet-java

-

1.0.0

+

Java client implementation stubs for R.GMA

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-lb-server-bones-1.0.0-1.i386.rpm

+

4.1.12

+
+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/noarch/RPMS/glite-rgma-stubs-servlet-java-4.1.12-1.noarch.rpmH

-

org.glite.lb.ws-interface

+

org.glite.security.trustmanager

-

1.0.1

+

The java certificate path checkin for proxy certs in SSL with plugins + for tomcat and axis.

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-lb-ws-interface-1.0.1-1.i386.rpm

+

1.7.3

+
+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/noarch/RPMS/glite-security-trustmanager-1.7.3-1.noarch.rpmH

-

org.glite.security.proxyrenewal

+

org.glite.security-util.java

-

1.0.11

+

The java utilities library for security

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-security-proxyrenewal-1.0.11-1.i386.rpm

+

1.1.2

+
+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/noarch/RPMS/glite-security-util-java-1.1.2-2.noarch.rpmH

-

org.glite.wms-utils.exception

+

org.glite.security-utils.config

-

1.0.1

+

gLite Security Utilities configuration files

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-wms-utils-exception-1.0.1-1.i386.rpm

+

1.0.2

+
+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/noarch/RPMS/glite-security-utils-config-1.0.2-2.noarch.rpmH

-

org.glite.wms-utils.jobid

+

org.glite.security-voms-api.c

-

1.0.0

+

 

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-wms-utils-jobid-1.0.0-1.i386.rpm

+

1.5.9

+
+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/i386/RPMS/glite-security-voms-api-c-1.5.9-2.i386.rpmH

-

org.glite.security.voms

+

org.glite.wms-utils.exception

-

1.2.32

+

 

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-security-voms-1.2.32-1.i386.rpm

+

1.0.1

+
+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/i386/RPMS/glite-wms-utils-exception-1.0.1-1.i386.rpmH

-

org.gridsite.core

+

org.glite.wms-utils.jobid

+
+

 

-

1.1.5

+

1.0.0

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/gridsite-1.1.5-1.i386.rpm

+

Hhttp://glite.web.cern.ch/glite/packages/R1.2/R20050715/bin/rhel30/i386/RPMS/glite-wms-utils-jobid-1.0.0-1.i386.rpmH

-

 

+

 

-

7.1.4. Dependencies

+

4. Dependencies

-

The gLite Logging & Bookkeeping Server v. 1.2.2 module +

The gLite Logging & Bookkeeping Server v. 2.0.0 module has the following dependencies:

 

@@ -1913,45 +1635,6 @@ has the following dependencies:

-

gLite Security Utilities

- - -

1.0.0

- - -

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/installers/glite-security-utils_installer.sh

- - - - -

gLite R-GMA Service Publisher

- - -

4.1.5

- - -

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/installers/glite-rgma-servicetool_installer.sh

- - - -

GPT

@@ -1963,10 +1646,14 @@ has the following dependencies:

-

Hhttp://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/gpt-VDT1.2.2rh9-1.i386.rpm

+ lang=EN-GB>VDT1.2.2rh9-1.i386.rpmH

@@ -1983,10 +1670,14 @@ has the following dependencies:

-

Hhttp://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/vdt_globus_essentials-VDT1.2.2rh9-1.i386.rpm

+ lang=EN-GB>VDT1.2.2rh9-1.i386.rpmH

@@ -1998,15 +1689,19 @@ has the following dependencies:

-

4.0.20

+

4.1.11

-

Hhttp://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/MySQL-server-4.0.20-0.i386.rpm

+ lang=EN-GB>4.0.20-0.i386.rpmH

@@ -2018,15 +1713,19 @@ has the following dependencies:

-

4.0.20

+

4.1.11

-

Hhttp://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/MySQL-client-4.0.20-0.i386.rpm

+ lang=EN-GB>4.0.20-0.i386.rpmH

@@ -2043,10 +1742,14 @@ has the following dependencies:

-

Hhttp://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/ares-1.1.1-EGEE.i386.rpm

+ lang=EN-GB>1.1.1-EGEE.i386.rpmH

@@ -2063,10 +1766,14 @@ has the following dependencies:

-

Hhttp://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/myproxy-1.14-EGEE.i386.rpm

+ lang=EN-GB>1.14-EGEE.i386.rpmH

@@ -2083,10 +1790,14 @@ has the following dependencies:

-

Hhttp://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/per-Expect.pm-1.01-9.i386.rpm

+ lang=EN-GB>1.01-9.i386.rpmH

@@ -2111,17 +1822,21 @@ has the following dependencies:

 

-

7.1.5. Known bugs and issues

+

5. Known bugs and issues

-

This release has the -following bugs and issues. Bug numbers refer to the gLite Bug Tracking system -database hosted on the CERN Savannah system at https://savannah.cern.ch/bugs/?group=jra1mdw -.

+

This +release has the following bugs and issues. Bug numbers refer to the gLite Bug +Tracking system database hosted on the CERN Savannah system at Hhttps://savannah.cern.ch/bugs/?group=jra1mdwH .