Skip to content

Commit c1ee7a6

Browse files
authored
Merge pull request #1 from singleplatform-eng/Feature_service_state_and_removal
SPROD-7912 Feature service state and removal
2 parents 0c34886 + 3b8d305 commit c1ee7a6

File tree

5 files changed

+92
-5
lines changed

5 files changed

+92
-5
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,11 @@ An example of how to use the role
4646
celery_user: celery
4747
celery_services:
4848
- name: celeryd
49+
state: started
50+
enabled: yes
4951
- name: celery_beat
52+
state: stopped
53+
enabled: no
5054
environment:
5155
SINGLE_BEAT_IDENTIFIER: celery-beat
5256
SINGLE_BEAT_LOCK_TIME: 300

tasks/manage_configs.yml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
---
2+
23
- name: Configure Celery EnvironmentFile
3-
template: src=celery_env.j2 dest="{{celery_env_dir}}/{{item.name}}"
4-
notify: "restart celery services"
4+
template:
5+
src: celery_env.j2
6+
dest: "{{celery_env_dir}}/{{item.name}}"
7+
with_items: "{{celery_services}}"
8+
9+
- name: Configure Celery systemd service unit
10+
template:
11+
src: celery.service.j2
12+
dest: "{{celery_env_dir}}/{{item.name}}.service"
13+
register: "celery_states"
514
with_items: "{{celery_services}}"

tasks/manage_units.yml

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,57 @@
11
---
2-
- name: Configure Celery systemd service unit
3-
template: src=celery.service.j2 dest="/etc/systemd/system/{{item.name}}.service"
4-
notify: restart celery services
2+
3+
- name: Link Service Unit
4+
file:
5+
src: "{{celery_env_dir}}/{{item.name}}.service"
6+
dest: "/etc/systemd/system/{{item.name}}.service"
7+
owner: root
8+
group: root
9+
state: link
10+
with_items: "{{celery_services}}"
11+
12+
- name: Get units configs
13+
find:
14+
path: "{{celery_env_dir}}/"
15+
pattern: '^.*?\.service$'
16+
use_regex: yes
17+
register: service_configs
18+
changed_when: false
19+
20+
- name: Set file list
21+
set_fact:
22+
unmanaged_configs: "{{(service_configs.files|map(attribute='path')|map('basename')|map('replace', '.service','')|list)|reject('in', celery_services|map(attribute='name')|list)|list}}"
23+
changed_when: false
24+
25+
- name: Stop Unmanaged Service
26+
systemd:
27+
name: "{{item}}.service"
28+
state: stopped
29+
with_items: "{{unmanaged_configs}}"
30+
31+
- name: Remove Unmanaged Services
32+
file:
33+
dest: "/etc/systemd/system/{{item}}.service"
34+
owner: root
35+
group: root
36+
state: absent
37+
register: removed_services
38+
with_items: "{{unmanaged_configs}}"
39+
40+
- name: Detect Changes
41+
command: /bin/true
42+
register: celery_services_state
43+
when: item.changed
44+
with_items: "{{celery_states.results + removed_services.results}}"
45+
46+
- name: Reload systemd daemon
47+
systemd:
48+
daemon_reload: yes
49+
when: celery_services_state is changed
50+
51+
- name: Enable Service
52+
systemd:
53+
name: "{{item.name}}.service"
54+
state: "{{item.state|default('stopped')}}"
55+
enabled: yes
56+
when: item.enabled|default(False)|bool
557
with_items: "{{celery_services}}"

tests/test.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ printf ${green}"Testing Start Handlers and Service\n"${neutral}
6767
docker exec $container_id ansible-playbook /etc/ansible/roles/role_under_test/tests/$playbook -e 'test_handlers=True test_service=True'
6868
printf ${green}"Handlers and Service test passed\n"${neutra}
6969

70+
printf ${green}"Testing Service Removal\n"${neutral}
71+
docker exec $container_id ansible-playbook /etc/ansible/roles/role_under_test/tests/$playbook -e 'service_test=True'
72+
printf ${green}"Service Removal test passed\n"${neutra}
7073

7174
# Remove the Docker container (if configured).
7275
if [ "$cleanup" = true ]; then

tests/test.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,3 +65,22 @@
6565
command: echo stopping celery
6666
notify: stop celery services
6767
when: test_handlers is defined
68+
69+
- hosts: localhost
70+
remote_user: root
71+
roles:
72+
- { role: role_under_test, when: service_test is defined, celery_working_dir: /srv, celery_app: tasks, celery_user: celery, celery_services: []}
73+
tasks:
74+
- name: Fail To start Celery
75+
systemd:
76+
name: celeryd
77+
state: stopped
78+
register: failed_start
79+
failed_when: false
80+
when: service_test is defined
81+
82+
- name: Assert failure
83+
assert:
84+
that:
85+
- "'Could not find the requested service celeryd' in failed_start.msg"
86+
when: service_test is defined

0 commit comments

Comments
 (0)