Last active
June 19, 2018 01:50
-
-
Save garystafford/8fa0439331d5f6dfbfe73e9b46152413 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# Delete (3) MongoDB databases, (3) Kafka topics, | |
# create sample data by hitting Zuul API Gateway endpoints, | |
# and return MongoDB documents as verification. | |
# usage: python3 ./refresh.py | |
from pprint import pprint | |
from pymongo import MongoClient | |
import requests | |
import time | |
client = MongoClient('mongodb://localhost:27017/') | |
def main(): | |
delete_databases() | |
delete_topics() | |
create_sample_data() | |
get_mongo_doc('accounts', 'customer.accounts') | |
get_mongo_doc('orders', 'customer.orders') | |
get_mongo_doc('fulfillment', 'fulfillment.requests') | |
def delete_databases(): | |
dbs = ['accounts', 'orders', 'fulfillment'] | |
for db in dbs: | |
client.drop_database(db) | |
print('MongoDB dropped: ' + db) | |
dbs = client.database_names() | |
print('Reamining databases:') | |
print(dbs) | |
print('\n') | |
def delete_topics(): | |
# call Kafka Manager API | |
topics = ['accounts.customer.change', | |
'orders.order.fulfill', | |
'fulfillment.order.change'] | |
for topic in topics: | |
kafka_manager_url = 'http://localhost:9000/clusters/dev/topics/delete?t=' + topic | |
r = requests.post(kafka_manager_url, data={'topic': topic}) | |
time.sleep(3) | |
print('Kafka topic deleted: ' + topic) | |
print('\n') | |
def create_sample_data(): | |
sample_urls = [ | |
'http://localhost:8080/accounts/customers/sample', | |
'http://localhost:8080/orders/customers/sample/orders', | |
'http://localhost:8080/orders/customers/sample/fulfill', | |
'http://localhost:8080/fulfillment/fulfillments/sample/process', | |
'http://localhost:8080/fulfillment/fulfillments/sample/ship', | |
'http://localhost:8080/fulfillment/fulfillments/sample/in-transit', | |
'http://localhost:8080/fulfillment/fulfillments/sample/receive'] | |
for sample_url in sample_urls: | |
r = requests.get(sample_url) | |
print(r.text) | |
time.sleep(5) | |
print('\n') | |
def get_mongo_doc(db_name, collection_name): | |
db = client[db_name] | |
collection = db[collection_name] | |
pprint(collection.find_one()) | |
print('\n') | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment