mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-18 16:12:32 -05:00
85 lines
2.3 KiB
Python
85 lines
2.3 KiB
Python
|
|
import boto3
|
||
|
|
import csv
|
||
|
|
from datetime import datetime
|
||
|
|
from pprint import pprint
|
||
|
|
import os
|
||
|
|
|
||
|
|
client = boto3.client('sqs', region_name=os.getenv('AWS_REGION'))
|
||
|
|
|
||
|
|
|
||
|
|
def _formatted_date_from_timestamp(timestamp):
|
||
|
|
return datetime.fromtimestamp(
|
||
|
|
int(timestamp)
|
||
|
|
).strftime('%Y-%m-%d %H:%M:%S')
|
||
|
|
|
||
|
|
|
||
|
|
def get_queues():
|
||
|
|
response = client.list_queues()
|
||
|
|
queues = response['QueueUrls']
|
||
|
|
return queues
|
||
|
|
|
||
|
|
|
||
|
|
def get_queue_attributes(queue_name):
|
||
|
|
response = client.get_queue_attributes(
|
||
|
|
QueueUrl=queue_name,
|
||
|
|
AttributeNames=[
|
||
|
|
'All'
|
||
|
|
]
|
||
|
|
)
|
||
|
|
queue_attributes = response['Attributes']
|
||
|
|
return queue_attributes
|
||
|
|
|
||
|
|
|
||
|
|
def delete_queue(queue_name):
|
||
|
|
response = client.delete_queue(
|
||
|
|
QueueUrl=queue_name
|
||
|
|
)
|
||
|
|
if response['ResponseMetadata']['HTTPStatusCode'] == 200:
|
||
|
|
print('Deleted queue successfully')
|
||
|
|
else:
|
||
|
|
print('Error occured when attempting to delete queue')
|
||
|
|
pprint(response)
|
||
|
|
return response
|
||
|
|
|
||
|
|
|
||
|
|
def output_to_csv(queue_attributes):
|
||
|
|
csv_name = 'queues.csv'
|
||
|
|
with open(csv_name, 'w') as csvfile:
|
||
|
|
fieldnames = [
|
||
|
|
'Queue Name',
|
||
|
|
'Number of Messages',
|
||
|
|
'Number of Messages Delayed',
|
||
|
|
'Number of Messages Not Visible',
|
||
|
|
'Created'
|
||
|
|
]
|
||
|
|
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
|
||
|
|
writer.writeheader()
|
||
|
|
for queue_attr in queue_attributes:
|
||
|
|
queue_url = client.get_queue_url(
|
||
|
|
QueueName=queue_attr['QueueArn']
|
||
|
|
)['QueueUrl']
|
||
|
|
writer.writerow({
|
||
|
|
'Queue Name': queue_attr['QueueArn'],
|
||
|
|
'Queue URL': queue_url,
|
||
|
|
'Number of Messages': queue_attr['ApproximateNumberOfMessages'],
|
||
|
|
'Number of Messages Delayed': queue_attr['ApproximateNumberOfMessagesDelayed'],
|
||
|
|
'Number of Messages Not Visible': queue_attr['ApproximateNumberOfMessagesNotVisible'],
|
||
|
|
'Created': _formatted_date_from_timestamp(queue_attr['CreatedTimestamp'])
|
||
|
|
})
|
||
|
|
return csv_name
|
||
|
|
|
||
|
|
|
||
|
|
def read_from_csv(csv_name):
|
||
|
|
queue_urls = []
|
||
|
|
with open(csv_name, 'r') as csvfile:
|
||
|
|
next(csvfile)
|
||
|
|
rows = csv.reader(csvfile, delimiter=',')
|
||
|
|
for row in rows:
|
||
|
|
queue_urls.append(row[1])
|
||
|
|
return queue_urls
|
||
|
|
|
||
|
|
|
||
|
|
queues = get_queues()
|
||
|
|
for queue in queues:
|
||
|
|
delete_queue(queue)
|