in source/state_machine_router.py [0:0]
def service_control_policy(event, function_name):
scp = ServiceControlPolicy(event, logger)
logger.info("Router FunctionName: {}".format(function_name))
if function_name == 'list_policies':
response = scp.list_policies()
elif function_name == 'list_policies_for_account':
response = scp.list_policies_for_account()
elif function_name == 'list_policies_for_ou':
response = scp.list_policies_for_ou()
elif function_name == 'create_policy':
response = scp.create_policy()
elif function_name == 'update_policy':
response = scp.update_policy()
elif function_name == 'delete_policy':
response = scp.delete_policy()
elif function_name == 'configure_count':
policy_list = event.get('ResourceProperties').get('PolicyList', [])
logger.info("List of policies: {}".format(policy_list))
event.update({'Index': 0})
event.update({'Step': 1})
event.update({'Count': len(policy_list)})
return event
elif function_name == 'iterator':
index = event.get('Index')
step = event.get('Step')
count = event.get('Count')
policy_list = event.get('ResourceProperties').get('PolicyList', [])
policy_to_apply = policy_list[index] \
if len(policy_list) > index else None
if index < count:
_continue = True
else:
_continue = False
index = index + step
event.update({'Index': index})
event.update({'Step': step})
event.update({'Continue': _continue})
event.update({'PolicyName': policy_to_apply})
return event
elif function_name == 'attach_policy':
response = scp.attach_policy()
elif function_name == 'detach_policy':
response = scp.detach_policy()
elif function_name == 'detach_policy_from_all_accounts':
response = scp.detach_policy_from_all_accounts()
elif function_name == 'enable_policy_type':
response = scp.enable_policy_type()
elif function_name == 'configure_count_2':
ou_list = event.get('ResourceProperties').get('OUList', [])
logger.info("List of OUs: {}".format(ou_list))
event.update({'Index': 0})
event.update({'Step': 1})
event.update({'Count': len(ou_list)})
return event
elif function_name == 'iterator2':
index = event.get('Index')
step = event.get('Step')
count = event.get('Count')
ou_list = event.get('ResourceProperties').get('OUList', [])
ou_map = ou_list[index] if len(ou_list) > index else None
if index < count:
_continue = True
else:
_continue = False
index = index + step
event.update({'Index': index})
event.update({'Step': step})
event.update({'Continue': _continue})
if ou_map: # ou list example: [['ouname1','ouid1],'Attach']
logger.info("[state_machine_router.service_control_policy] ou_map: {}".format(ou_map))
logger.debug("[state_machine_router.service_control_policy] OUName: {}; OUId: {}; Operation: {}"\
.format(ou_map[0][0], ou_map[0][1], ou_map[1]))
event.update({'OUName': ou_map[0][0]})
event.update({'OUId': ou_map[0][1]})
event.update({'Operation': ou_map[1]})
return event
else:
message = build_messages(1)
logger.info(message)
return {"Message": message}
logger.info(response)
return response