{%- set api_token = arvados.cluster.tokens.system_root | yaml_encode %}
{%- set api_host = arvados.cluster.Services.Controller.ExternalURL | regex_replace('^http(s?)://', '', ignorecase=true) %}
+{%- set arv_command = '/usr/local/rvm/bin/rvm-exec default arv'
+ if arvados.ruby.manage_ruby and arvados.ruby.use_rvm
+ else 'arv' %}
include:
- ..package
- {{ sls_config_file }}
{%- set vm_name = vm_params.name | default(vm) %}
{%- set cmd_query_vm_uuid = 'ARVADOS_API_TOKEN=' ~ api_token ~
- ' ARVADOS_API_HOST=' ~ api_host ~
- ' arv --short virtual_machine list' ~
+ ' ARVADOS_API_HOST=' ~ api_host ~ ' ' ~
+ arv_command ~ ' --short virtual_machine list' ~
' --filters \'[["hostname", "=", "' ~ vm_name ~ '"]]\''
%}
- env:
- ARVADOS_API_TOKEN: {{ api_token }}
- ARVADOS_API_HOST: {{ api_host }}
- {%- if arvados.ruby.manage_ruby and arvados.ruby.use_rvm %}
- - prepend_path: /usr/local/rvm/gems/{{ arvados.ruby.pkg }}/bin
- {%- endif %}
- name: |
- arv --format=uuid \
+ {{ arv_command }} --format=uuid \
virtual_machine \
create \
--virtual-machine '{"hostname":"{{ vm_name }}" }'
# so we need to parse the api_client_authorization list through some jq
{%- set cmd_query_scoped_token_url = 'VM_UUID=$(cat /tmp/' ~ vm ~ ') && ' ~
' ARVADOS_API_TOKEN=' ~ api_token ~
- ' ARVADOS_API_HOST=' ~ api_host ~
- ' arv api_client_authorization list |' ~
+ ' ARVADOS_API_HOST=' ~ api_host ~ ' ' ~
+ arv_command ~ ' api_client_authorization list |' ~
' /usr/bin/jq -e \'.items[].scopes[] | select(. == "GET ' ~
'/arvados/v1/virtual_machines/\'${VM_UUID}\'/logins")\' && ' ~
'unset VM_UUID'
- env:
- ARVADOS_API_TOKEN: {{ api_token }}
- ARVADOS_API_HOST: {{ api_host }}
- {%- if arvados.ruby.manage_ruby and arvados.ruby.use_rvm %}
- - prepend_path: /usr/local/rvm/gems/{{ arvados.ruby.pkg }}/bin
- {%- endif %}
- name: |
VM_UUID=$(cat /tmp/{{ vm }}) &&
- arv --format=uuid \
+ {{ arv_command }} --format=uuid \
api_client_authorization \
create \
--api-client-authorization '{"scopes":["GET /arvados/v1/virtual_machines/'${VM_UUID}'/logins"]}'