CERN Accelerating science

How to create a standalone FTS server for IPv6 compatibility testing

This page summarizes the steps taken to create a standalone FTS server for IPv6 conpatibility testing. The steps are rather complex. They are not recommended for installation on other testbed nodes.

  1. The Glite 3.2 repository is used. The EMI 1 RPM repository was checked, but it looks like most of the configuration scripts were not updated for that version yet. Add /etc/yum.repos.d/glite32-fts.repo:
    [glite-FTS]
    name=gLite 3.2 FTS
    baseurl=http://glitesoft.cern.ch/EGEE/gLite/R3.2/glite-FTS_oracle/sl5/x86_64/RPMS.release/
    gpgkey=http://glite.web.cern.ch/glite/glite_key_gd.asc
    gpgcheck=1
    enabled=1
    
    [glite-FTS_updates]
    name=gLite 3.2 FTS
    baseurl=http://glitesoft.cern.ch/EGEE/gLite/R3.2/glite-FTS_oracle/sl5/x86_64/RPMS.updates/
    gpgkey=http://glite.web.cern.ch/glite/glite_key_gd.asc
    gpgcheck=1
    enabled=1
    
    
    [glite-FTS_ext]
    name=gLite 3.2 FTS
    baseurl=http://glitesoft.cern.ch/EGEE/gLite/R3.2/glite-FTS_oracle/sl5/x86_64/RPMS.externals/
    gpgcheck=0
    enabled=1
    protect=1
    
  2. yum install glite-FTS_oracle.x86_64
    ================================================================================
     Package                    Arch   Version              Repository Size
    ================================================================================
    Installing:
     glite-FTS_oracle           x86_64 3.2.1-2.sl5          glite-FTS         4.2k
    Installing for dependencies:
     CGSI_gSOAP_2.7             x86_64 1.3.3-2.sl5          glite-FTS_updates  67k
     ant                        x86_64 1.6.5-2jpp.2         slc5-os           2.3M
     antlr                      x86_64 2.7.6-4jpp.2         slc5-os           1.1M
     axis                       x86_64 1.2.1-2jpp.6         slc5-os           3.6M
     bcel                       x86_64 5.1-8jpp.1           slc5-os           1.1M
     bdii                       noarch 5.2.5-1.el5          epel               21k
     bouncycastle-glite         noarch 1.42-3.jdk5          glite-FTS_ext     1.3M
     classpathx-jaf             x86_64 1.0-9jpp.1           slc5-os           111k
     classpathx-mail            x86_64 1.1.1-4jpp.2         slc5-os           1.2M
     eclipse-ecj                x86_64 1:3.2.1-19.el5       slc5-os           9.0M
     edg-mkgridmap              noarch 3.0.0-1              glite-FTS          37k
     geronimo-specs-compat      x86_64 1.0-0.M2.2jpp.12     slc5-os           5.4k
     gjdoc                      x86_64 0.7.7-12.el5         slc5-os           885k
     glite-data-delegation-api-c
                                x86_64 2.0.0-7.sl5          glite-FTS_updates 283k
     glite-data-delegation-cli  x86_64 2.0.0-7.sl5          glite-FTS_updates  47k
     glite-data-transfer-cli    x86_64 3.7.3-3.sl5          glite-FTS_updates 1.4M
     glite-data-transfer-fts    noarch 3.7.0-3              glite-FTS         3.6M
     glite-data-util-c          x86_64 1.2.3-1.sl5          glite-FTS          39k
     glite-info-generic         noarch 2.0.2-5              glite-FTS_updates 5.4k
     glite-info-provider-release
                                noarch 1.0.1-1              glite-FTS_updates 3.2k
     glite-info-templates       noarch 1.0.0-11             glite-FTS_updates 8.4k
     glite-security-delegation-interface
                                noarch 2.0.0-3              glite-FTS          18k
     glite-security-trustmanager
                                x86_64 2.5.5-4.el5          epel               60k
     glite-security-util-java   x86_64 2.8.0-1.el5          epel              294k
     glite-security-voms-api-c  x86_64 1.9.17-1.sl5         glite-FTS_updates 3.7M
     glite-security-voms-api-cpp
                                x86_64 1.9.17-1.sl5         glite-FTS_updates 4.4M
     glite-service-discovery-api-c
                                x86_64 2.2.2-2.sl5          glite-FTS          55k
     glite-service-discovery-bdii-c
                                x86_64 2.2.2-3.sl5          glite-FTS          33k
     glite-service-discovery-cli
                                x86_64 2.2.1-2.sl5          glite-FTS          15k
     glite-service-discovery-file-c
                                x86_64 2.1.2-2.sl5          glite-FTS          42k
     glite-version              noarch 3.2.2-1              glite-FTS_updates 5.0k
     glite-yaim-core            noarch 4.0.12-1             glite-FTS_updates 123k
     glite-yaim-fts             noarch 4.1.6-1              glite-FTS          28k
     glue-schema                noarch 2.0.8-1.el5          epel               34k
     gpt                        x86_64 3.2autotools2004_NMI_9.0_x86_64_rhap_5-1
                                                            glite-FTS_ext     883k
     gridsite-shared            x86_64 1.5.10.5-3.sl5       glite-FTS_updates 106k
     jakarta-commons-beanutils  x86_64 1.7.0-5jpp.1         slc5-os           567k
     jakarta-commons-cli        x86_64 1.0-6jpp_10.el5      epel               76k
     jakarta-commons-collections
                                x86_64 3.2-2jpp.3           slc5-os           1.2M
     jakarta-commons-daemon     x86_64 1:1.0.1-6jpp.1       slc5-os            46k
     jakarta-commons-dbcp       x86_64 1.2.1-7jpp.1         slc5-os           278k
     jakarta-commons-digester   x86_64 1.7-5jpp.1           slc5-os           349k
     jakarta-commons-discovery  x86_64 1:0.3-4jpp.1         slc5-os           150k
     jakarta-commons-el         x86_64 1.0-7jpp.1           slc5-os           269k
     jakarta-commons-fileupload x86_64 1:1.0-6jpp.1         slc5-os            53k
     jakarta-commons-httpclient x86_64 1:3.0-7jpp.1         slc5-os           595k
     jakarta-commons-lang       x86_64 2.1-5jpp.1           slc5-os           508k
     jakarta-commons-launcher   x86_64 0.9-6jpp.1           slc5-os            97k
     jakarta-commons-logging    x86_64 1.0.4-6jpp.1         slc5-os           115k
     jakarta-commons-modeler    x86_64 1.1-8jpp.3.el5       slc5-os           259k
     jakarta-commons-pool       x86_64 1.3-5jpp.1           slc5-os           142k
     java-1.4.2-gcj-compat      x86_64 1.4.2.0-40jpp.115    slc5-os            29k
     java-1.6.0-openjdk         x86_64 1:1.6.0.0-1.25.1.10.6.el5_8
                                                            slc5-updates       36M
     java-1.6.0-openjdk-devel   x86_64 1:1.6.0.0-1.25.1.10.6.el5_8
                                                            slc5-updates       12M
     jpackage-utils             noarch 1.7.3-1jpp.2.el5     slc5-os            61k
     libgcj                     x86_64 4.1.2-52.el5         slc5-updates       18M
     log4j                      x86_64 1.2.13-3jpp.2        slc5-os           729k
     mx4j                       x86_64 1:3.0.1-6jpp.4       slc5-os           2.7M
     openldap-servers           x86_64 2.3.43-25.el5        slc5-updates      2.2M
     perl-DateManip             noarch 5.44-1.2.1           slc5-os           143k
     perl-IO-Socket-SSL         noarch 1.01-1.fc6           slc5-os            49k
     perl-LDAP                  noarch 1:0.33-3.fc6         slc5-os           316k
     perl-Net-SSLeay            x86_64 1.30-4.fc6           slc5-os           192k
     perl-TermReadKey           x86_64 2.20-12              slc5-os            26k
     perl-XML-NamespaceSupport  noarch 1.09-1.2.1           slc5-os            15k
     perl-XML-SAX               noarch 0.14-11              slc5-updates       78k
     regexp                     x86_64 1.4-2jpp.2           slc5-os           102k
     tomcat5                    x86_64 5.5.23-0jpp.22.el5_7 slc5-updates      362k
     tomcat5-common-lib         x86_64 5.5.23-0jpp.22.el5_7 slc5-updates      225k
     tomcat5-jasper             x86_64 5.5.23-0jpp.22.el5_7 slc5-updates      1.1M
     tomcat5-jsp-2.0-api        x86_64 5.5.23-0jpp.22.el5_7 slc5-updates      103k
     tomcat5-server-lib         x86_64 5.5.23-0jpp.22.el5_7 slc5-updates      4.1M
     tomcat5-servlet-2.4-api    x86_64 5.5.23-0jpp.22.el5_7 slc5-updates      163k
     tzdata-java                x86_64 2011l-4.el5          slc5-updates      190k
     vdt_globus_essentials      x86_64 VDT1.10.1x86_64_rhap_5-4
                                                            glite-FTS_ext      13M
     vomsjapi                   x86_64 2.0.6-2.el5          epel              379k
     wsdl4j                     x86_64 1.5.2-4jpp.1         slc5-os           428k
     xalan-j2                   x86_64 2.7.0-6jpp.1         slc5-os           4.6M
     xerces-j2                  x86_64 2.7.1-7jpp.2.el5_4.2 slc5-os           3.1M
     xml-commons                x86_64 1.3.02-0.b2.7jpp.10  slc5-os            19k
     xml-commons-resolver       x86_64 1.1-1jpp.12          slc5-os           170k
    
    Transaction Summary
    ================================================================================
    Install      82 Package(s)
    Upgrade       0 Package(s)
    
    Total size: 141 M
    Total download size: 30 M
    
  3. Obtain instantclient libraries from Oracle site
    oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
    oracle-instantclient11.2-jdbc-11.2.0.3.0-1.x86_64.rpm
    
  4. Add /etc/ld.so.conf.d/glite_test.conf
    /opt/globus/lib 
    /opt/lcg/lib 
    /usr/lib/oracle/11.2/client64/lib
    /opt/glite/lib64
    
  5. run ldconfig
  6. Configure tomcat
    ln -s /etc/glite-security-trustmanager /opt/glite/etc
    ln -s /opt/glite/etc/glite-security-trustmanager/trustmanager-log4j.properties /opt/glite/etc/glite-security-trustmanager/log4j-trustmanager.properties
    

    then execute:

    #!/bin/sh
    . /opt/glite/yaim/functions/config_tomcat
    
    function yaimlog()
    {
      echo $2
    }
    
    config_tomcat
    
    mkdir /var/log/glite-security-trustmanager
    chgrp tomcat /var/log/glite-security-trustmanager
    chmod 775 /var/log/glite-security-trustmanager
    

    Point trustmanager JARs to new location:

    # ln -sf /usr/share/java/glite-security-trustmanager.jar /var/lib/tomcat5/server/lib
    # ln -sf /usr/share/java/glite-security-util-java.jar /var/lib/tomcat5/server/lib
    

    Add CATALINA_OPTS=\”-Xmx1024M\” to /etc/tomcat5/tomcat5.conf

  7. Add Oracle JDBC libs:
       cp /usr/lib/oracle/11.2/client64/lib/ojdbc6.jar /usr/share/tomcat5/common/lib/
       chown tomcat.tomcat /usr/share/tomcat5/common/lib/ojdbc6.jar 
    
  8. Try creating oracle tables for FTS.
       SQL connect string:
       connstring='fprelz/XXX@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbvrts1019.ipv6.cern.ch)(PORT=10121))(ENABLE=BROKEN)(CONNECT_DATA=(SID=DBV6)))'
       fts_schema_dir="/opt/glite/etc/glite-data-transfer-fts/schema/oracle"
    
       /usr/lib/oracle/11.2/client64/bin/sqlplus $connstring @$fts_schema_dir/oracle-schema.sql
       Then check schema version:
       /usr/lib/oracle/11.2/client64/bin/sqlplus -S -L $connstring @$fts_schema_dir/oracle-get-version.sql  
    3.4.1
       /usr/lib/oracle/11.2/client64/bin/sqlplus $connstring @/opt/glite/etc/glite-security-delegation-interface/schema/oracle/oracle-schema.sql
       Then check schema version:
       /usr/lib/oracle/11.2/client64/bin/sqlplus -S -L $connstring @/opt/glite/etc/glite-security-delegation-interface/schema/oracle/oracle-get-version.sql
    1.2.0
    
       /usr/lib/oracle/11.2/client64/bin/sqlplus -S -L $connstring @$fts_schema_dir/fts_history_pack.sql
       /usr/lib/oracle/11.2/client64/bin/sqlplus -S -L $connstring @$fts_schema_dir/fts_history_body_pack.sql
       Then check schema version:
       /usr/lib/oracle/11.2/client64/bin/sqlplus -S -L $connstring @$fts_schema_dir/package-get-version.sql FTS_HISTORY_PACK
    1.0.0
      
       /usr/lib/oracle/11.2/client64/bin/sqlplus -S -L $connstring @$fts_schema_dir/fts_purge_pack.sql
       /usr/lib/oracle/11.2/client64/bin/sqlplus -S -L $connstring @$fts_schema_dir/fts_purge_body_pack.sql
    
       Then check schema version:
       /usr/lib/oracle/11.2/client64/bin/sqlplus -S -L $connstring @$fts_schema_dir/package-get-version.sql FTS_PURGE_PACK       
    1.0.0
    

    Resulting tables:

    SQL> select * from cat;
    
    TABLE_NAME                     TABLE_TYPE
    ------------------------------ -----------
    AUDIT_CHAN_ID_SEQ              SEQUENCE
    FILE_FILE_ID_SEQ               SEQUENCE
    SE_BAD_ID_SEQ                  SEQUENCE
    TRANSFER_EXTRA_ID_SEQ          SEQUENCE
    T_AGENT                        TABLE
    T_AUDIT_CHANNEL                TABLE
    T_BAD_SES                      TABLE
    T_CHANNEL                      TABLE
    T_CHANNEL_ACL                  TABLE
    T_CHANNEL_VO_SHARE             TABLE
    T_CREDENTIAL                   TABLE
    
    TABLE_NAME                     TABLE_TYPE
    ------------------------------ -----------
    T_CREDENTIAL_CACHE             TABLE
    T_CREDENTIAL_VERS              TABLE
    T_FILE                         TABLE
    T_FILE_HISTORY                 TABLE
    T_FTS_PLUGIN                   TABLE
    T_FTS_PLUGIN_SCHEMA            TABLE
    T_HISTORY_LOG                  TABLE
    T_HISTORY_PURGE_LOG            TABLE
    T_JOB                          TABLE
    T_JOB_HISTORY                  TABLE
    T_SCHEMA_VERS                  TABLE
    
    TABLE_NAME                     TABLE_TYPE
    ------------------------------ -----------
    T_SITE_GROUP                   TABLE
    T_STAGE_REQ                    TABLE
    T_TRANSFER                     TABLE
    T_TRANSFER_EXTRA               TABLE
    T_TRANSFER_HISTORY             TABLE
    T_VO_ACL                       TABLE
    X_FILEIDS                      TABLE
    X_JOBIDS                       TABLE
    X_PURGE_FILEIDS                TABLE
    X_PURGE_JOBIDS                 TABLE
    
    32 rows selected.
    
  9. Make context file /etc/tomcat5/Catalina/localhost/glite-data-transfer-fts.xml by editing /opt/glite/etc/glite-data-transfer-fts/context.template.xml and replacing all @VAR@ variables:
    @DOCBASE@=/opt/glite/share/java/glite-data-transfer-fts.war
    @LOG4JCONFIG@=/opt/glite/etc/glite-data-transfer-fts/log4j.properties
    @DBCP_FACTORY@=org.apache.commons.dbcp.BasicDataSourceFactory
    @DBUSER@=fprelz
    @DBPASSWORD@=whatever
    @DBURL@=jdbc:oracle:thin:@dbvrts1019.ipv6.cern.ch:10121:DBV6
    @SECURITY_ENABLED@=true
    @SUBMIT_VOMS_ATTRIBUTES@=/ipv6.hepix.org/Role=NULL/Capability=NULL
    @SUBMIT_MAPFILE@=
    @ADMIN_VOMS_ATTRIBUTES@=
    @ADMIN_MAPFILE@=/opt/glite/etc/glite-data-transfer-manager-mapfile
    @VETO_MAPFILE@=/opt/glite/etc/glite-data-transfer-veto-mapfile
    @HOST_ALIAS@=
    
  10. Create map files
      echo "\"/C=IT/O=INFN/OU=Personal Certificate/L=Milano/CN=Francesco Prelz\" tomcat" > /opt/glite/etc/glite-data-transfer-manager-mapfile
      touch /opt/glite/etc/glite-data-transfer-veto-mapfile
    
  11. Restart tomcat
     
    service tomcat5 restart
    
  12. Install urlcopy FTA
    yum install glite-FTA_oracle.x86_64
    ================================================================================
     Package                          Arch   Version        Repository        Size
    ================================================================================
    Installing:
     glite-FTA_oracle                 x86_64 3.2.1-2.sl5    glite-FTS         4.2k
    Installing for dependencies:
     boost                            x86_64 1.33.1-15.el5  slc5-updates      863k
     glite-data-agents-common         x86_64 1.1.2-2.sl5    glite-FTS_updates 4.3M
     glite-data-config-service        x86_64 2.6.2-2.sl5    glite-FTS_updates 717k
     glite-data-srm-api-c             x86_64 1.1.0-13.sl5   glite-FTS_updates 1.4M
     glite-data-srm-util-cpp          x86_64 2.2.2-3.sl5    glite-FTS_updates 5.0M
     glite-data-srm2-api-c            x86_64 2.2.0-7.sl5    glite-FTS_updates 3.7M
     glite-data-transfer-agents       x86_64 3.4.7-3.sl5    glite-FTS          14M
     glite-data-transfer-proxyrenewal x86_64 1.0.0-9.sl5    glite-FTS         394k
     glite-data-transfer-url-copy     x86_64 3.2.5-3.sl5    glite-FTS         2.4M
     glite-sd2cache                   noarch 1.0.4-1        glite-FTS          12k
     glite-security-proxyrenewal      x86_64 1.3.11-4.sl5   glite-FTS          94k
     libicu                           x86_64 3.6-5.16.1     slc5-updates      5.2M
     log4cpp                          x86_64 1.0-9.el5      slc5-os           199k
     myproxy                          x86_64 VDT1.10.1x86_64_rhap_5-4.2
                                                            glite-FTS_ext     1.3M
    
    Transaction Summary
    ================================================================================
    Install      15 Package(s)
    Upgrade       0 Package(s)
    
  13. Create host certs for data transfer agents (user edguser was already created)
        cp -f /etc/grid-security/hostcert.pem /etc/grid-security/glite-data-transfer-agents-cert.pem
        cp -f /etc/grid-security/hostkey.pem /etc/grid-security/glite-data-transfer-agents-key.pem
        chown edguser:root /etc/grid-security/glite-data-transfer-agents-cert.pem
        chown edguser:root /etc/grid-security/glite-data-transfer-agents-key.pem
        chmod 644 /etc/grid-security/glite-data-transfer-agents-cert.pem
        chmod 400 /etc/grid-security/glite-data-transfer-agents-key.pem
    
  14. Configure agents: 1 ipv6.hepix.org VO agent (not python: Py_Initialize crashes with the default 2.4 python on SLC5) and 2 transfer agents.
        /opt/glite/bin/glite_data_config_generator -f /opt/glite/share/config/glite-data-transfer-agents/glite-transfer-vo-agent-oracle.config.xml -o /opt/glite/etc/glite-transfer-vo-agent-IPV6.properties.xml -l /opt/glite/etc/glite-transfer-vo-agent-IPV6.log-properties
        
        Level: low (0)
        ConnectString = (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbvrts1019.ipv6.cern.ch)(PORT=10121))(ENABLE=BROKEN)(CONNECT_DATA=(SID=DBV6)))
        User = fprelz
        Password = XXX
        Name = ipv6.hepix.org
        Log file: default (/tmp/transfer-vo-agent.log)
    
    
        /opt/glite/bin/glite_data_config_generator -f /opt/glite/share/config/glite-data-transfer-agents/glite-transfer-channel-agent-urlcopy-oracle.config.xml -o /opt/glite/etc/glite-transfer-channel-agent-INFN-GARR.properties.xml -l
    /opt/glite/etc/glite-transfer-channel-agent-INFN-GARR.log-properties
    
        Level: low (0)
        ConnectString = (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbvrts1019.ipv6.cern.ch)(PORT=10121))(ENABLE=BROKEN)(CONNECT_DATA=(SID=DBV6)))
        User = fprelz
        Password = XXX
        Name = INFN-GARR
        Log file: default (/tmp/transfer-channel-agent.log)
    
        /opt/glite/bin/glite_data_config_generator -f /opt/glite/share/config/glite-data-transfer-agents/glite-transfer-channel-agent-urlcopy-oracle.config.xml -o /opt/glite/etc/glite-transfer-channel-agent-INFN-CERN.properties.xml -l
    /opt/glite/etc/glite-transfer-channel-agent-INFN-CERN.log-properties
    
        Level: low (0)
        ConnectString = (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbvrts1019.ipv6.cern.ch)(PORT=10121))(ENABLE=BROKEN)(CONNECT_DATA=(SID=DBV6)))
        User = fprelz
        Password = XXX
        Name = INFN-CERN
        Log file: default (/tmp/transfer-channel-agent.log)
    
        chown edguser /opt/glite/etc/*transfer*agent*prop*
        chmod 640 /opt/glite/etc/*transfer*agent*prop*
        ---> For the init.d script.
        mv /opt/glite/etc/*transfer*agent*prop* /opt/glite/etc/glite-data-transfer-agents.d
        cp /opt/glite/etc/init.d/glite-data-transfer-agents /etc/init.d/transfer-agents
        Add to init.d script, to make chkconfig happy:
    # description: Processes to steer FTS data transfer.
    # processname: glite_data_transfer_agent
    # config: /opt/glite/etc/glite-data-transfer-agents.d
    
  15. Rebuild libglite_data_agents_common_dao_oracle.so, libglite_data_transfer_agent_dao_oracle.so, libglite_data_transfer_agent_dao_oracle_dumper.so to work with the Oracle 11.2 instantclient.
        Install oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm
        yum install boost-devel.x86_64
        yum install log4cpp-devel.x86_64
    

    Then rebuild and replace the three libraries:

    /opt/glite/lib64/libglite_data_agents_common_dao_oracle.so.1.1.2.ORIG
    /opt/glite/lib64/libglite_data_transfer_agent_dao_oracle_dumper.so.3.4.7.ORIG
    /opt/glite/lib64/libglite_data_transfer_agent_dao_oracle.so.3.4.7.ORIG
    
  16. Start the transfer agents
        ldconfig
        /sbin/chkconfig --add transfer-agents
        /sbin/chkconfig transfer-agents on
        /etc/init.d/transfer-agents start
    
  17. Install FTM
    yum install glite-FTM.x86_64
    ================================================================================
     Package                           Arch     Version       Repository      Size
    ================================================================================
    Installing:
     glite-FTM                         x86_64   3.2.1-2.sl5   glite-FTS       3.6k
    Installing for dependencies:
     cx_Oracle                         x86_64   5.0.3-1       glite-FTS_ext   234k
     glite-transfer-monitor-gridview   noarch   1.0.3-1       glite-FTS        12k
     glite-transfer-monitor-report     noarch   1.0.1-2       glite-FTS       132k
     glite-transfer-monitor-schema     noarch   1.0.0-1       glite-FTS       5.2k
    
    Transaction Summary
    ================================================================================
    Install       5 Package(s)
    Upgrade       0 Package(s)
    
  18. Create table and procedures for FTM:
    /usr/lib/oracle/11.2/client64/bin/sqlplus -S -L $connstring @/opt/glite/share/transfer-monitor-schema/fts_filestats_schema.sql 
    /usr/lib/oracle/11.2/client64/bin/sqlplus -S -L $connstring @/opt/glite/share/transfer-monitor-schema/fts_filestats_pack.sql
    /usr/lib/oracle/11.2/client64/bin/sqlplus -S -L $connstring @/opt/glite/share/transfer-monitor-schema/fts_filestats_pack_body.sql
    
  19. Configure /opt/glite/etc/transfer-monitor-report.conf
    DB_CONNECT_STR="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbvrts1019.ipv6.cern.ch)(PORT=10121))(ENABLE=BROKEN)(CONNECT_DATA=(SID=DBV6)))"
    DB_USER="fprelz"
    DB_PASSWORD="XXX"
    REPORTS_FTS_INSTANCE="seipersei.mi.infn.it"
    ORACLE_LOCATION=/usr/lib/oracle/11.2
    
    /etc/init.d/transfer-monitor-report-daily stop
    /etc/init.d/transfer-monitor-report-hourly stop
    /etc/init.d/transfer-monitor-report-weekly stop
    /etc/init.d/transfer-monitor-report-daily start
    /etc/init.d/transfer-monitor-report-hourly start
    /etc/init.d/transfer-monitor-report-weekly start
    
  20. Create transfer channels via the CLI:
    $ glite-transfer-channel-add -f 2 -b 10 -c Francesco.Prelz@mi.infn.it -t 8 -T 3 -s https://seipersei-v4.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement INFN-CERN mi.infn.it cern.ch
    $ glite-transfer-channel-add -f 2 -b 10 -c Francesco.Prelz@mi.infn.it -t 8 -T 3 -s https://seipersei-v4.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement INFN-GARR mi.infn.it garr.it
    $ glite-transfer-channel-setvoshare INFN-CERN ipv6.hepix.org 100 -s https://seipersei-v4.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement 
    $ glite-transfer-channel-setvoshare INFN-GARR ipv6.hepix.org 100 -s https://seipersei-v4.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement 
    $ glite-transfer-channel-addmanager -s https://seipersei-v4.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement INFN-GARR '/C=IT/O=INFN/OU=Personal Certificate/L=Milano/CN=Francesco Prelz'
    $ glite-transfer-channel-addmanager -s https://seipersei-v4.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement INFN-CERN '/C=IT/O=INFN/OU=Personal Certificate/L=Milano/CN=Francesco Prelz'
    $ glite-transfer-addvomanager -s https://seipersei-v4.mi.infn.it:8443/glite-data-transfer-fts/services/FileTransfer ipv6.hepix.org '/C=IT/O=INFN/OU=Personal Certificate/L=Milano/CN=Francesco Prelz'
    

    so that:

    $ glite-transfer-channel-list https://seipersei-v4.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement INFN-CERN
    # Using endpoint
    # https://seipersei-v4.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement
    # Service version: 3.7.0-3
    # Interface version: 3.7.0
    # Schema version: 3.4.1
    # Service features: glite-data-fts-service-3.7.0-3
    # Client version: 3.6.2
    # Client interface version: 3.6.0
    Channel: INFN-CERN
    Between: MI.INFN.IT and CERN.CH
    State: Active
    Contact: Francesco.Prelz@mi.infn.it
    Bandwidth: 10
    Nominal throughput: 8
    Number of files: 2, streams: 3
    Number of VO shares: 1
    VO 'ipv6.hepix.org' share is: 100
    
    $ glite-transfer-channel-list -v -s https://seipersei-v4.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement INFN-GARR
    # Using endpoint
    # https://seipersei-v4.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement
    # Service version: 3.7.0-3
    # Interface version: 3.7.0
    # Schema version: 3.4.1
    # Service features: glite-data-fts-service-3.7.0-3
    # Client version: 3.6.2
    # Client interface version: 3.6.0
    Channel: INFN-GARR
    Between: MI.INFN.IT and GARR.IT
    State: Active
    Contact: Francesco.Prelz@mi.infn.it
    Bandwidth: 10
    Nominal throughput: 8
    Number of files: 2, streams: 3
    Number of VO shares: 1
    VO 'ipv6.hepix.org' share is: 100
    
    $ glite-transfer-getroles -s https://seipersei-v4.mi.infn.it:8443/glite-data-transfer-fts/services/FileTransfer
    Your current clientDN is: /C=IT/O=INFN/OU=Personal Certificate/L=Milano/CN=Francesco Prelz
    
    You are authorised as Service Admin because your cert contains the following
    principal: /C=IT/O=INFN/OU=Personal Certificate/L=Milano/CN=Francesco Prelz
    
    You are authorised to submit to this service because your cert contains the
    following principal: /ipv6.hepix.org/Role=NULL/Capability=NULL
    
    You are VO manager for 1 VOs.
    You are VO manager for VO <ipv6.hepix.org> because your cert contains the
    following principal: /C=IT/O=INFN/OU=Personal Certificate/L=Milano/CN=Francesco Prelz
    
    You are channel manager for 2 channels.
    You are channel manager for channel <INFN-CERN> because your cert contains the
    following principal: /C=IT/O=INFN/OU=Personal Certificate/L=Milano/CN=Francesco Prelz
    You are channel manager for channel <INFN-GARR> because your cert contains the
    following principal: /C=IT/O=INFN/OU=Personal Certificate/L=Milano/CN=Francesco Prelz
    
  21. Create ‘service discovery’ file fallback /opt/glite/etc/services.xml:
    <services>
      <service name='EGEEfts'>
        <parameters>
          <endpoint>https://seipersei.mi.infn.it:8443/glite-data-transfer-fts/services/FileTransfer</endpoint>
          <type>org.glite.FileTransfer</type>
          <version>3.3.0</version>
        </parameters>
      </service>
      <service name='EGEEchannel'>
        <parameters>
          <endpoint>https://seipersei.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement</endpoint>
          <type>org.glite.ChannelManagement</type>
          <version>3.3.0</version>
        </parameters>
      </service>
      <service name='EGEEdelegation'>
        <parameters>
          <endpoint>https://seipersei.mi.infn.it:8443/glite-data-transfer-fts/services/gridsite-delegation</endpoint>
          <type>org.glite.Delegation</type>
          <version>3.3.0</version> 
        </parameters>
      </service>   
      <service name='INFNIPV6gridftp'>
        <parameters>
          <type>gsiftp</type>
          <site>mi.infn.it</site>
          <endpoint>gsiftp://seipersei.mi.infn.it</endpoint>
          <version>6.5</version>
        </parameters>
      </service>
      <service name='CERNIPV6gridftp'>
        <parameters>
          <type>gsiftp</type>
          <site>cern.ch</site>
          <endpoint>gsiftp://lx5v6hepix01.cern.ch</endpoint>
          <version>6.5</version>
        </parameters>
      </service>
      <service name='GARRIPV6gridftp'>
        <parameters>
          <type>gsiftp</type>
          <site>garr.it</site>
          <endpoint>gsiftp://hepix-ui.dir.garr.it</endpoint>
          <version>6.5</version>
        </parameters>
      </service>
    </services>
    
  22. Start FTS agents:
    /etc/init.d/transfer-agents start
    
  23. Now the client tools can be tested. The GSI-SOAP communications work on IPv6 only from CGSI-gSOAP version 1.3.3-2 on. Version 1.3.3-1 (found on a production UI) was still compiled with no IPv6 support in SOAP.
    Gsoap supports IPv6 on TCP since version 2.5 (2005), and on UDP since version 2.7.2 (2005), but WITH_IPV6 was apparently left undefined when compiling the gsoap stubs:
    #0  0x00000038356d4d70 in connect () from /lib64/libc.so.6
    #1  0x0000003835705e6a in open_socket () from /lib64/libc.so.6
    #2  0x000000383570626f in get_mapping () from /lib64/libc.so.6
    #3  0x00000038357065f8 in __nscd_get_map_ref () from /lib64/libc.so.6
    #4  0x0000003835704bb6 in nscd_gethst_r () from /lib64/libc.so.6
    #5  0x000000383570545a in __nscd_gethostbyname_r () from /lib64/libc.so.6
    #6  0x00000038356eaa81 in gethostbyname_r@@GLIBC_2.2.5 () from /lib64/libc.so.6
    #7  0x00002b4fb675ffd3 in tcp_gethost (soap=0xc3fb600, 
        addr=0xc412830 "seipersei.mi.infn.it", inaddr=0xc414a80) at stdsoap2.c:3060
    #8  0x00002b4fb675fd06 in tcp_connect (soap=0xc3fb600, 
        endpoint=0xc414aa1 "ttps://seipersei.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement", host=0xc412830 "seipersei.mi.infn.it", port=8443)
        at stdsoap2.c:3229
    #9  0x00002b4fb6bf1c20 in client_cgsi_plugin_open (soap=0xc3fb600, 
        endpoint=0xc414aa0 "https://seipersei.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement", hostname=0xc412830 "seipersei.mi.infn.it", 
        port=8443)
        at /home/condor/execute/dir_4197/userdir/org.glite.security.cgsi-gsoap-2.7/src/cgsi_plugin.c:630
    #10 0x00002b4fb676070a in soap_connect_command (soap=0xc3fb600, 
        http_command=2000, 
        endpoint=0xc414aa0 "https://seipersei.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement", action=0x2b4fb67a3171 "") at stdsoap2.c:12028
    

    With IPv6 enabled (on the same version of SOAP):

    #0  0x00000030d80d5260 in connect () from /lib64/libc.so.6
    #1  0x00000030d810643a in open_socket () from /lib64/libc.so.6
    #2  0x00000030d810683f in get_mapping () from /lib64/libc.so.6
    #3  0x00000030d8106bc8 in __nscd_get_map_ref () from /lib64/libc.so.6
    #4  0x00000030d8105ab3 in __nscd_getai () from /lib64/libc.so.6
    #5  0x00000030d80bc477 in gaih_inet () from /lib64/libc.so.6
    #6  0x00000030d80be2aa in getaddrinfo () from /lib64/libc.so.6
    #7  0x00002aaaaaf10881 in tcp_connect (soap=0x6056a0, 
        endpoint=0x61ebb1 "ttps://seipersei-v6.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement", host=0x61c8d0 "seipersei-v6.mi.infn.it", 
        port=8443) at stdsoap2.c:3137
    #8  0x00002aaaab16bc20 in client_cgsi_plugin_open (soap=0x6056a0, 
        endpoint=0x61ebb0 "https://seipersei-v6.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement", hostname=0x61c8d0 "seipersei-v6.mi.infn.it", 
        port=8443)
        at /home/condor/execute/dir_24523/userdir/org.glite.security.cgsi-gsoap-2.7/src/cgsi_plugin.c:630
    #9  0x00002aaaaaf1120a in soap_connect_command (soap=0x6056a0, 
        http_command=2000, 
        endpoint=0x61ebb0 "https://seipersei-v6.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement", action=0x2aaaaaf54311 "") at stdsoap2.c:12028
    

    With dual-stack UI and server, IPv4-only clients work OK via IPv4:

    $ glite-transfer-submit -s https://seipersei.mi.infn.it:8443/glite-data-transfer-fts/services/FileTransfer gsiftp://seipersei.mi.infn.it/etc/motd gsiftp://lx5v6hepix01.cern.ch/tmp/fts_test_1.txt
    7a6c73e3-6d29-11e1-b43e-e002d5af454f
    $ glite-transfer-status -s https://seipersei.mi.infn.it:8443/glite-data-transfer-fts/services/FileTransfer 7a6c73e3-6d29-11e1-b43e-e002d5af454f
    Finished
    
  24. To add a new transfer channel:
    1. - Create database entries:
      $ glite-transfer-channel-add -f 2 -b 10 -c Francesco.Prelz@mi.infn.it -t 8 -T 3 -s https://seipersei-v4.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement INFN-DESY mi.infn.it desy.de 
      $ glite-transfer-channel-setvoshare INFN-DESY ipv6.hepix.org 100 -s https://seipersei-v4.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement
      $ glite-transfer-channel-addmanager -s https://seipersei-v4.mi.infn.it:8443/glite-data-transfer-fts/services/ChannelManagement INFN-DESY '/C=IT/O=INFN/OU=Personal Certificate/L=Milano/CN=Francesco Prelz'
      
    2. - Create transfer channel agent:
      /opt/glite/bin/glite_data_config_generator -f /opt/glite/share/config/glite-data-transfer-agents/glite-transfer-channel-agent-urlcopy-oracle.config.xml -o /opt/glite/etc/glite-data-transfer-agents.d/glite-transfer-channel-agent-INFN-DESY.properties.xml -l
      /opt/glite/etc/glite-data-transfer-agents.d/glite-transfer-channel-agent-INFN-DESY.log-properties
      
          Level: low (0)
          ConnectString = (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbvrts1019.ipv6.cern.ch)(PORT=10121))(ENABLE=BROKEN)(CONNECT_DATA=(SID=DBV6)))
          User = fprelz
          Password = XXX
          Name = INFN-DESY
          Log file: default (/tmp/transfer-channel-agent.log)
      chown edguser /opt/glite/etc/glite-data-transfer-agents.d/*
      
    3. - Add the following to /opt/glite/etc/services.xml:
        <service name='DESYIPV6gridftp'>
          <parameters>
            <type>gsiftp</type>
            <site>desy.de</site>
            <endpoint>gsiftp://hepix01.desy.de</endpoint>
            <version>6.5</version>
          </parameters>
        </service>
      
    4. - Start the new agent:
      /etc/init.d/transfer-agents start
    5. - Test the new agent:
      glite-transfer-submit -s https://seipersei.mi.infn.it:8443/glite-data-transfer-fts/services/FileTransfer gsiftp://seipersei.mi.infn.it/etc/motd gsiftp://hepix01.desy.de/tmp/fts_test_1.txt
  25. To allow FTS url-copy endpoints to be resolved as IPv6 addresses (the equivalent of the -ipv6 switch to globus-url-copy), at least this patch needs to be applied to libglite_data_transfer_url_copy.so.0.0.0.