Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add conf_options parameter for each db #32

Merged
merged 1 commit into from
Aug 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ Each database is defined as a dictionary of the following parameters:
- `group` Optional. Useful if the database needs restricted access. An LDAP group ("gid"). LDAP users who are member of this group will have access to the database.
- `web_page_title` Optional. The title displayed at the top of the web page. If not provided, the default title is "BLAST server for `name`".
- `placeholders` Optional. A list of placeholder dictionaries `{key: 'key_item', value: 'value_item'}` that are used to customize top or bottom supplementary HTML code (see `sequenceserver_top_web_page_html_path` and `sequenceserver_bottom_web_page_html_path`). For example `placeholders: [{key: 'key1', value: 'value1'}, {key: 'key2', value: 'value2'}]`.
- `conf_options` Optional. A list of supplementary SequenceServer configuration options dictionaries `{key: 'key_item', value: 'value_item'}` (see [SequenceServer documentation](https://sequenceserver.com/doc/#basics)). For example `conf_options: [{key: 'job_lifetime', value: '10080'}, {key: 'databases_widget', value: 'tree'}]`.

Unique `name` and `port` are mandatory for each database.
`users`, `ldap_businesscategory` and `group` are optional and can be used to add an authentication layer with the nginx-auth-ldap module. Choose one single authentication mode for each database.
Expand Down
1 change: 1 addition & 0 deletions defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ sequenceserver_blast_db:
# users: ['fbar','jsmith']
# web_page_title: 'blablabla'
# placeholders: [{key: 'key1', value: 'value1'}, {key: 'key2', value: 'value2'}]
# conf_options: [{key: 'job_lifetime', value: '10080'}, {key: 'databases_widget', value: 'tree'}]

# NCBI BLAST and SLURM variables
# Used in the slurm bash scripts
Expand Down
1 change: 1 addition & 0 deletions molecule/default/converge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
port: '4567'
path: '/tmp/test-data'
placeholders: [{key: 'key_string', value: 'value1'}, {key: 'key_link', value: '<a href="http://testplaceholder.com">my favorite link</a>'}]
conf_options: [{key: 'job_lifetime', value: '10080'}, {key: 'databases_widget', value: 'tree'}]
sequenceserver_top_web_page_html_path: "/tmp/top_web_page.html"
sequenceserver_bottom_web_page_html_path: "/tmp/bottom_web_page.html"
sequenceserver_home_url: "http://myfavoritewebsite.com"
Expand Down
11 changes: 11 additions & 0 deletions molecule/default/verify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@
become: true
tasks:
- name: Test blast installation
shell: # noqa 301 305

Check warning on line 7 in molecule/default/verify.yml

View workflow job for this annotation

GitHub Actions / Lint

7:14 [comments] too few spaces before comment
cmd: "/usr/local/anaconda/envs/blast/bin/blastn -version"
register: blast_command
failed_when: blast_command.rc > 0
- name: Test my_db
shell: # noqa 301 305

Check warning on line 12 in molecule/default/verify.yml

View workflow job for this annotation

GitHub Actions / Lint

12:14 [comments] too few spaces before comment
cmd: "/usr/local/anaconda/envs/blast/bin/blastdbcmd -db /tmp/test-data/my_db -entry all"
register: blastdbcmd_command
failed_when: blastdbcmd_command.rc > 0
- name: Ubuntu 20 | Test SequenceServer installation
shell: # noqa 301

Check warning on line 17 in molecule/default/verify.yml

View workflow job for this annotation

GitHub Actions / Lint

17:14 [comments] too few spaces before comment
cmd: "export GEM_PATH=/usr/local/share/gems && /usr/local/share/gems/bin/sequenceserver --version"
when: ansible_distribution == "Ubuntu" and ansible_distribution_major_version == "20"
register: sequenceserver_command
Expand All @@ -35,8 +35,8 @@
get_url:
url: "http://localhost"
dest: "/tmp/nginx.html"
- name: Test SequenceServer home page with curl # same thing tried with the ansible get_url module without success

Check warning on line 38 in molecule/default/verify.yml

View workflow job for this annotation

GitHub Actions / Lint

38:53 [comments] too few spaces before comment
shell: # noqa 301

Check warning on line 39 in molecule/default/verify.yml

View workflow job for this annotation

GitHub Actions / Lint

39:14 [comments] too few spaces before comment
cmd: "curl -sL http://localhost:4567 -o /tmp/home.html"
register: sequenceserver_command
failed_when: sequenceserver_command.rc > 0
Expand All @@ -48,27 +48,27 @@
debug:
msg: "{{ sequenceserver_page.content | b64decode }}"
- name: Check title in home page content
shell: # noqa 301

Check warning on line 51 in molecule/default/verify.yml

View workflow job for this annotation

GitHub Actions / Lint

51:14 [comments] too few spaces before comment
cmd: curl -sL http://localhost:4567 | grep -q 'http://myfavoritewebsite.com'
register: grep_title
failed_when: grep_title.rc > 0
- name: Check support email in home page content
shell: # noqa 301

Check warning on line 56 in molecule/default/verify.yml

View workflow job for this annotation

GitHub Actions / Lint

56:14 [comments] too few spaces before comment
cmd: curl -sL http://localhost:4567 | grep -q 'mailto:[email protected]'
register: grep_support
failed_when: grep_support.rc > 0
- name: Check custom html in home page content (top)
shell: # noqa 301

Check warning on line 61 in molecule/default/verify.yml

View workflow job for this annotation

GitHub Actions / Lint

61:14 [comments] too few spaces before comment
cmd: curl -sL http://localhost:4567 | grep -q 'My message'
register: grep_custom_html_top
failed_when: grep_custom_html_top.rc > 0
- name: Check custom html in home page content (bottom)
shell: # noqa 301

Check warning on line 66 in molecule/default/verify.yml

View workflow job for this annotation

GitHub Actions / Lint

66:14 [comments] too few spaces before comment
cmd: curl -sL http://localhost:4567 | grep -q 'Render custom string for this database'
register: grep_custom_html_bottom
failed_when: grep_custom_html_bottom.rc > 0
- name: Check that the home page is rendering the values of the placeholders set for my_db
shell: # noqa 301

Check warning on line 71 in molecule/default/verify.yml

View workflow job for this annotation

GitHub Actions / Lint

71:14 [comments] too few spaces before comment
cmd: curl -sL http://localhost:4567 | grep -q '<a href="http://testplaceholder.com">my favorite link</a>'
register: grep_placeholder
failed_when: grep_placeholder.rc > 0
Expand All @@ -83,3 +83,14 @@
set_fact:
grep_slurm_batch: "{{ lib_modified_for_hpc_integration.content | b64decode | regex_findall('slurm_sbatch.sh') | first }}"
failed_when: grep_slurm_batch != 'slurm_sbatch.sh'
- name: Get the SequenceServer configuration file of my_db
slurp:
src: "/etc/sequenceserver/config/sequenceserver.my_db.conf"
register: my_db_conf
- name: Display content of the SequenceServer configuration file of my_db
debug:
msg: "{{ my_db_conf.content | b64decode }}"
- name: Check that conf_option is in the SequenceServer configuration file of my_db
set_fact:
grep_slurm_batch: "{{ my_db_conf.content | b64decode | regex_findall('databases_widget') | first }}"
failed_when: grep_slurm_batch != 'databases_widget'
7 changes: 7 additions & 0 deletions templates/sequenceserver.conf.j2
Original file line number Diff line number Diff line change
@@ -1,2 +1,9 @@
:port: '{{ item.port }}'
:database_dir: '{{ item.path }}'
{% if item.conf_options is defined and item.conf_options %}
{% for option in item.conf_options %}
{% if option.key is defined and option.key and option.value is defined and option.value %}
:{{ option.key }}: '{{ option.value }}'
{% endif %}
{% endfor %}
{% endif %}