Adding a new Rucio RSE

  1. Create a new entry for a (deterministic) RSE:

rucio-admin rse add <RSE_IDENTIFIER>
  1. Point the RSE to an instance of FTS:

rucio-admin rse set-attribute --rse <RSE_IDENTIFIER> --key fts --value https://path/to/fts
  1. Set the istape field to false:

rucio-admin rse set-attribute --rse <RSE_IDENTIFIER> --key istape --value False
  1. Configure OIDC support

rucio-admin rse set-attribute --rse <RSE_IDENTIFIER> --key oidc_support --value True
  1. Allow the root user unlimited access:

rucio-admin account set-limits root <RSE_IDENTIFIER> "infinity"
  1. Allow any other service user unlimited access, e.g.

rucio-admin account set-limits service_skaosrc_rtm <RSE_IDENTIFIER> "infinity"
  1. Configure one or more protocols, e.g. for https on 443:

rucio-admin rse add-protocol --hostname ...ac.uk --scheme https --prefix '/path/to/storage/area' --port 443 --imp 'rucio.rse.protocols.gfal.Default' --domain-json '{"lan": {"read": 1, "write": 1, "delete": 1}, "wan": {"read": 1, "write": 1, "delete": 1, "third_party_copy_read": 1, "third_party_copy_write": 1}}' <RSE_IDENTIFIER>

If adding more than one, set the third-party copy priority accordingly. Also, if adding root protocol, the corresponding prefix requires an additional slash (/) at the beginning.

  1. Add links to other RSEs (these are directional):

rucio-admin rse add-distance --ranking 1 <RSE_IDENTIFIER> <OTHER_RSE_IDENTIFIER>
rucio-admin rse add-distance --ranking 1 <OTHER_RSE_IDENTIFIER> <RSE_IDENTIFIER>
rucio-admin rse add-distance --distance 1 <RSE_IDENTIFIER> <OTHER_RSE_IDENTIFIER>
rucio-admin rse add-distance --distance 1 <OTHER_RSE_IDENTIFIER> <RSE_IDENTIFIER>

You may need to verify that agis_distance and ranking columns are filled in the distances table, otherwise you will end up with “no path” errors in the conveyor daemon:

From inside the Rucio database container:

psql -U rucio

Run the following to check:

SELECT r1.rse, r2.rse, ranking, agis_distance FROM rucio.distances LEFT JOIN rses r1 ON r1.id=src_rse_id LEFT JOIN rses r2 ON r2.id=dest_rse_id WHERE ranking<>1 OR agis_distance<>1;

If agis_distance and ranking values are not set, update them as required. If actual distances are not used, this may simply be a case of setting these values to 1, i.e.

update rucio.distances set agis_distance=1
update rucio.distances set ranking=1