Skip to content

Commit a3714f1

Browse files
authored
Merge branch 'stackhpc:master' into issue-161
2 parents 9501ff6 + f526856 commit a3714f1

File tree

7 files changed

+71
-11
lines changed

7 files changed

+71
-11
lines changed

galaxy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
namespace: "stackhpc"
22
name: "cephadm"
3-
version: "1.18.0"
3+
version: "1.19.0"
44
readme: "README.md"
55
authors:
66
- "Michal Nasiadka"

plugins/modules/cephadm_ec_profile.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@
7777
- Restrict placement to devices of a specific class (hdd/ssd)
7878
required: false
7979
type: str
80+
crush_failure_domain:
81+
description:
82+
- Set the failure domain for the CRUSH rule (e.g., 'rack', 'host', 'osd')
83+
required: false
84+
type: str
8085
8186
author:
8287
- Guillaume Abrioux <[email protected]>
@@ -94,6 +99,13 @@
9499
cephadm_ec_profile:
95100
name: foo
96101
state: absent
102+
103+
- name: create an erasure code profile with custom failure domain
104+
cephadm_ec_profile:
105+
name: foo-osd
106+
k: 4
107+
m: 2
108+
crush_failure_domain: osd
97109
'''
98110

99111
from ansible.module_utils.basic import AnsibleModule
@@ -120,7 +132,7 @@ def get_profile(module, name):
120132
return cmd
121133

122134

123-
def create_profile(module, name, k, m, stripe_unit, crush_device_class, directory, plugin, force=False): # noqa: E501
135+
def create_profile(module, name, k, m, stripe_unit, crush_device_class, crush_failure_domain, directory, plugin, force=False): # noqa: E501
124136
'''
125137
Create a profile
126138
'''
@@ -130,6 +142,8 @@ def create_profile(module, name, k, m, stripe_unit, crush_device_class, director
130142
args.append('stripe_unit={0}'.format(stripe_unit))
131143
if crush_device_class:
132144
args.append('crush-device-class={0}'.format(crush_device_class))
145+
if crush_failure_domain:
146+
args.append('crush-failure-domain={0}'.format(crush_failure_domain))
133147
if directory:
134148
args.append('directory={0}'.format(plugin))
135149
if plugin:
@@ -165,6 +179,7 @@ def run_module():
165179
k=dict(type='str', required=False),
166180
m=dict(type='str', required=False),
167181
crush_device_class=dict(type='str', required=False),
182+
crush_failure_domain=dict(type='str', required=False),
168183
directory=dict(type='str', required=False),
169184
plugin=dict(type='str', required=False),
170185
)
@@ -182,6 +197,7 @@ def run_module():
182197
k = module.params.get('k')
183198
m = module.params.get('m')
184199
crush_device_class = module.params.get('crush_device_class')
200+
crush_failure_domain = module.params.get('crush_failure_domain')
185201
directory = module.params.get('directory')
186202
plugin = module.params.get('plugin')
187203

@@ -209,6 +225,7 @@ def run_module():
209225
current_profile['m'] != m or \
210226
current_profile.get('stripe_unit', stripe_unit) != stripe_unit or \
211227
current_profile.get('crush-device-class', crush_device_class) != crush_device_class or \
228+
current_profile.get('crush-failure-domain', crush_failure_domain) != crush_failure_domain or \
212229
current_profile.get('directory', directory) != directory or \
213230
current_profile.get('plugin', plugin) != plugin: # noqa: E501
214231
rc, cmd, out, err = exec_command(module,
@@ -218,6 +235,7 @@ def run_module():
218235
m,
219236
stripe_unit,
220237
crush_device_class, # noqa: E501
238+
crush_failure_domain,
221239
directory,
222240
plugin,
223241
force=True)) # noqa: E501
@@ -230,6 +248,7 @@ def run_module():
230248
m,
231249
stripe_unit, # noqa: E501
232250
crush_device_class, # noqa: E501
251+
crush_failure_domain,
233252
directory,
234253
plugin))
235254
if rc == 0:

plugins/modules/cephadm_key.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -69,31 +69,31 @@
6969

7070
EXAMPLES = '''
7171
- name: create cephx key
72-
ceph_key:
72+
cephadm_key:
7373
name: "{{ item.name }}"
7474
state: present
7575
caps: "{{ item.caps }}"
7676
with_items: "{{ keys_to_create }}"
7777
7878
- name: delete cephx key
79-
ceph_key:
79+
cephadm_key:
8080
name: "my_key"
8181
state: absent
8282
8383
- name: info cephx key
84-
ceph_key:
84+
cephadm_key:
8585
name: "my_key"
8686
state: info
8787
8888
- name: info cephx admin key (plain)
89-
ceph_key:
89+
cephadm_key:
9090
name: client.admin
9191
output_format: plain
9292
state: info
9393
register: client_admin_key
9494
9595
- name: list cephx keys
96-
ceph_key:
96+
cephadm_key:
9797
state: list
9898
'''
9999

@@ -320,17 +320,17 @@ def run_module():
320320
else:
321321
rc, cmd, out, err = exec_commands(module, update_key(name, caps)) # noqa: E501
322322
if rc != 0:
323-
result["stdout"] = "Couldn't update caps for {0}".format(name)
323+
result["msg"] = "Couldn't update caps for {0}".format(name)
324324
result["stderr"] = err
325-
module.exit_json(**result)
325+
module.fail_json(**result)
326326
changed = True
327327

328328
else:
329329
rc, cmd, out, err = exec_commands(module, create_key(name, caps)) # noqa: E501
330330
if rc != 0:
331-
result["stdout"] = "Couldn't create {0}".format(name)
331+
result["msg"] = "Couldn't create {0}".format(name)
332332
result["stderr"] = err
333-
module.exit_json(**result)
333+
module.fail_json(**result)
334334
changed = True
335335

336336
elif state == "absent":

roles/cephadm/tasks/pkg_debian.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,20 @@
4040
state: "{{ 'latest' if cephadm_package_update | bool else 'present' }}"
4141
update_cache: true
4242
become: true
43+
timeout: 600
44+
ignore_errors: true
45+
register: cephadm_install
46+
retries: 3
47+
delay: 20
48+
49+
# NOTE(Alex-Welsh): The cephadm install task sometimes hangs indefinitely after
50+
# the package is installed. This is a workaround to ensure the playbook
51+
# completes properly.
52+
- name: Ensure Cephadm package has installed properly
53+
apt:
54+
name: "cephadm"
55+
state: "{{ 'latest' if cephadm_package_update | bool else 'present' }}"
56+
update_cache: true
57+
become: true
58+
timeout: 60
59+
when: cephadm_install is failed

roles/cephadm/tasks/pkg_redhat.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,22 @@
3333
state: "{{ 'latest' if cephadm_package_update | bool else 'present' }}"
3434
update_cache: true
3535
become: true
36+
timeout: 600
37+
ignore_errors: true
38+
register: cephadm_install
39+
retries: 3
40+
delay: 20
41+
42+
43+
# NOTE(Alex-Welsh): The cephadm install task sometimes hangs indefinitely after
44+
# the package is installed. This is a workaround to ensure the playbook
45+
# completes properly.
46+
- name: Ensure Cephadm package has installed properly
47+
dnf:
48+
name: "cephadm"
49+
install_weak_deps: false
50+
state: "{{ 'latest' if cephadm_package_update | bool else 'present' }}"
51+
update_cache: true
52+
become: true
53+
timeout: 60
54+
when: cephadm_install is failed

roles/ec_profiles/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ This role assumes the existence of the following groups:
2525
m: 2
2626
- name: delete_me
2727
state: absent
28+
- name: foo-osd
29+
k: 4
30+
m: 2
31+
crush_failure_domain: osd
2832
2933
```
3034

roles/ec_profiles/tasks/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
directory: "{{ item.directory | default(omit) }}"
1111
crush_root: "{{ item.crush_root | default(omit) }}"
1212
crush_device_class: "{{ item.crush_device_class | default(omit) }}"
13+
crush_failure_domain: "{{ item.crush_failure_domain | default(omit) }}"
1314
with_items: "{{ cephadm_ec_profiles }}"
1415
delegate_to: "{{ groups['mons'][0] }}"
1516
run_once: true

0 commit comments

Comments
 (0)