Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
# no option selected, display a table of options
if not selection:
headers = ['Number', 'Source', 'Discovered', 'Policy Length', 'Policy Contents']
rows = []
for index, policies_version in enumerate(role.policies):
rows.append([index, policies_version['Source'], policies_version['Discovered'],
len(str(policies_version['Policy'])),
str(policies_version['Policy'])[:50]])
print tabulate(rows, headers=headers)
return
from cloudaux import CloudAux
conn = config['connection_iam']
conn['account_number'] = account_number
ca = CloudAux(**conn)
current_policies = get_role_inline_policies(role.as_dict(), **conn)
if selection and not commit:
pp = pprint.PrettyPrinter()
print "Will restore the following policies:"
pp.pprint(role.policies[int(selection)]['Policy'])
print "Current policies:"
pp.pprint(current_policies)
return False
# if we're restoring from a version with fewer policies than we have now, we need to remove them to
# complete the restore. To do so we'll store all the policy names we currently have and remove them
# from the list as we update. Any policy names left need to be manually removed
policies_to_remove = current_policies.keys()
policies_length = len(json.dumps(repoed_policies))
if not commit:
for name in deleted_policy_names:
LOGGER.info('Would delete policy from {} with name {}'.format(role_name, name))
if repoed_policies:
LOGGER.info('Would replace policies for role {} with: \n{}'.format(role_name, json.dumps(repoed_policies,
indent=2, sort_keys=True)))
if policies_length > MAX_AWS_POLICY_SIZE:
LOGGER.error("Policies would exceed the AWS size limit after repo for role: {}. "
"Please manually minify.".format(role_name))
return
from cloudaux import CloudAux
conn = config['connection_iam']
conn['account_number'] = account_number
ca = CloudAux(**conn)
if policies_length > MAX_AWS_POLICY_SIZE:
LOGGER.error("Policies would exceed the AWS size limit after repo for role: {}. "
"Please manually minify.".format(role_name))
return
for name in deleted_policy_names:
LOGGER.info('Deleting policy with name {} from {}'.format(name, role.role_name))
try:
ca.call('iam.client.delete_role_policy', RoleName=role.role_name, PolicyName=name)
except botocore.exceptions.ClientError as e:
error = 'Error deleting policy: {} from role: {}. Exception: {}'.format(name, role.role_name, e)
LOGGER.error(error)
errors.append(error)
if repoed_policies:
def decorated_function(*args, **kwargs):
threads = []
for account, region in product(accounts, regions):
conn_dict = {
'tech': service,
'account_number': account,
'region': region,
'session_name': session_name,
'assume_role': assume_role,
'service_type': service_type,
'external_id': external_id,
'arn_partition': arn_partition,
'read_only': read_only
}
if conn_type == 'cloudaux':
kwargs['cloudaux'] = CloudAux(**conn_dict)
elif conn_type == 'dict':
kwargs['conn_dict'] = conn_dict
elif conn_type == 'boto3':
del conn_dict['tech']
kwargs['conn'] = boto3_cached_conn(service, **conn_dict)
result = func(*args, **kwargs)
if result:
threads.append(result)
result = []
for thread in threads:
result.append(thread)
return result
return decorated_function