diff --git a/README.md b/README.md index f608e1a..1e2f7ca 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ sequenceserver_blast_db: users: ['fbar','jsmith'] web_page_title: 'blablabla' placeholders: [{key: 'key1', value: 'value1'}, {key: 'key2', value: 'value2'}] - conf_options: {':job_lifetime': '10080', ':databases_widget': 'tree', ':options': {':blastn': {':default': ['-task blastn', '-evalue 1e-5'], ':short-seq': ['-task blastn-short', '-evalue 1e-1']}}} + conf_options: [{key: 'job_lifetime', value: '10080'}, {key: 'databases_widget', value: 'tree'}, {key: 'options', value: {'blastn': {'default': ['-task blastn', '-evalue 1e-5'], 'short-seq': ['-task blastn-short', '-evalue 1e-1']}}}] ``` This is the variable used to define the BLAST databases. @@ -56,7 +56,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 (in JSON dictionary format) `{key: 'key_item', value: 'value_item'}` (see [SequenceServer documentation](https://sequenceserver.com/doc/#basics)). For example `conf_options: {':job_lifetime': '10080', ':databases_widget': 'tree'`. **Note the leading `:` character at the start of each option key.** +- `conf_options` Optional. A list of supplementary SequenceServer configuration options as dictionaries `{key: 'key_item', value: 'value_item'}` (see [SequenceServer documentation](https://sequenceserver.com/doc/#basics)). For example ` [{key: 'job_lifetime', value: '10080'}, {key: 'databases_widget', value: 'tree'}, {key: 'options', value: {'blastn': {'default': ['-task blastn', '-evalue 1e-5'], 'short-seq': ['-task blastn-short', '-evalue 1e-1']}}}]` 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. diff --git a/molecule/default/converge.yml b/molecule/default/converge.yml index 2521040..147ca92 100644 --- a/molecule/default/converge.yml +++ b/molecule/default/converge.yml @@ -12,7 +12,7 @@ port: '4567' path: '/tmp/test-data' placeholders: [{key: 'key_string', value: 'value1'}, {key: 'key_link', value: 'my favorite link'}] - conf_options: {':job_lifetime': '10080', ':databases_widget': 'tree', ':options': {':blastn': {':default': ['-task blastn', '-evalue 1e-5'], ':short-seq': ['-task blastn-short', '-evalue 1e-1']}}} + conf_options: [{key: 'job_lifetime', value: '10080'}, {key: 'databases_widget', value: 'tree'}, {key: 'options', value: {'blastn': {'default': ['-task blastn', '-evalue 1e-5'], 'short-seq': ['-task blastn-short', '-evalue 1e-1']}}}] 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" diff --git a/templates/sequenceserver.conf.j2 b/templates/sequenceserver.conf.j2 index f038a5f..0c9dc18 100644 --- a/templates/sequenceserver.conf.j2 +++ b/templates/sequenceserver.conf.j2 @@ -1,5 +1,22 @@ :port: '{{ item.port }}' :database_dir: '{{ item.path }}' {% if item.conf_options is defined and item.conf_options %} -{{ item.conf_options | from_yaml }} +{% for conf_option in item.conf_options %} +{% if conf_option.key is defined and conf_option.key and conf_option.value is defined and conf_option.value %} +{% if conf_option.key != 'options' %} +:{{ conf_option.key }}: '{{ conf_option.value }}' +{% elif %} +:options: +{% for blast_type, blast_configs in conf_option.value.items() %} + :{{ blast_type }}: +{% for blast_config, blast_params in blast_configs.items() %} + :{{ blast_config }}: +{% for blast_param in blast_params %} + - {{ blast_param }} +{% endfor %} +{% endfor %} +{% endfor %} +{% endif %} +{% endif %} +{% endfor %} {% endif %} \ No newline at end of file