Skip to content

Commit

Permalink
Add support for linking service dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
clementd-fretlink committed Jul 2, 2020
1 parent f642276 commit 45a5c13
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 0 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ Variables for the application:
- `clever_env_output_file`: as a post deploy task you might need to retrieve the full Clever environment configuration (i.e. with addon env variables). If this variable is set to a filename then the env will be retrieved after a successful deploy and written to this file. Beware, the resulting file will contain sensitive information (addon passwords, …). Optional.
- `clever_build_flavor`: an optional text value used to configure the size of the dedicated build instance (for instance `S` or `XL`). If not defined, it delegates to clever cloud default behaviour. Setting `disabled` disables the dedicated build instance altogether.
- `clever_scaling`: an optional object used to configure the runtime instances flavours and numbers. If not defined, it delegates to clever cloud default behaviour.
- `clever_service_dependencies`: a list of the service dependencies needed by the application (each service being a dict containing either an `app_id` field, or an `addon_id` field), optional.<br/>
Example: `[{ addon_id: addon_00000000-0000-0000-0000-000000000000 }, { app_id: app_00000000-0000-0000-0000-000000000000 }]`

Variables specific to deployment, defaults should be fine:

Expand Down
6 changes: 6 additions & 0 deletions defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,9 @@ clever_addons: []
# clever_addons:
# - name: pg
# - env_prefix: POSTGRESQL_ADDON

clever_service_dependencies: []
# example
# clever_service_dependencies:
# - addon_id: addon_00000000-0000-0000-0000-000000000000
# - app_id: app_00000000-0000-0000-0000-000000000000
6 changes: 6 additions & 0 deletions tasks/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@
MIN_FLAVOR: "{{ clever_scaling.flavor.min | default('') }}"
MAX_FLAVOR: "{{ clever_scaling.flavor.max | default('') }}"

- name: Configure service dependencies
include_tasks: service-dep.yml
vars:
service_dep: "{{ item }}"
with_items: "{{ clever_service_dependencies }}"

- name: Push Environment
shell: "clever env import --json < {{ clever_app_confdir }}/env"
args:
Expand Down
17 changes: 17 additions & 0 deletions tasks/service-dep.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
- name: Make sure addon {{ service_dep.addon_id }} is linked
shell: >
clever service link-addon {{ service_dep.addon_id }}
args:
chdir: "{{ clever_app_root }}"
environment:
CONFIGURATION_FILE: "{{ clever_login_file }}"
when: service_dep.addon_id is defined

- name: Make sure app {{ service_dep.app_id }} is linked
shell: >
clever service link-app {{ service_dep.app_id }}
args:
chdir: "{{ clever_app_root }}"
environment:
CONFIGURATION_FILE: "{{ clever_login_file }}"
when: service_dep.app_id is defined
1 change: 1 addition & 0 deletions tests/test-all.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@
- import_playbook: ./test-haskell-app.yml
- import_playbook: ./test-noop-deploy.yml
- import_playbook: ./test-scalability.yml
- import_playbook: ./test-service-deps.yml
- import_playbook: ./test-restart-app.yml
36 changes: 36 additions & 0 deletions tests/test-service-deps.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
- name: Deploy an app & configure service dependencies on clever
hosts: localhost
remote_user: root
pre_tasks:
- file:
state: absent
path: ../clever-commands
roles:
- role: clever
vars:
clever_token: 123abc
clever_secret: cba321
clever_app: app_00000000-0000-0000-0000-000000000000
clever_service_dependencies:
- app_id: app_00000000-2222-2222-2222-000000000000
- addon_id: addon_00000000-0000-0000-0000-000000000000
post_tasks:
- name: Check stubbed commands
shell: "{{ item.cmd }}"
ignore_errors: true
vars:
display: "{{ item.display }}"
with_list:
- cmd: "grep service ../clever-commands"
display: "Expected 'clever service' command to be called"
register: tests_results
- name: show results
debug:
msg:
- "failed_results: {{ failed_results }}"
- "success_results: {{ success_results }}"
failed_when: tests_results is failed
vars:
failed_results: "{{ tests_results.results | selectattr('failed') | map(attribute='item.display') | list }}"
success_results: "{{ tests_results.results | rejectattr('failed') | map(attribute='item.display') | list }}"

0 comments on commit 45a5c13

Please sign in to comment.