)]}'
{"akanda/rug/common/hash_ring.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"04d6f84868aaf19651b0aab9adfcc06a0f8b1a97","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        # Gather the (possibly colliding) resulting hashes into a bisectable"},{"line_number":107,"context_line":"        # list."},{"line_number":108,"context_line":"        self._partitions \u003d sorted(self._host_hashes.keys())"},{"line_number":109,"context_line":"        total \u003d 0"},{"line_number":110,"context_line":"        for s, h in self._host_hashes.items():"},{"line_number":111,"context_line":"            if h \u003d\u003d \u0027trusty\u0027:"},{"line_number":112,"context_line":"                total +\u003d 1"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_99c9535d","line":109,"updated":"2015-08-14 19:23:22.000000000","message":"Everything after this seems like dead code.","commit_id":"12a761a1fe57a2683a7cf42c4c5b471f3b0b22bc"},{"author":{"_account_id":6287,"name":"David Lenwell","email":"dlenwell@gmail.com","username":"dlenwell"},"change_message_id":"32a7c1b2c04ee950475ebcb47c082269a6e2cc1a","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        # TODO(adam_g): Extend to support drivers once they are introduced, for"},{"line_number":199,"context_line":"        # now only deal with routers."},{"line_number":200,"context_line":"        d2c \u003d {"},{"line_number":201,"context_line":"            \u0027router\u0027: self._hosts"},{"line_number":202,"context_line":"        }"},{"line_number":203,"context_line":"        for driver_name, hosts in d2c.items():"},{"line_number":204,"context_line":"            rings[driver_name] \u003d HashRing(hosts)"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a2fa921_2f7ff2e0","line":201,"updated":"2015-10-09 20:20:50.000000000","message":"So we\u0027re stacking this change on top of the driver change but not supporting other drivers?","commit_id":"89e6640a33d64a856c499d3b3f9ac92b169c2f9a"}],"akanda/rug/coordination.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"04d6f84868aaf19651b0aab9adfcc06a0f8b1a97","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import signal"},{"line_number":19,"context_line":"import time"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from akanda.rug import event as ak_event"},{"line_number":22,"context_line":"from akanda.rug.common.i18n import _, _LI"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_d96b5bf0","line":21,"updated":"2015-08-14 19:23:22.000000000","message":"Aren\u0027t the imports in the wrong order here?\n\noslo\ntooz\n\n\nakanda","commit_id":"12a761a1fe57a2683a7cf42c4c5b471f3b0b22bc"},{"author":{"_account_id":6287,"name":"David Lenwell","email":"dlenwell@gmail.com","username":"dlenwell"},"change_message_id":"32a7c1b2c04ee950475ebcb47c082269a6e2cc1a","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        signal.signal(signal.SIGTERM, self.stop)"},{"line_number":68,"context_line":"        self.start()"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def start(self):"},{"line_number":71,"context_line":"        LOG.info("},{"line_number":72,"context_line":"            \u0027Starting RUG coordinator process for host %s on %s\u0027 %"},{"line_number":73,"context_line":"            (self.host, self.url))"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a2fa921_0fca361b","line":70,"updated":"2015-10-09 20:20:50.000000000","message":"this class needs more doc strings.","commit_id":"89e6640a33d64a856c499d3b3f9ac92b169c2f9a"}],"akanda/rug/populate.py":[{"author":{"_account_id":6287,"name":"David Lenwell","email":"dlenwell@gmail.com","username":"dlenwell"},"change_message_id":"32a7c1b2c04ee950475ebcb47c082269a6e2cc1a","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def repopulate():"},{"line_number":32,"context_line":"    resources \u003d []"},{"line_number":33,"context_line":"    for driver in drivers.enabled_drivers():"},{"line_number":34,"context_line":"        resources +\u003d driver.pre_populate_hook()"},{"line_number":35,"context_line":"    return resources"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a2fa921_6ff64a5e","line":32,"updated":"2015-10-09 20:20:50.000000000","message":"This could use a doc string explaining what its for..","commit_id":"89e6640a33d64a856c499d3b3f9ac92b169c2f9a"}],"akanda/rug/worker.py":[{"author":{"_account_id":8005,"name":"Ryan Petrello","email":"ryan@ryanpetrello.com","username":"ryanpetrello"},"change_message_id":"d930d271094be32ff6b1ddaa07b8e30267ddcdaa","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        tenant_id \u003d message.tenant_id"},{"line_number":243,"context_line":"        target_hosts \u003d self.hash_ring_mgr.ring.get_hosts(tenant_id)"},{"line_number":244,"context_line":"        if (CONF.coordination.host_id in target_hosts or"},{"line_number":245,"context_line":"            tenant_id in commands.WILDCARDS):"},{"line_number":246,"context_line":"            return True"},{"line_number":247,"context_line":"        return False"},{"line_number":248,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_d9fa3775","line":245,"updated":"2015-07-01 11:57:48.000000000","message":"So this wildcards thing seems tricky - won\u0027t this mean every rug handles the event for every router?","commit_id":"d771897657254729a6d8b77ce5949643cc014d3e"},{"author":{"_account_id":1420,"name":"Adam Gandelman","email":"adamg@ubuntu.com","username":"gandelman-a"},"change_message_id":"4c850270a8db7aa45b1024079659738a27a65066","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        tenant_id \u003d message.tenant_id"},{"line_number":243,"context_line":"        target_hosts \u003d self.hash_ring_mgr.ring.get_hosts(tenant_id)"},{"line_number":244,"context_line":"        if (CONF.coordination.host_id in target_hosts or"},{"line_number":245,"context_line":"            tenant_id in commands.WILDCARDS):"},{"line_number":246,"context_line":"            return True"},{"line_number":247,"context_line":"        return False"},{"line_number":248,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_dd19aad8","line":245,"in_reply_to":"ba3cc151_62a31d9e","updated":"2015-07-01 19:11:51.000000000","message":"TIL https://github.com/openstack/oslo.cache","commit_id":"d771897657254729a6d8b77ce5949643cc014d3e"},{"author":{"_account_id":1420,"name":"Adam Gandelman","email":"adamg@ubuntu.com","username":"gandelman-a"},"change_message_id":"62ba28f8342dc01cc0fdc5425a83fbff63963b64","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        tenant_id \u003d message.tenant_id"},{"line_number":243,"context_line":"        target_hosts \u003d self.hash_ring_mgr.ring.get_hosts(tenant_id)"},{"line_number":244,"context_line":"        if (CONF.coordination.host_id in target_hosts or"},{"line_number":245,"context_line":"            tenant_id in commands.WILDCARDS):"},{"line_number":246,"context_line":"            return True"},{"line_number":247,"context_line":"        return False"},{"line_number":248,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_62a31d9e","line":245,"in_reply_to":"ba3cc151_d9fa3775","updated":"2015-07-01 18:48:26.000000000","message":"ugh, ya... so there are a couple things:\n\nwe need a way to actually get the router_id here and hash on that instead of tenant.  Currently, if an event has no associated router id, we do a neutron call to resolve it (in tenant.py) and it gets cached on its state machine object.  We could move that here, but we\u0027d lose the ability to cache it and we\u0027d be doing a neutron lookup everytime theres a router-less event.  An alternative would be to lean on memcache or something instead?  \n\nIf we had the router_id here, then RUGs could correclty drop WILDCARD commands it doesn\u0027t care about here.  The only commands that have WILDCARD router_ids (AFAICS) are POLL, which should be processed by all the RUGs. \n\nThis points to another issue though around debug mode, which I\u0027ve filed a bug about @ https://bugs.launchpad.net/akanda/+bug/1470619","commit_id":"d771897657254729a6d8b77ce5949643cc014d3e"}]}
