- set the default flag on the realm.
required: false
default: false
+ url:
+ description:
+ - URL to the master RADOS Gateway zone.
+ required: false
+ access_key:
+ description:
+ - S3 access key of the master RADOS Gateway zone.
+ required: false
+ secret_key:
+ description:
+ - S3 secret key of the master RADOS Gateway zone.
+ required: false
author:
- Dimitri Savineau <dsavinea@redhat.com>
return cmd
+def pull_realm(module, container_image=None):
+ '''
+ Pull a realm
+ '''
+
+ cluster = module.params.get('cluster')
+ name = module.params.get('name')
+ url = module.params.get('url')
+ access_key = module.params.get('access_key')
+ secret_key = module.params.get('secret_key')
+
+ args = ['pull', '--rgw-realm=' + name, '--url=' + url, '--access-key=' + access_key, '--secret=' + secret_key]
+
+ cmd = generate_radosgw_cmd(cluster=cluster, args=args, container_image=container_image)
+
+ return cmd
+
+
def exit_module(module, out, rc, cmd, err, startd, changed=False):
endd = datetime.datetime.now()
delta = endd - startd
module_args = dict(
cluster=dict(type='str', required=False, default='ceph'),
name=dict(type='str', required=True),
- state=dict(type='str', required=False, choices=['present', 'absent', 'info'], default='present'),
+ state=dict(type='str', required=False, choices=['present', 'absent', 'info', 'pull'], default='present'),
default=dict(type='bool', required=False, default=False),
+ url=dict(type='str', required=False),
+ access_key=dict(type='str', required=False),
+ secret_key=dict(type='str', required=False),
)
module = AnsibleModule(
argument_spec=module_args,
supports_check_mode=True,
+ required_if=[['state', 'pull', ['url', 'access_key', 'secret_key']]],
)
# Gather module parameters in variables
elif state == "info":
rc, cmd, out, err = exec_commands(module, get_realm(module, container_image=container_image))
+ elif state == "pull":
+ rc, cmd, out, err = exec_commands(module, pull_realm(module, container_image=container_image))
+
exit_module(module=module, out=out, rc=rc, cmd=cmd, err=err, startd=startd, changed=changed)
when: not item.rgw_zonemaster | default(rgw_zonemaster) | bool
- name: fetch the realm(s)
- command: "{{ container_exec_cmd }} radosgw-admin realm pull --cluster={{ cluster }} --rgw-realm={{ item.realm }} --url={{ item.endpoint }} --access-key={{ item.system_access_key }} --secret={{ item.system_secret_key }}"
+ radosgw_realm:
+ name: "{{ item.realm }}"
+ cluster: "{{ cluster }}"
+ url: "{{ item.endpoint }}"
+ access_key: "{{ item.system_access_key }}"
+ secret_key: "{{ item.system_secret_key }}"
+ state: pull
delegate_to: "{{ groups[mon_group_name][0] }}"
run_once: true
loop: "{{ secondary_realms }}"
when: secondary_realms is defined
+ environment:
+ CEPH_CONTAINER_IMAGE: "{{ ceph_docker_registry + '/' + ceph_docker_image + ':' + ceph_docker_image_tag if containerized_deployment | bool else None }}"
+ CEPH_CONTAINER_BINARY: "{{ container_binary }}"
- name: get the period(s)
command: "{{ container_exec_cmd }} radosgw-admin period get --cluster={{ cluster }} --rgw-realm={{ item.realm }}"
fake_params = {'cluster': fake_cluster,
'name': fake_realm,
'default': True}
+fake_url = 'http://192.168.42.100:8080'
+fake_access_key = '8XQHmFxixz7LCM2AdM2p'
+fake_secret_key = 'XC8IhEPJprL6SrpaJDmolVs7jbOvoe2E3AaWKGRx'
class TestRadosgwRealmModule(object):
]
assert radosgw_realm.remove_realm(fake_module) == expected_cmd
+
+ def test_pull_realm(self):
+ fake_module = MagicMock()
+ fake_params.update({'url': fake_url, 'access_key': fake_access_key, 'secret_key': fake_secret_key})
+ fake_module.params = fake_params
+ expected_cmd = [
+ fake_binary,
+ '--cluster', fake_cluster,
+ 'realm', 'pull',
+ '--rgw-realm=' + fake_realm,
+ '--url=' + fake_url,
+ '--access-key=' + fake_access_key,
+ '--secret=' + fake_secret_key
+ ]
+
+ assert radosgw_realm.pull_realm(fake_module) == expected_cmd