in code/ct_flowlog_activator.py [0:0]
def toggle_flowlog(target_session, accountId, resourceId, resourceType, flowLogTag, flowLogStatus, region):
'''
Toggle the Flow Log based on the expected results from the flow log tag. Check against current status.
'''
try:
if flowLogTag > 0 and flowLogStatus == 0:
LOGGER.info("Activating Flow Log on acc: {} resourceId: {} with filter mode: {}".format(accountId, resourceId, traffic_mode[flowLogTag]))
response = create_flowlog(target_session, accountId, resourceId, resourceType, traffic_mode[flowLogTag], os.environ['s3bucket'], region)
if response:
LOGGER.info("Flow Log activated : {}".format(response['FlowLogIds']))
else:
LOGGER.error("Failed to activate flow log on acc: {} resourceId: {} with filter mode: {}".format(
accountId, resourceId, traffic_mode[flowLogTag]))
elif flowLogTag <= 0 and flowLogStatus > 0:
LOGGER.info("Disabling Flow Log on acc: {} resourceId: {} with filter mode: {}".format(accountId, resourceId, traffic_mode[flowLogTag]))
response = delete_flowlog(target_session, accountId, resourceId, region)
if response:
LOGGER.info("Flow Log deleted : {}".format(response['ResponseMetadata']))
else:
LOGGER.error("Failed to disable Flow Log on acc: {} resourceId: {} with filter mode: {}".format(
accountId, resourceId, traffic_mode[flowLogTag]))
elif flowLogTag > 0 and flowLogStatus > 0:
delta = abs(flowLogTag - flowLogStatus)
if delta > 0:
LOGGER.info("Changing Flow Log on acc: {} resourceId: {} with filter mode: {}".format(accountId, resourceId, traffic_mode[flowLogTag]))
delete_response = delete_flowlog(target_session, accountId, resourceId, region)
if delete_response:
LOGGER.debug("Original Flow Log deleted: {}".format(delete_response['ResponseMetadata']))
else:
LOGGER.error("Failed to delete Flow Log on acc: {} resourceId: {} with filter mode: {}".format(
accountId, resourceId, traffic_mode[flowLogTag]))
create_response = create_flowlog(target_session, accountId, resourceId, resourceType, traffic_mode[flowLogTag], os.environ['s3bucket'], region)
if create_response:
LOGGER.info("Flow Log modified : {}".format(create_response['FlowLogIds']))
else:
LOGGER.error("Failed to create flow log on acc: {} resourceId: {} with filter mode: {}".format(
accountId, resourceId, traffic_mode[flowLogTag]))
else:
LOGGER.info("No changes for Flow Log on acc: {} resourceId: {} with filter mode: {}".format(accountId, resourceId, traffic_mode[flowLogTag]))
else:
LOGGER.info("No changes for Flow Log on acc: {} resourceId: {} with filter mode: {}".format(accountId, resourceId, traffic_mode[flowLogTag]))
except Exception as e:
LOGGER.error("Failed to modify Flow Log : {}".format(e), exc_info=True)