feat(resources): add state to register virtual_machines
[arvados-formula.git] / arvados / api / resources / virtual_machines.sls
1 # -*- coding: utf-8 -*-
2 # vim: ft=sls
3
4 {#- Get the `tplroot` from `tpldir` #}
5 {%- set tplroot = tpldir.split('/')[0] %}
6 {%- set sls_config_file = tplroot ~ '.config.file' %}
7 {%- from tplroot ~ "/map.jinja" import arvados with context %}
8 {%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}
9
10 {%- set virtual_machines = arvados.cluster.resources.virtual_machines | default({}) %}
11 {%- set api_token = arvados.cluster.tokens.system_root | yaml_encode %}
12 {%- set api_host = arvados.cluster.Services.Controller.ExternalURL | regex_replace('^http(s?)://', '', ignorecase=true) %}
13
14 include:
15   - ..package
16   - {{ sls_config_file }}
17   - ..service
18
19 {%- for vm, vm_params in virtual_machines.items() %}
20   {%- set vm_name = vm_params.name | default(vm) %}
21   {%- set vm_backend = vm_params.backend | default(vm_name) %}
22   {%- set vm_port = vm_params.port | default(4200) %}
23
24 arvados-api-resources-virtual-machines-{{ vm }}-record-cmd-run:
25   cmd.run:
26     - env:
27       - ARVADOS_API_TOKEN: {{ api_token }}
28       - ARVADOS_API_HOST: {{ api_host }}
29     - name: |
30         arv --format=uuid \
31           virtual_machine \
32           create \
33           --virtual-machine '{"hostname":"{{ vm_name }}" }'
34     - onlyif: |
35         ARVADOS_API_TOKEN={{ api_token }} \
36         ARVADOS_API_HOST={{ api_host }} \
37         arv --short \
38           virtual_machine \
39           list \
40           --filters '[["hostname", "=", "{{ vm_name }}"]]' | \
41           /bin/grep -qE "fixme-2x53u-[a-z0-9_]{15}" && \
42           false
43 {%- endfor %}