# Copyright 2018 Daniel Pivonka <dpivonka@redhat.com>
# Copyright 2018 Red Hat, Inc.
#
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+# GNU General Public License v3.0+
+
+from ansible.module_utils.basic import AnsibleModule
+from socket import error as socket_error
+import boto
+import radosgw
ANSIBLE_METADATA = {
'metadata_version': '1.1',
default: unlimited
bucketmaxobjects:
description:
- - with bucket quota enabled specify maximum number of objects
+ - with bucket quota enabled specify maximum number of objects # noqa E501
required: false
default: unlimited
buckets:
returned: always
type: list
sample: [
- "test2: could not modify user: unable to modify user, cannot add duplicate email\n"
+ "test2: could not modify user: unable to modify user, cannot add duplicate email\n" # noqa E501
]
failed_users:
'''
-from ansible.module_utils.basic import AnsibleModule
-from socket import error as socket_error
-import boto
-import radosgw
-
def create_users(rgw, users, result):
# check if user exists
try:
user_info = rgw.get_user(uid=username)
- except radosgw.exception.RadosGWAdminError as e:
+ except radosgw.exception.RadosGWAdminError:
# it doesnt exist
user_info = None
if email:
if autogenkey:
try:
- rgw.create_user(username, fullname, email=email, key_type='s3',
+ rgw.create_user(username, fullname, email=email, key_type='s3', # noqa E501
generate_key=autogenkey,
- max_buckets=maxbucket, suspended=suspend)
+ max_buckets=maxbucket, suspended=suspend) # noqa E501
except radosgw.exception.RadosGWAdminError as e:
- result['error_messages'].append(username + ' ' + e.get_code())
+ result['error_messages'].append(username + ' ' + e.get_code()) # noqa E501
fail_flag = True
else:
try:
- rgw.create_user(username, fullname, email=email, key_type='s3',
- access_key=accesskey, secret_key=secretkey,
- max_buckets=maxbucket, suspended=suspend)
+ rgw.create_user(username, fullname, email=email, key_type='s3', # noqa E501
+ access_key=accesskey, secret_key=secretkey, # noqa E501
+ max_buckets=maxbucket, suspended=suspend) # noqa E501
except radosgw.exception.RadosGWAdminError as e:
- result['error_messages'].append(username + ' ' + e.get_code())
+ result['error_messages'].append(username + ' ' + e.get_code()) # noqa E501
fail_flag = True
else:
if autogenkey:
try:
rgw.create_user(username, fullname, key_type='s3',
generate_key=autogenkey,
- max_buckets=maxbucket, suspended=suspend)
+ max_buckets=maxbucket, suspended=suspend) # noqa E501
except radosgw.exception.RadosGWAdminError as e:
- result['error_messages'].append(username + ' ' + e.get_code())
+ result['error_messages'].append(username + ' ' + e.get_code()) # noqa E501
fail_flag = True
else:
try:
rgw.create_user(username, fullname, key_type='s3',
- access_key=accesskey, secret_key=secretkey,
- max_buckets=maxbucket, suspended=suspend)
+ access_key=accesskey, secret_key=secretkey, # noqa E501
+ max_buckets=maxbucket, suspended=suspend) # noqa E501
except radosgw.exception.RadosGWAdminError as e:
- result['error_messages'].append(username + ' ' + e.get_code())
+ result['error_messages'].append(username + ' ' + e.get_code()) # noqa E501
fail_flag = True
if not fail_flag and userquota:
rgw.set_quota(username, 'user', max_objects=usermaxobjects,
max_size_kb=usermaxsize, enabled=True)
except radosgw.exception.RadosGWAdminError as e:
- result['error_messages'].append(username + ' ' + e.get_code())
+ result['error_messages'].append(username + ' ' + e.get_code()) # noqa E501
fail_flag = True
if not fail_flag and bucketquota:
try:
- rgw.set_quota(username, 'bucket', max_objects=bucketmaxobjects,
+ rgw.set_quota(username, 'bucket', max_objects=bucketmaxobjects, # noqa E501
max_size_kb=bucketmaxsize, enabled=True)
except radosgw.exception.RadosGWAdminError as e:
- result['error_messages'].append(username + ' ' + e.get_code())
+ result['error_messages'].append(username + ' ' + e.get_code()) # noqa E501
fail_flag = True
if fail_flag:
try:
rgw.delete_user(username)
- except radosgw.exception.RadosGWAdminError as e:
+ except radosgw.exception.RadosGWAdminError:
pass
failed_users.append(username)
else:
# check if user exists
try:
user_info = rgw.get_user(uid=user)
- except radosgw.exception.RadosGWAdminError as e:
+ except radosgw.exception.RadosGWAdminError:
# it doesnt exist
user_info = None
result['error_messages'].append(bucket + e.get_code())
try:
rgw.delete_bucket(bucket, purge_objects=True)
- except radosgw.exception.RadosGWAdminError as e:
+ except radosgw.exception.RadosGWAdminError:
pass
failed_buckets.append(bucket)
# user doesnt exist cant be link delete bucket
try:
rgw.delete_bucket(bucket, purge_objects=True)
- except radosgw.exception.RadosGWAdminError as e:
+ except radosgw.exception.RadosGWAdminError:
pass
failed_buckets.append(bucket)
- result['error_messages'].append(bucket + ' could not be linked' + ', NoSuchUser ' + user)
+ result['error_messages'].append(bucket + ' could not be linked' + ', NoSuchUser ' + user) # noqa E501
else:
# something went wrong
failed_buckets.append(bucket)
- result['error_messages'].append(bucket + ' could not be created')
+ result['error_messages'].append(bucket + ' could not be created') # noqa E501
result['added_buckets'] = ", ".join(added_buckets)
result['failed_buckets'] = ", ".join(failed_buckets)
host=rgw._connection[0],
port=rgw.port,
is_secure=rgw.is_secure,
- calling_format=boto.s3.connection.OrdinaryCallingFormat(),
+ calling_format=boto.s3.connection.OrdinaryCallingFormat(), # noqa E501
)
try:
admin_access_key=dict(type='str', required=True),
admin_secret_key=dict(type='str', required=True),
buckets=dict(type='list', required=False, elements='dict',
- options=dict(bucket=dict(type='str', required=True),
- user=dict(type='str', required=True))),
+ options=dict(bucket=dict(type='str', required=True), # noqa E501
+ user=dict(type='str', required=True))), # noqa E501
users=dict(type='list', required=False, elements='dict',
- options=dict(username=dict(type='str', required=True),
- fullname=dict(type='str', required=True),
- email=dict(type='str', required=False),
- maxbucket=dict(type='int', required=False, default=1000),
- suspend=dict(type='bool', required=False, default=False),
- autogenkey=dict(type='bool', required=False, default=True),
- accesskey=dict(type='str', required=False),
- secretkey=dict(type='str', required=False),
- userquota=dict(type='bool', required=False, default=False),
- usermaxsize=dict(type='str', required=False, default='-1'),
- usermaxobjects=dict(type='int', required=False, default=-1),
- bucketquota=dict(type='bool', required=False, default=False),
- bucketmaxsize=dict(type='str', required=False, default='-1'),
- bucketmaxobjects=dict(type='int', required=False, default=-1))))
+ options=dict(username=dict(type='str', required=True), # noqa E501
+ fullname=dict(type='str', required=True), # noqa E501
+ email=dict(type='str', required=False), # noqa E501
+ maxbucket=dict(type='int', required=False, default=1000), # noqa E501
+ suspend=dict(type='bool', required=False, default=False), # noqa E501
+ autogenkey=dict(type='bool', required=False, default=True), # noqa E501
+ accesskey=dict(type='str', required=False), # noqa E501
+ secretkey=dict(type='str', required=False), # noqa E501
+ userquota=dict(type='bool', required=False, default=False), # noqa E501
+ usermaxsize=dict(type='str', required=False, default='-1'), # noqa E501
+ usermaxobjects=dict(type='int', required=False, default=-1), # noqa E501
+ bucketquota=dict(type='bool', required=False, default=False), # noqa E501
+ bucketmaxsize=dict(type='str', required=False, default='-1'), # noqa E501
+ bucketmaxobjects=dict(type='int', required=False, default=-1)))) # noqa E501
# the AnsibleModule object
module = AnsibleModule(argument_spec=fields,
# radosgw connection
rgw = radosgw.connection.RadosGWAdminConnection(host=rgw_host,
port=port,
- access_key=admin_access_key,
- secret_key=admin_secret_key,
+ access_key=admin_access_key, # noqa E501
+ secret_key=admin_secret_key, # noqa E501
aws_signature='AWS4',
is_secure=is_secure)
#!/usr/bin/python
-#
# Copyright (c) 2018 Red Hat, Inc.
#
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-#
+# GNU General Public License v3.0+
from __future__ import absolute_import, division, print_function
__metaclass__ = type
+from ansible.module_utils.basic import AnsibleModule
+import datetime
ANSIBLE_METADATA = {
'metadata_version': '1.1',
RETURN = '''# '''
-from ansible.module_utils.basic import AnsibleModule
-import datetime
-
def fatal(message, module):
'''
"region",
"root",
]
- return sorted(location, key=lambda crush: crush_bucket_types.index(crush[0]))
+ return sorted(location, key=lambda crush: crush_bucket_types.index(crush[0])) # noqa E501
except ValueError as error:
- fatal("{} is not a valid CRUSH bucket, valid bucket types are {}".format(error.args[0].split()[0], crush_bucket_types), module)
+ fatal("{} is not a valid CRUSH bucket, valid bucket types are {}".format(error.args[0].split()[0], crush_bucket_types), module) # noqa E501
def create_and_move_buckets_list(cluster, location, containerized=None):
for item in location:
bucket_type, bucket_name = item
# ceph osd crush add-bucket maroot root
- cmd_list.append(generate_cmd(cluster, "add-bucket", bucket_name, bucket_type, containerized))
+ cmd_list.append(generate_cmd(cluster, "add-bucket", bucket_name, bucket_type, containerized)) # noqa E501
if previous_bucket:
# ceph osd crush move monrack root=maroot
- cmd_list.append(generate_cmd(cluster, "move", previous_bucket, "%s=%s" % (bucket_type, bucket_name), containerized))
+ cmd_list.append(generate_cmd(cluster, "move", previous_bucket, "%s=%s" % (bucket_type, bucket_name), containerized)) # noqa E501
previous_bucket = item[1]
return cmd_list
startd = datetime.datetime.now()
# run the Ceph command to add buckets
- rc, cmd, out, err = exec_commands(module, create_and_move_buckets_list(cluster, location, containerized))
+ rc, cmd, out, err = exec_commands(module, create_and_move_buckets_list(cluster, location, containerized)) # noqa E501
endd = datetime.datetime.now()
delta = endd - startd
#!/usr/bin/python
+
import datetime
import copy
import json
return cmd
+
def list_storage_inventory(module, container_image):
'''
List storage inventory.
return cmd
+
def activate_osd():
'''
Activate all the OSDs on a machine
Check if an LV exists
'''
- args = [ '--noheadings', '--reportformat', 'json', '--select', 'lv_name={},vg_name={}'.format(lv, vg) ]
+ args = ['--noheadings', '--reportformat', 'json', '--select', 'lv_name={},vg_name={}'.format(lv, vg)] # noqa E501
cmd = build_cmd(args, container_image, binary='lvs')
if out_dict:
data = module.params['data']
- result['stdout'] = 'skipped, since {0} is already used for an osd'.format( # noqa E501
- data)
+ result['stdout'] = 'skipped, since {0} is already used for an osd'.format(data) # noqa E501
result['rc'] = 0
module.exit_json(**result)
elif action == 'zap':
# Zap the OSD
skip = []
- for device_type in ['journal','data', 'db', 'wal']:
+ for device_type in ['journal', 'data', 'db', 'wal']:
# 1/ if we passed vg/lv
- if module.params.get('{}_vg'.format(device_type), None) and module.params.get(device_type, None):
+ if module.params.get('{}_vg'.format(device_type), None) and module.params.get(device_type, None): # noqa E501
# 2/ check this is an actual lv/vg
- ret = is_lv(module, module.params['{}_vg'.format(device_type)], module.params[device_type], container_image)
+ ret = is_lv(module, module.params['{}_vg'.format(device_type)], module.params[device_type], container_image) # noqa E501
skip.append(ret)
# 3/ This isn't a lv/vg device
if not ret:
module.params['{}_vg'.format(device_type)] = False
module.params[device_type] = False
- # 4/ no journal|data|db|wal|_vg was passed, so it must be a raw device
- elif not module.params.get('{}_vg'.format(device_type), None) and module.params.get(device_type, None):
+ # 4/ no journal|data|db|wal|_vg was passed, so it must be a raw device # noqa E501
+ elif not module.params.get('{}_vg'.format(device_type), None) and module.params.get(device_type, None): # noqa E501
skip.append(True)
cmd = zap_devices(module, container_image)
strategy_changed_in_out = "strategy changed" in out
strategy_changed_in_err = "strategy changed" in err
strategy_changed = strategy_changed_in_out or \
- strategy_changed_in_err
+ strategy_changed_in_err
if strategy_changed:
if strategy_changed_in_out:
out = json.dumps({"changed": False,