From 2c90e0aa3db479a311e6812ba20ed9ba4082b7eb Mon Sep 17 00:00:00 2001 From: martindemko <325073@mail.muni.cz> Date: Thu, 23 Apr 2026 13:30:59 +0200 Subject: [PATCH 01/10] adds neccesarry files --- host_vars/pulsar-re2.grid.cesnet.cz/secret.yml | 14 ++++++++++++++ host_vars/pulsar-re2.grid.cesnet.cz/vars.yml | 15 +++++++++++++++ hosts.yml | 2 ++ 3 files changed, 31 insertions(+) create mode 100644 host_vars/pulsar-re2.grid.cesnet.cz/secret.yml create mode 100644 host_vars/pulsar-re2.grid.cesnet.cz/vars.yml diff --git a/host_vars/pulsar-re2.grid.cesnet.cz/secret.yml b/host_vars/pulsar-re2.grid.cesnet.cz/secret.yml new file mode 100644 index 0000000..e1a492d --- /dev/null +++ b/host_vars/pulsar-re2.grid.cesnet.cz/secret.yml @@ -0,0 +1,14 @@ +$ANSIBLE_VAULT;1.1;AES256 +63616434326663326431623131663336323264386666313463643634636630396462626234393730 +3038333563313737343234313633623530316538346634380a323637613733393836653131326564 +61363566383438323334333165363437333133313765353631613232613263653361613931613265 +6638346566313664630a333563346639303061313738373437383161393238343964373564336366 +38343161616433646330643431353137626263636266653331303934616265353233663733633834 +36653063393264346136623436643735636163663638316334386337313661376536316537373966 +31396339323535353066363337626238396464666139303537393034663035373065336335653263 +36663030663461353531373731316133306263373961356335353666393433613166303135666261 +37343965316563303166346366313834393431386336376532363730343432363333383765386337 +32393737336132396363313432323666333737616266656263646164616363633233363466343265 +63336261356362316531353536626437346266353337313735623933373462323937373736653736 +62333331313434353937333437373534643633323437326536363736353234363830393130383062 +6366 diff --git a/host_vars/pulsar-re2.grid.cesnet.cz/vars.yml b/host_vars/pulsar-re2.grid.cesnet.cz/vars.yml new file mode 100644 index 0000000..93ffa82 --- /dev/null +++ b/host_vars/pulsar-re2.grid.cesnet.cz/vars.yml @@ -0,0 +1,15 @@ +# Galaxy/Pulsar user setup +pulsar: +## Specific settings for pulsar-re (needs to be moved into host_vars foder + user_name: galaxyelixir + uid: 2469 + gid: 10145 + group: galaxyelixir + nfs_home: "brno11-elixir" + nfs_prefix: pulsar-re + +# Put your Galaxy server's fully qualified domain name (FQDN) (or the FQDN of the RabbitMQ server) above. +rabbitmq_hostname: "galaxy-re.grid.cesnet.cz" # DEMON: Important to have proper FQDN of connected Galaxy server (or at least RabbitMQ server) +rabbitmq_vhost: "pulsar2" # DEMON: must be the same rabbitmq vhost set for communication between Galaxy and Pulsar set on Galaxy side +rabbitmq_user: "{{ pulsar.user_name }}" # DEMON: must be user running connected Galaxy server +rabbitmq_port: 5671 # DEMON: must be port where to contact RabbitMQ server diff --git a/hosts.yml b/hosts.yml index ca51026..b5f9e11 100644 --- a/hosts.yml +++ b/hosts.yml @@ -15,6 +15,8 @@ pulsarservers: ansible_user: debian pulsar-re.grid.cesnet.cz: ansible_user: root + pulsar-re2.grid.cesnet.cz: + ansible_user: debian pulsar-cz.grid.cesnet.cz: ansible_user: debian pulsar-eu.grid.cesnet.cz: From 5b4ea2b5faef4ec2c3fec5dffe51a5dcf777a0e1 Mon Sep 17 00:00:00 2001 From: martindemko <325073@mail.muni.cz> Date: Mon, 27 Apr 2026 09:25:05 +0200 Subject: [PATCH 02/10] changes to merge RE stuf to main --- group_vars/pulsarservers.yml | 51 +++++++----- .../pulsar-re2.grid.cesnet.cz/secret.yml | 56 +++++++++---- host_vars/pulsar-re2.grid.cesnet.cz/vars.yml | 21 ++++- hosts.yml | 2 + pulsar.yml | 41 +++++----- roles/galaxyproject.miniconda/README.md | 69 ---------------- .../galaxyproject.miniconda/defaults/main.yml | 58 -------------- .../meta/.galaxy_install_info | 2 - roles/galaxyproject.miniconda/meta/main.yml | 27 ------- .../galaxyproject.miniconda/tasks/install.yml | 26 ------- roles/galaxyproject.miniconda/tasks/main.yml | 78 ------------------- roles/galaxyproject.miniconda/tests/inventory | 2 - roles/galaxyproject.miniconda/tests/test.yml | 7 -- roles/metacentrum.krbnfs/tasks/main.yml | 2 +- 14 files changed, 119 insertions(+), 323 deletions(-) delete mode 100644 roles/galaxyproject.miniconda/README.md delete mode 100644 roles/galaxyproject.miniconda/defaults/main.yml delete mode 100644 roles/galaxyproject.miniconda/meta/.galaxy_install_info delete mode 100644 roles/galaxyproject.miniconda/meta/main.yml delete mode 100644 roles/galaxyproject.miniconda/tasks/install.yml delete mode 100644 roles/galaxyproject.miniconda/tasks/main.yml delete mode 100644 roles/galaxyproject.miniconda/tests/inventory delete mode 100644 roles/galaxyproject.miniconda/tests/test.yml diff --git a/group_vars/pulsarservers.yml b/group_vars/pulsarservers.yml index 33b1b7f..c4253e3 100644 --- a/group_vars/pulsarservers.yml +++ b/group_vars/pulsarservers.yml @@ -1,11 +1,25 @@ drmaa_version: 1.0.19 pbs_server: pbs-m1.metacentrum.cz install_nfs_conda: false +pulsar_network_homedir: "/storage/{{ pulsar.nfs_home }}/home/{{ pulsar.user_name }}" + +# Miniconda settings +miniconda_prefix: "{{ pulsar_network_homedir }}/conda" +miniconda_exec: "{{ miniconda_prefix }}/bin/mamba" +miniconda_version: 23.1.0 +miniconda_channels: + - 'bioconda' + - 'conda-forge' + - 'iuc' + - 'r' + - 'anaconda' + - 'defaults' +csnt_dependency_resolvers: {} # only galaxyproject.pulsar role vars below +pulsar_user: "{{ pulsar.user_name }}" pulsar_root: /opt/pulsar pulsar_package_version: "0.15.6" -pulsar_network_homedir: "/storage/{{ pulsar.nfs_home }}/home/{{ pulsar.user_name }}" pulsar_data_dir: "{{ pulsar_network_homedir }}/{{ pulsar.nfs_prefix }}" pulsar_staging_dir: "{{ pulsar_data_dir }}/files/staging" pulsar_cleanup_dir: "{{ pulsar_data_dir }}/files/cleanup_jobs" @@ -57,23 +71,24 @@ pulsar_yaml_config: ## We also need to create the dependency resolvers configuration so pulsar knows how to find and install dependencies ## for the tools we ask it to run. The simplest method which covers 99% of the use cases is to use conda auto installs ## similar to how Galaxy works. - #dependency_resolution: - # resolvers: - # - type: conda - # auto_init: true - # auto_install: true - # ensure_channels: "{{ conda_channels|join(',') }}" - # exec: "{{ conda_exec }}" - # prefix: "{{ conda_prefix }}" - container_resolvers: - - type: explicit_singularity - - cache_directory: /cvmfs/singularity.galaxyproject.org/all/ - type: cached_mulled_singularity - - auto_install: true - type: mulled_singularity - - auto_install: false - cache_directory: /cvmfs/singularity.galaxyproject.org/all/ - type: build_mulled_singularity + dependency_resolution: + resolvers: "{{ csnt_dependency_resolvers }}" +# resolvers: +# - type: conda +# auto_init: true +# auto_install: true +# ensure_channels: "{{ miniconda_channels|join(',') }}" +# exec: "{{ miniconda_exec }}" +# prefix: "{{ miniconda_prefix }}" +# container_resolvers: +# - type: explicit_singularity +# - cache_directory: /cvmfs/singularity.galaxyproject.org/all/ +# type: cached_mulled_singularity +# - auto_install: true +# type: mulled_singularity +# - auto_install: false +# cache_directory: /cvmfs/singularity.galaxyproject.org/all/ +# type: build_mulled_singularity managers: _default_: type: queued_drmaa diff --git a/host_vars/pulsar-re2.grid.cesnet.cz/secret.yml b/host_vars/pulsar-re2.grid.cesnet.cz/secret.yml index e1a492d..e3cb3aa 100644 --- a/host_vars/pulsar-re2.grid.cesnet.cz/secret.yml +++ b/host_vars/pulsar-re2.grid.cesnet.cz/secret.yml @@ -1,14 +1,44 @@ $ANSIBLE_VAULT;1.1;AES256 -63616434326663326431623131663336323264386666313463643634636630396462626234393730 -3038333563313737343234313633623530316538346634380a323637613733393836653131326564 -61363566383438323334333165363437333133313765353631613232613263653361613931613265 -6638346566313664630a333563346639303061313738373437383161393238343964373564336366 -38343161616433646330643431353137626263636266653331303934616265353233663733633834 -36653063393264346136623436643735636163663638316334386337313661376536316537373966 -31396339323535353066363337626238396464666139303537393034663035373065336335653263 -36663030663461353531373731316133306263373961356335353666393433613166303135666261 -37343965316563303166346366313834393431386336376532363730343432363333383765386337 -32393737336132396363313432323666333737616266656263646164616363633233363466343265 -63336261356362316531353536626437346266353337313735623933373462323937373736653736 -62333331313434353937333437373534643633323437326536363736353234363830393130383062 -6366 +38363034333061383832316233613735333633653034643435663733663064323331646137633130 +6133613965393661663934646639353833656432313532630a666234396134303866303735636533 +64613538373265323631316339366335353161313937663663386633356466643533656531333136 +3735383133373535300a353731366138333731666462636261393632386263616666366466333738 +37323161303563393636616134333132306261613562323930383439343131663265326134346562 +32633732363435313935373234666532393261396237396563623830643266633936633661346632 +36333839383535343734326664393032666163373165633936333031313631343362626431623162 +61643264623464613862393635633631613136356232633663633461303931363737343236633864 +37633935616365336464316333626166343465633134336132353037343664623364623233363139 +32306139303335396135396533376231363137346339306335353137663166303132393865313438 +64333063306134396131366331656332316563653037313366633835653730333866623166316264 +39363566623931616438303034646438316564623336303335363630623165653166633431353133 +64656438323363333465323565623133343234616563316236663261363165663539343861666632 +33353166363937366265393430633738356334626263643132623637653265363831643564343434 +66313266306163356138373339346165616436613764623364386333316131303363656366356239 +32383166373139343136393537383537303130373961313761323133326637626165326134643738 +35623230353937313535656231626639636436373234333061326131376263613131643230323732 +62353231316463663462303339333364353538326333333464386635616636393061633239346464 +37313862353562363537303939656439316530323364386262373063643434343062376135316631 +61633364303632313262653336343238313133316433326439396233383264313035626136663633 +38376661656438626638363261643631366430666439346632616361353334663465376437303362 +61396133623562313863633130373331363836313536633865373363663064626639343861663061 +34326530366432383066313862656164363131353232393435653630303532336631666361313662 +33653864623034663364313562323961306637656537626637376532656166343031316565653833 +33376530323130623635343432326465313233643137323663633030306433383633323135386533 +64326339376336303130303032613936336439383565353838376438323065633035376532323933 +33613837363664303432336431306636366431323332333831663434636232323063343931363937 +31306164383031626537353766663431366265396132666563616461366132373863316464373064 +39383634376465646163653264393235646165633830663131333961366434333935663138623165 +64343563626131646136393264376565643234306530653963623431653333363161343263653431 +39346465323565633566613636323434363039633562353430303930653463323966623535643838 +35643438313563353966646262343931353331373066386234393562653734333138353937306531 +34663333323830356232643635386535666466613230383833316632316138396233656263626665 +63643531333366356339353030373435343663376563333836313038636331383966633763393864 +39363739393636363931353337336661326662326230643031633932633737613436613261333233 +61343963663164643162633662623032356662646631643834363466346530373834653338383739 +64333239653332313964323137653037636363346662623361653861636165616236353963646235 +66643132386436373836363666626339626630646136633264663336353430363566313734346265 +61616166323132353539393763626430666435623563323830616330383162613631303963656535 +64623639643461323163613837363765316431613937393361393235373537383562336537393561 +34636262643163376332353030636437323566616537666238313761346566666537353033653361 +30323531353635326332623536613631393337633361623333393863653064313531326561363636 +346562396631323335386463373335363435 diff --git a/host_vars/pulsar-re2.grid.cesnet.cz/vars.yml b/host_vars/pulsar-re2.grid.cesnet.cz/vars.yml index 93ffa82..907556a 100644 --- a/host_vars/pulsar-re2.grid.cesnet.cz/vars.yml +++ b/host_vars/pulsar-re2.grid.cesnet.cz/vars.yml @@ -1,6 +1,5 @@ # Galaxy/Pulsar user setup pulsar: -## Specific settings for pulsar-re (needs to be moved into host_vars foder user_name: galaxyelixir uid: 2469 gid: 10145 @@ -8,6 +7,26 @@ pulsar: nfs_home: "brno11-elixir" nfs_prefix: pulsar-re +miniconda_channels: + - 'conda-forge' + - 'bioconda' + - 'iuc' + - 'r' + - 'anaconda' + - 'petrnovak' + - 'defaults' +miniconda_prefix: "/storage/{{ pulsar.nfs_home }}/home/{{ pulsar.user_name }}/anaconda3" +miniconda_exec: "{{ miniconda_prefix }}/bin/mamba" + +pulsar_cleanup_delay: "40d" # DEMON: pulsar-re* need this to have over 30d +csnt_dependency_resolvers: + - type: conda + auto_init: true + auto_install: true + ensure_channels: "{{ miniconda_channels|join(',') }}" + exec: "{{ miniconda_exec }}" + prefix: "{{ miniconda_prefix }}" + # Put your Galaxy server's fully qualified domain name (FQDN) (or the FQDN of the RabbitMQ server) above. rabbitmq_hostname: "galaxy-re.grid.cesnet.cz" # DEMON: Important to have proper FQDN of connected Galaxy server (or at least RabbitMQ server) rabbitmq_vhost: "pulsar2" # DEMON: must be the same rabbitmq vhost set for communication between Galaxy and Pulsar set on Galaxy side diff --git a/hosts.yml b/hosts.yml index b5f9e11..c00295d 100644 --- a/hosts.yml +++ b/hosts.yml @@ -4,6 +4,8 @@ nometapuppet: ansible_user: debian pulsar-qa2.galaxy.cloud.e-infra.cz: ansible_user: debian + pulsar-re2.grid.cesnet.cz: + ansible_user: debian pulsarservers: hosts: diff --git a/pulsar.yml b/pulsar.yml index 23c316f..33eb8f3 100644 --- a/pulsar.yml +++ b/pulsar.yml @@ -4,22 +4,21 @@ become: yes - hosts: pulsarservers - vars: - pulsar_user: "{{ pulsar.user_name }}" - pbs_drmaa_version: "1.0.19" - - # Miniconda settings - miniconda_prefix: "{{ pulsar_network_homedir }}/conda" - miniconda_version: 23.1.0 - miniconda_base_env_packages: ['mamba'] - miniconda_channels: - - 'conda-forge' - - 'bioconda' - - 'iuc' - - 'r' - - 'anaconda' - - 'petrnovak' # DEMON: this is pecific for RE Galaxy and pulsar-re but could be usefull also for usegalaxy.cz if using RE tools - - 'defaults' +# vars: +# pulsar_user: "{{ pulsar.user_name }}" +# pbs_drmaa_version: "1.0.19" +# +# # Miniconda settings +# miniconda_prefix: "{{ pulsar_network_homedir }}/conda" +# miniconda_exec: "{{ miniconda_prefix }}/bin/mamba" +# miniconda_version: 23.1.0 +# miniconda_channels: +# - 'bioconda' +# - 'conda-forge' +# - 'iuc' +# - 'r' +# - 'anaconda' +# - 'defaults' pre_tasks: - group: @@ -52,11 +51,11 @@ post_tasks: ## DEMON: This task might be necessary to comment out for pulsar-re - - name: copy dependency_resolvers_config into pulsar config folder - ansible.builtin.copy: - src: dependency_resolvers_conf.xml - dest: "{{ pulsar_root }}/config/dependency_resolvers_conf.xml" - become: yes +# - name: copy dependency_resolvers_config into pulsar config folder +# ansible.builtin.copy: +# src: dependency_resolvers_conf.xml +# dest: "{{ pulsar_root }}/config/dependency_resolvers_conf.xml" +# become: yes - name: Create .drmaa folder in NFS home ansible.builtin.file: path: "{{ pulsar_network_homedir }}/.drmaa" diff --git a/roles/galaxyproject.miniconda/README.md b/roles/galaxyproject.miniconda/README.md deleted file mode 100644 index 51dc2ab..0000000 --- a/roles/galaxyproject.miniconda/README.md +++ /dev/null @@ -1,69 +0,0 @@ -galaxyproject.miniconda -======================= - -An [Ansible][ansible] role for installing and managing [Miniconda][miniconda] installation. Additionally, the role can -manage the creation of a [Conda][conda] environment that can be used to create a [venv][venv] for [Galaxy][galaxy]. - -[ansible]: https://www.ansible.com/ -[miniconda]: https://docs.conda.io/en/latest/miniconda.html -[conda]: https://docs.conda.io/en/latest/ -[venv]: https://docs.python.org/3/tutorial/venv.html -[galaxy]: https://galaxyproject.org/ - -Requirements ------------- - -A [Conda][conda]-compatible version of Linux or macOS is required. - -Role Variables --------------- - -See [defaults/main.yml](defaults/main.yml) for a full list. - -The only required variable is `miniconda_prefix`, the root of the Conda installation. - -To create arbitrary conda environments, use the variable `miniconda_conda_environments` as shown in the defaults, or the -example below. The role will also run `conda install` to update these environments if you change their list of packages -or package versions. - -To create an env named `_galaxy_` for creating a venv for [Galaxy][galaxy], set `galaxy_conda_create_env` to `true`. You -can then use `{{ miniconda_prefix }}/envs/_galaxy_/bin/virtualenv` as the value to `galaxy_virtualenv_command` in -[galaxyproject.galaxy][galaxy-role]. This is particularly useful if you need a cross-platform copy of Python and -Galaxy's venv to be deployed on a shared filesystem between a Galaxy server and cluster that may not have matching OS -distributions and versions. - -[galaxy-role]: https://github.com/galaxyproject/ansible-galaxy - -Dependencies ------------- - -None - -Example Playbook ----------------- - -```yaml -- hosts: localhost - vars: - miniconda_prefix: /conda - miniconda_conda_environments: - python@3.9: - channels: # optional, defaults to miniconda_channels - - conda-forge - - defaults - packages: - - python=3.9 - connection: local - roles: - - galaxyproject.miniconda -``` - -License -------- - -MIT - -Author Information ------------------- - -[View contributors on GitHub](https://github.com/galaxyproject/ansible-miniconda/graphs/contributors) diff --git a/roles/galaxyproject.miniconda/defaults/main.yml b/roles/galaxyproject.miniconda/defaults/main.yml deleted file mode 100644 index ae43fef..0000000 --- a/roles/galaxyproject.miniconda/defaults/main.yml +++ /dev/null @@ -1,58 +0,0 @@ ---- - -# Installers are not released for every version of conda, you can use this to -# `conda install conda={{ miniconda_version }}` a specific version of conda. If set to `latest` then the role will -# perform a `conda update conda` instead. -miniconda_version: latest - -# If you wish to install e.g. a conda-forge version of conda you can do so by setting channels. This causes -# `--override-channels --channel [--channel ...]` to be specified on the call to -# `conda install conda...` or `conda update conda`. -miniconda_channels: [] - -# Use a specific installer version and python version. The default is to use the latest installer. If you specify a -# version, it must exist in https://repo.anaconda.com/miniconda/ -# -# The Python major and minor version e.g. '3.9' (or '39') of the installer -miniconda_installer_python: null -# The conda version of the installer -miniconda_installer_version: latest - -# List packages to install into conda's base environment -# e.g. -# miniconda_base_env_packages: ['mamba'] -miniconda_base_env_packages: [] - -# Create environments using the provided description. e.g.: -# -# miniconda_conda_environments: -# python@3.9: -# channels: # optional, defaults to miniconda_channels -# - conda-forge -# - defaults -# packages: -# - python=3.9 -miniconda_conda_environments: {} - -# Automatically create a conda env using virtualenv from conda-forge for Galaxy (https://galaxyproject.org/) -galaxy_conda_create_env: false -galaxy_conda_env: _galaxy_ -galaxy_conda_env_channels: - - conda-forge - - defaults -galaxy_conda_env_packages: - - python=3.6 - - pip>=9 - - virtualenv>=16 - -# You generally should not need to set these yourself -# -# ansible_distribution is 'MacOSX' if ansible_system is 'Darwin' -# ansible_system is 'Linux' on Linux -miniconda_installer_os: "{{ ansible_distribution if ansible_system == 'Darwin' else ansible_system }}" -miniconda_installer_arch: "{{ ansible_architecture }}" -# The installer filename on https://repo.anaconda.com/miniconda/ to fetch and run -miniconda_installer: >- - Miniconda3-{{ 'py' ~ (miniconda_python | replace('.', '')) ~ '_' ~ miniconda_version if miniconda_installer_version != 'latest' else 'latest' }}-{{ miniconda_installer_os }}-{{ miniconda_installer_arch }}.sh -# The shell to call the downloaded installer script with -miniconda_installer_shell: /bin/sh diff --git a/roles/galaxyproject.miniconda/meta/.galaxy_install_info b/roles/galaxyproject.miniconda/meta/.galaxy_install_info deleted file mode 100644 index 3b859ac..0000000 --- a/roles/galaxyproject.miniconda/meta/.galaxy_install_info +++ /dev/null @@ -1,2 +0,0 @@ -install_date: Mon Mar 27 12:26:27 2023 -version: 0.3.1 diff --git a/roles/galaxyproject.miniconda/meta/main.yml b/roles/galaxyproject.miniconda/meta/main.yml deleted file mode 100644 index 474e62f..0000000 --- a/roles/galaxyproject.miniconda/meta/main.yml +++ /dev/null @@ -1,27 +0,0 @@ -galaxy_info: - namespace: galaxyproject - role_name: miniconda - author: The Galaxy Project - description: | - Install and maintain a Miniconda (https://docs.conda.io/en/latest/miniconda.html) installation, and optionally, for Galaxy (https://galaxyproject.org/) - company: The Galaxy Project - license: MIT - min_ansible_version: 2.7 - github_branch: main - platforms: - - name: GenericLinux - versions: - - all - - name: macOS - versions: - - all - - name: MacOSX - versions: - - 10.13 - - 10.14 - galaxy_tags: - - system - - galaxy - - conda - - miniconda -dependencies: [] diff --git a/roles/galaxyproject.miniconda/tasks/install.yml b/roles/galaxyproject.miniconda/tasks/install.yml deleted file mode 100644 index 8d39383..0000000 --- a/roles/galaxyproject.miniconda/tasks/install.yml +++ /dev/null @@ -1,26 +0,0 @@ ---- - -- name: Create miniconda installer tempfile - tempfile: - prefix: ansible-miniconda-installer. - suffix: .sh - register: miniconda_installer_tempfile - -- name: Collect miniconda installer - get_url: - url: "https://repo.anaconda.com/miniconda/{{ miniconda_installer }}" - dest: "{{ miniconda_installer_tempfile.path }}" - force: true - -- name: miniconda installer block - block: - - - name: Run miniconda installer - command: "{{ miniconda_installer_shell }} {{ miniconda_installer_tempfile.path }} -b -p {{ miniconda_prefix }}" - - always: - - - name: Remove minicoda installer - file: - path: "{{ miniconda_installer_tempfile.path }}" - state: absent diff --git a/roles/galaxyproject.miniconda/tasks/main.yml b/roles/galaxyproject.miniconda/tasks/main.yml deleted file mode 100644 index 180bbdd..0000000 --- a/roles/galaxyproject.miniconda/tasks/main.yml +++ /dev/null @@ -1,78 +0,0 @@ ---- - -- name: Check for miniconda existence - stat: - path: "{{ miniconda_prefix }}/bin/conda" - register: miniconda_exists - -- name: Include install tasks - include_tasks: install.yml - when: not miniconda_exists.stat.exists - -- name: Collect miniconda version - command: "{{ miniconda_prefix }}/bin/conda -V" - register: miniconda_installed_version - changed_when: false - -- name: Update miniconda version (exact) - command: >- - {{ miniconda_prefix }}/bin/conda install --yes - {{ '--override-channels --channel' if miniconda_channels else '' }} - {{ miniconda_channels | join(' --channel ') }} - conda={{ miniconda_version }} - when: miniconda_version != 'latest' and (miniconda_installed_version.stdout.split() | last) != miniconda_version - -- name: Update miniconda version (latest) - command: >- - {{ miniconda_prefix }}/bin/conda update --yes - {{ '--override-channels --channel' if miniconda_channels else '' }} - {{ miniconda_channels | join(' --channel ') }} - conda - register: __miniconda_conda_update_conda_output - changed_when: "'All requested packages already installed' not in __miniconda_conda_update_conda_output.stdout" - when: miniconda_version == 'latest' - -- name: Install packages to conda base environment - command: >- - {{ miniconda_prefix }}/bin/conda install --yes - {{ '--override-channels --channel' if (miniconda_channels) else '' }} - {{ miniconda_channels | join(' --channel ') }} - {{ miniconda_base_env_packages | join(' ') }} - when: miniconda_base_env_packages - -# Apparently item.value.copy always refers to the built-in copy method of the dict, whereas item.value['copy'] only does -# if the key 'copy' is not defined -- name: Create conda envs - command: >- - {{ miniconda_prefix }}/bin/conda create --yes - {{ '--override-channels --channel' if (item.value.channels | default(miniconda_channels)) else '' }} - {{ (item.value.channels | default(miniconda_channels)) | join(' --channel ') }} - {{ '--name ' ~ item.key if not item.key.startswith('/') else '--prefix ' ~ item.key }} - {{ '--copy' if (item.value['copy'] is boolean and item.value['copy']) else '' }} - {{ item.value.packages | join(' ') }} - args: - creates: "{{ miniconda_prefix ~ '/envs/' ~ item.key if not item.key.startswith('/') else item.key }}" - loop: "{{ miniconda_conda_environments | dict2items }}" - -- name: Update conda envs - command: >- - {{ miniconda_prefix }}/bin/conda install --yes - {{ '--override-channels --channel' if (item.value.channels | default(miniconda_channels)) else '' }} - {{ (item.value.channels | default(miniconda_channels)) | join(' --channel ') }} - {{ '--name ' ~ item.key if not item.key.startswith('/') else '--prefix ' ~ item.key }} - {{ '--copy' if (item.value['copy'] is boolean and item.value['copy']) else '' }} - {{ item.value.packages | join(' ') }} - register: __miniconda_conda_install_output - changed_when: "'All requested packages already installed' not in __miniconda_conda_install_output.stdout" - loop: "{{ miniconda_conda_environments | dict2items }}" - -- name: Create Galaxy conda env - command: >- - {{ miniconda_prefix }}/bin/conda create --yes - {{ '--override-channels --channel' if galaxy_conda_env_channels else '' }} - {{ galaxy_conda_env_channels | join(' --channel ') }} - --name {{ galaxy_conda_env }} - {{ galaxy_conda_env_packages | join(' ') }} - args: - creates: "{{ miniconda_prefix }}/envs/{{ galaxy_conda_env }}" - when: galaxy_conda_create_env diff --git a/roles/galaxyproject.miniconda/tests/inventory b/roles/galaxyproject.miniconda/tests/inventory deleted file mode 100644 index 878877b..0000000 --- a/roles/galaxyproject.miniconda/tests/inventory +++ /dev/null @@ -1,2 +0,0 @@ -localhost - diff --git a/roles/galaxyproject.miniconda/tests/test.yml b/roles/galaxyproject.miniconda/tests/test.yml deleted file mode 100644 index 3a39277..0000000 --- a/roles/galaxyproject.miniconda/tests/test.yml +++ /dev/null @@ -1,7 +0,0 @@ ---- -- hosts: localhost - remote_user: root - vars: - miniconda_prefix: "{{ lookup('env', 'TRAVIS_BUILD_DIR') }}/conda" - roles: - - ansible-miniconda diff --git a/roles/metacentrum.krbnfs/tasks/main.yml b/roles/metacentrum.krbnfs/tasks/main.yml index 780aa98..8db0889 100644 --- a/roles/metacentrum.krbnfs/tasks/main.yml +++ b/roles/metacentrum.krbnfs/tasks/main.yml @@ -10,7 +10,7 @@ - name: Metacentrum repo key apt_key: url: https://repo.metacentrum.cz/key.asc - id: F11383F552848522E4EACA443573FD94A385CDB0 +# id: F11383F552848522E4EACA443573FD94A385CDB0 when: ansible_os_family == 'Debian' - name: Metacentrum repo From ec8912a0e6a09cc71a663cfded8c127c9bd5435f Mon Sep 17 00:00:00 2001 From: Martin Demko <325073@mail.muni.cz> Date: Mon, 27 Apr 2026 13:56:31 +0200 Subject: [PATCH 03/10] optimizes conda settings --- dependency_resolvers_conf.xml | 2 -- group_vars/pulsarservers.yml | 5 +---- 2 files changed, 1 insertion(+), 6 deletions(-) delete mode 100644 dependency_resolvers_conf.xml diff --git a/dependency_resolvers_conf.xml b/dependency_resolvers_conf.xml deleted file mode 100644 index 29a9381..0000000 --- a/dependency_resolvers_conf.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/group_vars/pulsarservers.yml b/group_vars/pulsarservers.yml index c4253e3..c83efea 100644 --- a/group_vars/pulsarservers.yml +++ b/group_vars/pulsarservers.yml @@ -1,6 +1,7 @@ drmaa_version: 1.0.19 pbs_server: pbs-m1.metacentrum.cz install_nfs_conda: false +conda_auto_init: "{{ install_nfs_conda }}" pulsar_network_homedir: "/storage/{{ pulsar.nfs_home }}/home/{{ pulsar.user_name }}" # Miniconda settings @@ -10,10 +11,6 @@ miniconda_version: 23.1.0 miniconda_channels: - 'bioconda' - 'conda-forge' - - 'iuc' - - 'r' - - 'anaconda' - - 'defaults' csnt_dependency_resolvers: {} # only galaxyproject.pulsar role vars below From 6e827577e8be36253171ce2d986bb5eeec0a60a9 Mon Sep 17 00:00:00 2001 From: Martin Demko <325073@mail.muni.cz> Date: Mon, 27 Apr 2026 13:57:36 +0200 Subject: [PATCH 04/10] fixes my ssh connection --- ansible.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible.cfg b/ansible.cfg index 803e98f..a7e9653 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -22,3 +22,4 @@ always = True [ssh_connection] pipelining = true +ssh_args = -o GSSAPIAuthentication=no -o GSSAPIDelegateCredentials=no From 1c6a6c9bf1ca17c140610d4354e6b677bd2a5f27 Mon Sep 17 00:00:00 2001 From: Martin Demko <325073@mail.muni.cz> Date: Mon, 27 Apr 2026 15:25:11 +0200 Subject: [PATCH 05/10] updates metacentrum repo key ID --- roles/metacentrum.krbnfs/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/metacentrum.krbnfs/tasks/main.yml b/roles/metacentrum.krbnfs/tasks/main.yml index 8db0889..8ff8b51 100644 --- a/roles/metacentrum.krbnfs/tasks/main.yml +++ b/roles/metacentrum.krbnfs/tasks/main.yml @@ -10,7 +10,7 @@ - name: Metacentrum repo key apt_key: url: https://repo.metacentrum.cz/key.asc -# id: F11383F552848522E4EACA443573FD94A385CDB0 + id: 3CCAEBFDC3398E762111FB2B403875C13E1F1A7D when: ansible_os_family == 'Debian' - name: Metacentrum repo From f2d62905d0d0e158f4c5286569763102add108e7 Mon Sep 17 00:00:00 2001 From: Martin Demko <325073@mail.muni.cz> Date: Mon, 27 Apr 2026 15:31:45 +0200 Subject: [PATCH 06/10] cleanup old code and comments --- group_vars/pulsarservers.yml | 22 +--------------------- pulsar.yml | 22 ---------------------- 2 files changed, 1 insertion(+), 43 deletions(-) diff --git a/group_vars/pulsarservers.yml b/group_vars/pulsarservers.yml index c83efea..0bd3cc6 100644 --- a/group_vars/pulsarservers.yml +++ b/group_vars/pulsarservers.yml @@ -63,29 +63,9 @@ pulsar_yaml_config: amqp_publish_retry_interval_step: 10 amqp_publish_retry_interval_max: 60 - ## DEMON: this setting is specific for RE Galaxy and pulsar-re cause usegalaxy.cz and galaxy-umsa depends only on singu;arity images - # - ## We also need to create the dependency resolvers configuration so pulsar knows how to find and install dependencies - ## for the tools we ask it to run. The simplest method which covers 99% of the use cases is to use conda auto installs - ## similar to how Galaxy works. + ## DEMON: resolvers is an empty list in most cases (for Galaxy supporting Singularity images over CVMFS instead of Conda) dependency_resolution: resolvers: "{{ csnt_dependency_resolvers }}" -# resolvers: -# - type: conda -# auto_init: true -# auto_install: true -# ensure_channels: "{{ miniconda_channels|join(',') }}" -# exec: "{{ miniconda_exec }}" -# prefix: "{{ miniconda_prefix }}" -# container_resolvers: -# - type: explicit_singularity -# - cache_directory: /cvmfs/singularity.galaxyproject.org/all/ -# type: cached_mulled_singularity -# - auto_install: true -# type: mulled_singularity -# - auto_install: false -# cache_directory: /cvmfs/singularity.galaxyproject.org/all/ -# type: build_mulled_singularity managers: _default_: type: queued_drmaa diff --git a/pulsar.yml b/pulsar.yml index 33eb8f3..88186b4 100644 --- a/pulsar.yml +++ b/pulsar.yml @@ -4,22 +4,6 @@ become: yes - hosts: pulsarservers -# vars: -# pulsar_user: "{{ pulsar.user_name }}" -# pbs_drmaa_version: "1.0.19" -# -# # Miniconda settings -# miniconda_prefix: "{{ pulsar_network_homedir }}/conda" -# miniconda_exec: "{{ miniconda_prefix }}/bin/mamba" -# miniconda_version: 23.1.0 -# miniconda_channels: -# - 'bioconda' -# - 'conda-forge' -# - 'iuc' -# - 'r' -# - 'anaconda' -# - 'defaults' - pre_tasks: - group: name: "{{ pulsar.group }}" @@ -50,12 +34,6 @@ become_user: "{{ pulsar.user_name }}" post_tasks: - ## DEMON: This task might be necessary to comment out for pulsar-re -# - name: copy dependency_resolvers_config into pulsar config folder -# ansible.builtin.copy: -# src: dependency_resolvers_conf.xml -# dest: "{{ pulsar_root }}/config/dependency_resolvers_conf.xml" -# become: yes - name: Create .drmaa folder in NFS home ansible.builtin.file: path: "{{ pulsar_network_homedir }}/.drmaa" From bd017da9e5335d734e2a6d6cb24bb35f132dd8af Mon Sep 17 00:00:00 2001 From: Martin Demko <325073@mail.muni.cz> Date: Mon, 27 Apr 2026 16:38:32 +0200 Subject: [PATCH 07/10] adds patch to pulsar source because of improved recursive rsync --- .../0.15.6/__init__.py.patch | 22 ++++++++ .../0.15.6/down.py.patch | 10 ++++ files/pulsar_repo.improved_rsync/0.15.6/patch | 51 +++++++++++++++++++ .../0.15.6/ssh.py.patch | 19 +++++++ pulsar.yml | 6 +++ 5 files changed, 108 insertions(+) create mode 100644 files/pulsar_repo.improved_rsync/0.15.6/__init__.py.patch create mode 100644 files/pulsar_repo.improved_rsync/0.15.6/down.py.patch create mode 100644 files/pulsar_repo.improved_rsync/0.15.6/patch create mode 100644 files/pulsar_repo.improved_rsync/0.15.6/ssh.py.patch diff --git a/files/pulsar_repo.improved_rsync/0.15.6/__init__.py.patch b/files/pulsar_repo.improved_rsync/0.15.6/__init__.py.patch new file mode 100644 index 0000000..4632c0f --- /dev/null +++ b/files/pulsar_repo.improved_rsync/0.15.6/__init__.py.patch @@ -0,0 +1,22 @@ +--- staging/__init__.py 2024-11-15 14:28:46.166714601 +0000 ++++ staging/__init__.py.v2 2026-04-27 14:12:38.332467975 +0000 +@@ -309,3 +309,19 @@ + files_directory = "{}_files{}".format(basename(output_file)[0:-len(".dat")], self.path_helper.separator) + names = filter(lambda o: o.startswith(files_directory), self.output_directory_contents) + return dict(map(lambda name: (local_path(name), name), names)) ++ ++ ++ def output_extra_files_dir(self, output_file): ++ """ ++ Returns dict mapping local path to remote name. ++ """ ++ print(output_file) ++ output_directory = dirname(output_file) ++ ++ def local_path(name): ++ return join(output_directory, self.path_helper.local_name(name)) ++ ++ name = "{}_files{}".format(basename(output_file)[0:-len(".dat")], self.path_helper.separator) ++ edir = dict() ++ edir[local_path(name)] = name ++ return edir diff --git a/files/pulsar_repo.improved_rsync/0.15.6/down.py.patch b/files/pulsar_repo.improved_rsync/0.15.6/down.py.patch new file mode 100644 index 0000000..797b3ff --- /dev/null +++ b/files/pulsar_repo.improved_rsync/0.15.6/down.py.patch @@ -0,0 +1,10 @@ +--- staging/down.py 2024-11-15 14:28:46.166714601 +0000 ++++ staging/down.py.v2 2026-04-27 14:18:40.826792741 +0000 +@@ -103,7 +103,7 @@ + if output_generated: + self._attempt_collect_output('output', output_file) + +- for galaxy_path, pulsar in self.pulsar_outputs.output_extras(output_file).items(): ++ for galaxy_path, pulsar in self.pulsar_outputs.output_extra_files_dir(output_file).items(): + self._attempt_collect_output('output', path=galaxy_path, name=pulsar) + # else not output generated, do not attempt download. diff --git a/files/pulsar_repo.improved_rsync/0.15.6/patch b/files/pulsar_repo.improved_rsync/0.15.6/patch new file mode 100644 index 0000000..c266c00 --- /dev/null +++ b/files/pulsar_repo.improved_rsync/0.15.6/patch @@ -0,0 +1,51 @@ +--- staging/down.py 2024-11-15 14:28:46.166714601 +0000 ++++ staging/down.py.v2 2026-04-27 14:18:40.826792741 +0000 +@@ -103,7 +103,7 @@ + if output_generated: + self._attempt_collect_output('output', output_file) + +- for galaxy_path, pulsar in self.pulsar_outputs.output_extras(output_file).items(): ++ for galaxy_path, pulsar in self.pulsar_outputs.output_extra_files_dir(output_file).items(): + self._attempt_collect_output('output', path=galaxy_path, name=pulsar) + # else not output generated, do not attempt download. +--- staging/__init__.py 2024-11-15 14:28:46.166714601 +0000 ++++ staging/__init__.py.v2 2026-04-27 14:12:38.332467975 +0000 +@@ -309,3 +309,19 @@ + files_directory = "{}_files{}".format(basename(output_file)[0:-len(".dat")], self.path_helper.separator) + names = filter(lambda o: o.startswith(files_directory), self.output_directory_contents) + return dict(map(lambda name: (local_path(name), name), names)) ++ ++ ++ def output_extra_files_dir(self, output_file): ++ """ ++ Returns dict mapping local path to remote name. ++ """ ++ print(output_file) ++ output_directory = dirname(output_file) ++ ++ def local_path(name): ++ return join(output_directory, self.path_helper.local_name(name)) ++ ++ name = "{}_files{}".format(basename(output_file)[0:-len(".dat")], self.path_helper.separator) ++ edir = dict() ++ edir[local_path(name)] = name ++ return edir +--- transport/ssh.py 2024-11-15 14:28:46.166714601 +0000 ++++ transport/ssh.py.patch 2026-04-27 14:05:24.769565794 +0000 +@@ -7,6 +7,7 @@ + def rsync_get_file(uri_from, uri_to, user, host, port, key): + cmd = [ + 'rsync', ++ '-src', + '-e', + 'ssh -i {} -p {} {}'.format(key, port, ' '.join(SSH_OPTIONS)), + '{}@{}:{}'.format(user, host, uri_from), +@@ -19,6 +20,8 @@ + _ensure_dir(uri_to, key, port, user, host) + cmd = [ + 'rsync', ++ '-src', ++ '--chmod=F664,D775', + '-e', + 'ssh -i {} -p {} {}'.format(key, port, ' '.join(SSH_OPTIONS)), + uri_from, diff --git a/files/pulsar_repo.improved_rsync/0.15.6/ssh.py.patch b/files/pulsar_repo.improved_rsync/0.15.6/ssh.py.patch new file mode 100644 index 0000000..6c9c5d7 --- /dev/null +++ b/files/pulsar_repo.improved_rsync/0.15.6/ssh.py.patch @@ -0,0 +1,19 @@ +--- transport/ssh.py 2024-11-15 14:28:46.166714601 +0000 ++++ transport/ssh.py.patch 2026-04-27 14:05:24.769565794 +0000 +@@ -7,6 +7,7 @@ + def rsync_get_file(uri_from, uri_to, user, host, port, key): + cmd = [ + 'rsync', ++ '-src', + '-e', + 'ssh -i {} -p {} {}'.format(key, port, ' '.join(SSH_OPTIONS)), + '{}@{}:{}'.format(user, host, uri_from), +@@ -19,6 +20,8 @@ + _ensure_dir(uri_to, key, port, user, host) + cmd = [ + 'rsync', ++ '-src', ++ '--chmod=F664,D775', + '-e', + 'ssh -i {} -p {} {}'.format(key, port, ' '.join(SSH_OPTIONS)), + uri_from, diff --git a/pulsar.yml b/pulsar.yml index 88186b4..26d1cd5 100644 --- a/pulsar.yml +++ b/pulsar.yml @@ -34,6 +34,12 @@ become_user: "{{ pulsar.user_name }}" post_tasks: + #DEMON: Not finished yet!!! + - name: Apply recursive rsync changes in pulsar package + ansible.posix.patch: + src: "files/pulsar_repo.improved_rsync/{{ pulsar_package_version }}/patch" + basedir: /opt/pulsar/venv/lib/python3.11/site-packages/pulsar/client + - name: Create .drmaa folder in NFS home ansible.builtin.file: path: "{{ pulsar_network_homedir }}/.drmaa" From a6e884876853145f9ea95b5e12416fa67ca02fe4 Mon Sep 17 00:00:00 2001 From: martindemko <325073@mail.muni.cz> Date: Mon, 27 Apr 2026 22:05:35 +0200 Subject: [PATCH 08/10] adds patching of pulsar in one task --- .../0.15.6/__init__.py.patch | 22 ------------------- .../0.15.6/down.py.patch | 10 --------- .../0.15.6/ssh.py.patch | 19 ---------------- .../0.15.6/recursive_rsync.patch} | 14 +++++++----- group_vars/pulsarservers.yml | 1 + pulsar.yml | 7 +++--- 6 files changed, 13 insertions(+), 60 deletions(-) delete mode 100644 files/pulsar_repo.improved_rsync/0.15.6/__init__.py.patch delete mode 100644 files/pulsar_repo.improved_rsync/0.15.6/down.py.patch delete mode 100644 files/pulsar_repo.improved_rsync/0.15.6/ssh.py.patch rename files/{pulsar_repo.improved_rsync/0.15.6/patch => pulsar_repo/0.15.6/recursive_rsync.patch} (82%) diff --git a/files/pulsar_repo.improved_rsync/0.15.6/__init__.py.patch b/files/pulsar_repo.improved_rsync/0.15.6/__init__.py.patch deleted file mode 100644 index 4632c0f..0000000 --- a/files/pulsar_repo.improved_rsync/0.15.6/__init__.py.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- staging/__init__.py 2024-11-15 14:28:46.166714601 +0000 -+++ staging/__init__.py.v2 2026-04-27 14:12:38.332467975 +0000 -@@ -309,3 +309,19 @@ - files_directory = "{}_files{}".format(basename(output_file)[0:-len(".dat")], self.path_helper.separator) - names = filter(lambda o: o.startswith(files_directory), self.output_directory_contents) - return dict(map(lambda name: (local_path(name), name), names)) -+ -+ -+ def output_extra_files_dir(self, output_file): -+ """ -+ Returns dict mapping local path to remote name. -+ """ -+ print(output_file) -+ output_directory = dirname(output_file) -+ -+ def local_path(name): -+ return join(output_directory, self.path_helper.local_name(name)) -+ -+ name = "{}_files{}".format(basename(output_file)[0:-len(".dat")], self.path_helper.separator) -+ edir = dict() -+ edir[local_path(name)] = name -+ return edir diff --git a/files/pulsar_repo.improved_rsync/0.15.6/down.py.patch b/files/pulsar_repo.improved_rsync/0.15.6/down.py.patch deleted file mode 100644 index 797b3ff..0000000 --- a/files/pulsar_repo.improved_rsync/0.15.6/down.py.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- staging/down.py 2024-11-15 14:28:46.166714601 +0000 -+++ staging/down.py.v2 2026-04-27 14:18:40.826792741 +0000 -@@ -103,7 +103,7 @@ - if output_generated: - self._attempt_collect_output('output', output_file) - -- for galaxy_path, pulsar in self.pulsar_outputs.output_extras(output_file).items(): -+ for galaxy_path, pulsar in self.pulsar_outputs.output_extra_files_dir(output_file).items(): - self._attempt_collect_output('output', path=galaxy_path, name=pulsar) - # else not output generated, do not attempt download. diff --git a/files/pulsar_repo.improved_rsync/0.15.6/ssh.py.patch b/files/pulsar_repo.improved_rsync/0.15.6/ssh.py.patch deleted file mode 100644 index 6c9c5d7..0000000 --- a/files/pulsar_repo.improved_rsync/0.15.6/ssh.py.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- transport/ssh.py 2024-11-15 14:28:46.166714601 +0000 -+++ transport/ssh.py.patch 2026-04-27 14:05:24.769565794 +0000 -@@ -7,6 +7,7 @@ - def rsync_get_file(uri_from, uri_to, user, host, port, key): - cmd = [ - 'rsync', -+ '-src', - '-e', - 'ssh -i {} -p {} {}'.format(key, port, ' '.join(SSH_OPTIONS)), - '{}@{}:{}'.format(user, host, uri_from), -@@ -19,6 +20,8 @@ - _ensure_dir(uri_to, key, port, user, host) - cmd = [ - 'rsync', -+ '-src', -+ '--chmod=F664,D775', - '-e', - 'ssh -i {} -p {} {}'.format(key, port, ' '.join(SSH_OPTIONS)), - uri_from, diff --git a/files/pulsar_repo.improved_rsync/0.15.6/patch b/files/pulsar_repo/0.15.6/recursive_rsync.patch similarity index 82% rename from files/pulsar_repo.improved_rsync/0.15.6/patch rename to files/pulsar_repo/0.15.6/recursive_rsync.patch index c266c00..a83f003 100644 --- a/files/pulsar_repo.improved_rsync/0.15.6/patch +++ b/files/pulsar_repo/0.15.6/recursive_rsync.patch @@ -1,5 +1,5 @@ ---- staging/down.py 2024-11-15 14:28:46.166714601 +0000 -+++ staging/down.py.v2 2026-04-27 14:18:40.826792741 +0000 +--- a/staging/down.py 2024-11-15 14:28:46.166714601 +0000 ++++ b/staging/down.py 2026-04-27 14:18:40.826792741 +0000 @@ -103,7 +103,7 @@ if output_generated: self._attempt_collect_output('output', output_file) @@ -8,8 +8,9 @@ + for galaxy_path, pulsar in self.pulsar_outputs.output_extra_files_dir(output_file).items(): self._attempt_collect_output('output', path=galaxy_path, name=pulsar) # else not output generated, do not attempt download. ---- staging/__init__.py 2024-11-15 14:28:46.166714601 +0000 -+++ staging/__init__.py.v2 2026-04-27 14:12:38.332467975 +0000 + +--- a/staging/__init__.py 2024-11-15 14:28:46.166714601 +0000 ++++ b/staging/__init__.py 2026-04-27 14:12:38.332467975 +0000 @@ -309,3 +309,19 @@ files_directory = "{}_files{}".format(basename(output_file)[0:-len(".dat")], self.path_helper.separator) names = filter(lambda o: o.startswith(files_directory), self.output_directory_contents) @@ -30,8 +31,9 @@ + edir = dict() + edir[local_path(name)] = name + return edir ---- transport/ssh.py 2024-11-15 14:28:46.166714601 +0000 -+++ transport/ssh.py.patch 2026-04-27 14:05:24.769565794 +0000 + +--- a/transport/ssh.py 2024-11-15 14:28:46.166714601 +0000 ++++ b/transport/ssh.py 2026-04-27 14:05:24.769565794 +0000 @@ -7,6 +7,7 @@ def rsync_get_file(uri_from, uri_to, user, host, port, key): cmd = [ diff --git a/group_vars/pulsarservers.yml b/group_vars/pulsarservers.yml index 0bd3cc6..d7a22b9 100644 --- a/group_vars/pulsarservers.yml +++ b/group_vars/pulsarservers.yml @@ -24,6 +24,7 @@ pulsar_cleanup_delay: "7d" # DEMON: pulsar-re needs this to have over 30d pulsar_persistence_dir: "{{ pulsar_root }}/files/persistent" pulsar_dependencies_dir: "{{ pulsar_data_dir }}/deps" pulsar_singularity_cachedir: "{{ pulsar_network_homedir }}/.singularity" +pulsar_package_change_dir: "{{ pulsar_root }}/venv/lib/python3.11/site-packages/pulsar/client" pulsar_separate_privileges: true pulsar_pip_install: true pulsar_pycurl_ssl_library: openssl diff --git a/pulsar.yml b/pulsar.yml index 26d1cd5..cfe5995 100644 --- a/pulsar.yml +++ b/pulsar.yml @@ -34,11 +34,12 @@ become_user: "{{ pulsar.user_name }}" post_tasks: - #DEMON: Not finished yet!!! - name: Apply recursive rsync changes in pulsar package ansible.posix.patch: - src: "files/pulsar_repo.improved_rsync/{{ pulsar_package_version }}/patch" - basedir: /opt/pulsar/venv/lib/python3.11/site-packages/pulsar/client + src: "files/pulsar_repo/{{ pulsar_package_version }}/recursive_rsync.patch" + basedir: "{{ pulsar_package_change_dir }}" + backup: true + strip: 1 - name: Create .drmaa folder in NFS home ansible.builtin.file: From 2f71c997b03f643bed499052d30873e34212d422 Mon Sep 17 00:00:00 2001 From: martindemko <325073@mail.muni.cz> Date: Mon, 27 Apr 2026 23:16:47 +0200 Subject: [PATCH 09/10] improves conda channels for RE2 --- host_vars/pulsar-re2.grid.cesnet.cz/vars.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/host_vars/pulsar-re2.grid.cesnet.cz/vars.yml b/host_vars/pulsar-re2.grid.cesnet.cz/vars.yml index 907556a..4ab40c5 100644 --- a/host_vars/pulsar-re2.grid.cesnet.cz/vars.yml +++ b/host_vars/pulsar-re2.grid.cesnet.cz/vars.yml @@ -8,13 +8,9 @@ pulsar: nfs_prefix: pulsar-re miniconda_channels: - - 'conda-forge' - 'bioconda' - - 'iuc' - - 'r' - - 'anaconda' + - 'conda-forge' - 'petrnovak' - - 'defaults' miniconda_prefix: "/storage/{{ pulsar.nfs_home }}/home/{{ pulsar.user_name }}/anaconda3" miniconda_exec: "{{ miniconda_prefix }}/bin/mamba" From eae9b256dfbb6ca16c077989024790c4954f8eaf Mon Sep 17 00:00:00 2001 From: martindemko <325073@mail.muni.cz> Date: Wed, 29 Apr 2026 00:39:00 +0200 Subject: [PATCH 10/10] adds restart task after change --- pulsar.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pulsar.yml b/pulsar.yml index cfe5995..6b6d00c 100644 --- a/pulsar.yml +++ b/pulsar.yml @@ -40,6 +40,11 @@ basedir: "{{ pulsar_package_change_dir }}" backup: true strip: 1 + - name: Restart pulsar service after change + ansible.builtin.systemd: + state: restarted + name: "{{ pulsar_systemd_service_name }}" + become: yes - name: Create .drmaa folder in NFS home ansible.builtin.file: