17750: Ensure the arvados-cli gem is available in controller when creating resources
authorJavier Bértoli <jbertoli@curii.com>
Fri, 4 Jun 2021 18:03:20 +0000 (15:03 -0300)
committerJavier Bértoli <jbertoli@curii.com>
Wed, 21 Jul 2021 18:21:03 +0000 (15:21 -0300)
Arvados-DCO-1.1-Signed-off-by: Javier Bértoli <jbertoli@curii.com>

arvados/controller/package/install.sls
arvados/controller/resources/virtual_machines.sls
arvados/defaults.yaml
pillar.example

index a1c8a4da8d63f31fe88b5fdd85ec355d371dfacc..62161ea1d57304f5befecbb1d5cef8d8adfe984a 100644 (file)
@@ -7,8 +7,37 @@
 
 {#- Get the `tplroot` from `tpldir` #}
 {%- set tplroot = tpldir.split('/')[0] %}
+{%- set sls_ruby_install = tplroot ~ '.ruby.package.install' %}
 {%- from tplroot ~ "/map.jinja" import arvados with context %}
 
+{%- if arvados.ruby.manage_ruby %}
+  {%- set ruby_dep = 'rvm' if arvados.ruby.use_rvm else 'pkg' %}
+{%- endif %}
+
+include:
+  - {{ sls_ruby_install }}
+
+arvados-controller-package-install-gems-deps-pkg-installed:
+  pkg.installed:
+    - pkgs: {{ arvados.ruby.gems_deps | unique | json }}
+    - onlyif: test "{{ arvados.ruby.manage_gems_deps | lower }}" = "true"
+
+{%- for gm in arvados.api.gem.name | unique %}
+arvados-controller-package-install-gem-{{ gm }}-installed:
+  gem.installed:
+    - name: {{ gm }}
+    {%- if arvados.ruby.use_rvm %}
+    - ruby: {{ arvados.ruby.pkg }}
+    {%- endif %}
+    - require:
+      - pkg: arvados-controller-package-install-gems-deps-pkg-installed
+      {%- if arvados.ruby.manage_ruby %}
+      - {{ ruby_dep }}: arvados-ruby-package-install-ruby-{{ ruby_dep }}-installed
+      {%- endif %}
+    - require_in:
+      - pkg: arvados-controller-package-install-pkg-installed
+{%- endfor %}
+
 arvados-controller-package-install-pkg-installed:
   pkg.installed:
     - name: {{ arvados.controller.pkg.name }}
index c89b543933f032044a83880993dc12a37247eee3..3fbc729b0aeb3ddc3e7fa4a39edcec899353415a 100644 (file)
@@ -39,6 +39,9 @@ arvados-controller-resources-virtual-machines-{{ vm }}-record-cmd-run:
     - 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 \
           virtual_machine \
@@ -50,6 +53,7 @@ arvados-controller-resources-virtual-machines-{{ vm }}-record-cmd-run:
     - require:
       - pkg: arvados-controller-package-install-pkg-installed
       - cmd: arvados-controller-service-running-service-ready-cmd-run
+      - gem: arvados-controller-package-install-gem-arvados-cli-installed
 
 # We need to use the UUID generated in the previous command to see if there's a
 # scoped token for it. There's no easy way to pass the value from a shellout
@@ -58,9 +62,13 @@ arvados-controller-resources-virtual-machines-{{ vm }}-record-cmd-run:
 # the file content is a token uuid :|
 arvados-controller-resources-virtual-machines-{{ vm }}-get-vm_uuid-cmd-run:
   cmd.run:
+    {%- if arvados.ruby.manage_ruby and arvados.ruby.use_rvm %}
+    - prepend_path: /usr/local/rvm/gems/{{ arvados.ruby.pkg }}/bin
+    {%- endif %}
     - name: {{ cmd_query_vm_uuid }} | head -1 | tee /tmp/{{ vm }}
     - require:
       - cmd: arvados-controller-resources-virtual-machines-{{ vm }}-record-cmd-run
+      - gem: arvados-controller-package-install-gem-arvados-cli-installed
     - unless:
       - /bin/grep -qE "[a-z0-9]{5}-2x53u-[a-z0-9]{15}" /tmp/{{ vm }}
 
@@ -81,6 +89,9 @@ arvados-controller-resources-virtual-machines-{{ vm }}-scoped-token-cmd-run:
     - 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 \
@@ -92,5 +103,6 @@ arvados-controller-resources-virtual-machines-{{ vm }}-scoped-token-cmd-run:
       - pkg: arvados-controller-package-install-pkg-installed
       - pkg: arvados-controller-resources-virtual-machines-jq-pkg-installed
       - cmd: arvados-controller-resources-virtual-machines-{{ vm }}-get-vm_uuid-cmd-run
+      - gem: arvados-controller-package-install-gem-arvados-cli-installed
 
 {%- endfor %}
index ad9a0c51087ff29384aa631d018eabe4a8a7ac16..a7203710b144d0376f054a509617d787ea034841 100644 (file)
@@ -74,6 +74,9 @@ arvados:
   controller:
     pkg:
       name: arvados-controller
+    gem:
+      name:
+        - arvados-cli
     service:
       name: arvados-controller
       port: 8003
index ddd710cb909f778b1b6ac73e3b8733042cb8b201..78676f16fddc217e34edb8ec17571ba1d3921853 100644 (file)
@@ -222,6 +222,9 @@ arvados:
 #   controller:
 #     pkg:
 #       name: arvados-controller
+#     gem:
+#       name:
+#         - arvados-cli
 #     service:
 #       name: arvados-controller
 #       port: 8003