Yuvipanda has submitted this change and it was merged.
Change subject: Add support for registering for GitHub rsubscriptions too
......................................................................
Add support for registering for GitHub rsubscriptions too
Also refactor things into a class to avoid shitty code.
Change-Id: Ie86d5852e0e983c0223966cf73a5236651717107
---
M src/registrar.py
1 file changed, 33 insertions(+), 20 deletions(-)
Approvals:
Yuvipanda: Verified; Looks good to me, approved
diff --git a/src/registrar.py b/src/registrar.py
index 1285ae3..20916f7 100644
--- a/src/registrar.py
+++ b/src/registrar.py
@@ -19,8 +19,12 @@
REDIS_DB = config['redis']['db']
REDIS_HOST = config['redis']['host']
-PREFIX = config['stream_receiver']['redis_prefix']
-CLIENTS_KEY = config['stream_receiver']['clients_key']
+
+SERVICES = {
+ 'gerrit': config['stream_receiver'],
+ 'github': config['github_receiver']
+}
+
MYSQL_DB = config['mysql']['db']
MYSQL_HOST = config['mysql']['host']
@@ -34,21 +38,26 @@
db = storage.DB(MYSQL_HOST, MYSQL_DB)
logging.info('MySql connection to %s suceceded', MYSQL_HOST)
-def make_key(*key_parts):
- return PREFIX + "_" + '.'.join(key_parts)
+class Service(object):
+ def __init__(self, service_name):
+ self.service = SERVICES[service_name]
-def add_subscription(msg):
- # Save these explicitly, to avoid them from getting lost
- key = generate_random_string(32)
- red.pipeline().sadd(make_key(CLIENTS_KEY), key).save().execute()
- db.insert(key, msg['service'], msg['description'], msg['createdby'])
- logging.info('Added key %s' % key)
- return "Created key: %s and started subscription" % key
+ def _make_key(self, *key_parts):
+ return self.service['redis_prefix'] + "_" + '.'.join(key_parts)
-def delete_subscription(msg):
- red.pipeline().delete(msg['key']).srem(make_key(CLIENTS_KEY),
msg['key']).save().execute()
- logging.info('Removed key %s' % msg['key'])
- return "Removed key"
+ def add_subscription(self, msg):
+ key = generate_random_string(32)
+ clients_key = self._make_key(self.service['clients_key'])
+ red.pipeline().sadd(clients_key, key).save().execute()
+ db.insert(key, msg['service'], msg['description'], msg['createdby'])
+ logging.info('Added key %s' % key)
+ return "Created key: %s and started subscription" % key
+
+ def delete_subscription(msg):
+ clients_key = self._make_key(self.service['clients_key'])
+ red.pipeline().delete(msg['key']).srem(clients_key,
msg['key']).save().execute()
+ logging.info('Removed key %s' % msg['key'])
+ return "Removed key"
# Assumes that files created will, by default, not be writable by others
# Good enough security, eh?
@@ -85,12 +94,16 @@
except ValueError:
logging.exception("Invalid JSON!")
continue
- if msg['action'] == 'add':
- ret = add_subscription(msg)
- elif msg['action'] == 'delete':
- ret = delete_subscription(msg)
+ if 'service' in msg and msg['service'] in ('github', 'gerrit'):
+ service = Service(msg['service'])
+ if msg['action'] == 'add':
+ ret = service.add_subscription(msg)
+ elif msg['action'] == 'delete':
+ ret = service.delete_subscription(msg)
+ else:
+ ret = "Unrecognized action: %s" % msg['service']
else:
- ret = "Unrecognized action: %s " % msg.action
+ ret = "Unrecognized service: %s" % msg['service']
socket.send(ret)
except:
# Log exceptions, and make sure we cleanup the addressfile
--
To view, visit https://gerrit.wikimedia.org/r/77559
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ie86d5852e0e983c0223966cf73a5236651717107
Gerrit-PatchSet: 2
Gerrit-Project: labs/tools/gerrit-to-redis
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <[email protected]>
Gerrit-Reviewer: Yuvipanda <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits