)]}'
{"doc/source/dev/architecture.rst":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"233beee910e22271fb556f048704cf0ce749c68e","unresolved":false,"context_lines":[{"line_number":122,"context_line":".. _Conductor service: ../api/ironic.conductor.manager.html"},{"line_number":123,"context_line":".. _DB API: ../api/ironic.db.api.html"},{"line_number":124,"context_line":".. _diskimage-builder: http://docs.openstack.org/developer/diskimage-builder/"},{"line_number":125,"context_line":"TODO(jroll) replace this link with a link to tooz docs, once it\u0027s released"},{"line_number":126,"context_line":".. _consistent hashing algorithm: ../api/ironic.common.hash_ring.html"},{"line_number":127,"context_line":".. _periodic: http://docs.openstack.org/developer/futurist/api.html#futurist.periodics.periodic"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a77a97e_5bf07091","line":125,"updated":"2016-11-17 19:41:23.000000000","message":"Does this mean that we\u0027re going to hold off on landing this until there is doc?","commit_id":"a8879b20d901d6b464ef350569f667832495e2ca"}],"ironic/common/hash_ring.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"d98c2423683b40aff99bf982774c66e882f99e56","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        d2c \u003d self.dbapi.get_active_driver_dict()"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        for driver_name, hosts in d2c.items():"},{"line_number":58,"context_line":"            rings[driver_name] \u003d HashRing("},{"line_number":59,"context_line":"                hosts, partitions\u003d2**CONF.hash_partition_exponent)"},{"line_number":60,"context_line":"        return rings"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_50f858c3","line":58,"updated":"2016-11-17 15:30:25.000000000","message":"I think the capitalization is off on this? You\u0027re importing \"hashring\" but using HashRing","commit_id":"0aa44aed80669aa2f35a8279ceb7e25eee777940"}],"ironic/conductor/base_manager.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a89cf832995b3656210c4e01e69a6867e9fb59d9","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            return False"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        return self.host in ring.get_nodes("},{"line_number":306,"context_line":"            node_uuid.encode(\u0027utf-8\u0027),"},{"line_number":307,"context_line":"            replicas\u003dCONF.hash_distribution_replicas)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def _fail_if_in_state(self, context, filters, provision_state,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_6dc65c9b","line":306,"updated":"2017-01-17 18:01:09.000000000","message":"nit: we don\u0027t really need utf8 for UUIDs","commit_id":"d957b1bac1942363f9a964c15bc52f40b32e5528"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"03fff8835b642adfb8b778ed2624bca6e5c8fb61","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            return False"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        return self.host in ring.get_nodes("},{"line_number":306,"context_line":"            node_uuid.encode(\u0027utf-8\u0027),"},{"line_number":307,"context_line":"            replicas\u003dCONF.hash_distribution_replicas)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def _fail_if_in_state(self, context, filters, provision_state,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_4f43296c","line":306,"in_reply_to":"7a3c09a3_6dc65c9b","updated":"2017-01-18 12:45:02.000000000","message":"Unfortunately, we do, see tests on the last patchset: http://logs.openstack.org/28/399028/6/check/gate-ironic-python35-db/6d23899/console.html.gz#_2017-01-13_19_07_52_606403","commit_id":"d957b1bac1942363f9a964c15bc52f40b32e5528"}],"ironic/conductor/manager.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e5a78cabace1a8058bf8124fc8c65099e1f875b6","unresolved":false,"context_lines":[{"line_number":34,"context_line":"node; these locks are represented by the"},{"line_number":35,"context_line":":py:class:`ironic.conductor.task_manager.TaskManager` class."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"TODO(jroll) does this work or do I need to link to external docs?"},{"line_number":38,"context_line":"A :py:class:`tooz.hashring.HashRing` is used to distribute nodes"},{"line_number":39,"context_line":"across the set of active conductors which support each node\u0027s driver."},{"line_number":40,"context_line":"Rebalancing this ring can trigger various actions by each conductor, such as"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_08f17895","line":37,"updated":"2017-01-16 23:07:26.000000000","message":"doesn\u0027t work. Just shows the class, no link to documentation about it.\n\nhttp://docs-draft.openstack.org/28/399028/7/check/gate-ironic-docs-ubuntu-xenial/8ebf94a//doc/build/html/api/ironic.conductor.manager.html#module-ironic.conductor.manager","commit_id":"d957b1bac1942363f9a964c15bc52f40b32e5528"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a89cf832995b3656210c4e01e69a6867e9fb59d9","unresolved":false,"context_lines":[{"line_number":34,"context_line":"node; these locks are represented by the"},{"line_number":35,"context_line":":py:class:`ironic.conductor.task_manager.TaskManager` class."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"TODO(jroll) does this work or do I need to link to external docs?"},{"line_number":38,"context_line":"A :py:class:`tooz.hashring.HashRing` is used to distribute nodes"},{"line_number":39,"context_line":"across the set of active conductors which support each node\u0027s driver."},{"line_number":40,"context_line":"Rebalancing this ring can trigger various actions by each conductor, such as"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_0dd7984b","line":37,"updated":"2017-01-17 18:01:09.000000000","message":"let\u0027s use the external link, it\u0027s also more convenient to people reading the code via their IDE","commit_id":"d957b1bac1942363f9a964c15bc52f40b32e5528"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"03fff8835b642adfb8b778ed2624bca6e5c8fb61","unresolved":false,"context_lines":[{"line_number":34,"context_line":"node; these locks are represented by the"},{"line_number":35,"context_line":":py:class:`ironic.conductor.task_manager.TaskManager` class."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"TODO(jroll) does this work or do I need to link to external docs?"},{"line_number":38,"context_line":"A :py:class:`tooz.hashring.HashRing` is used to distribute nodes"},{"line_number":39,"context_line":"across the set of active conductors which support each node\u0027s driver."},{"line_number":40,"context_line":"Rebalancing this ring can trigger various actions by each conductor, such as"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_6f46257c","line":37,"in_reply_to":"7a3c09a3_0dd7984b","updated":"2017-01-18 12:45:02.000000000","message":"Turns out there\u0027s no python API docs for this class, so I\u0027ll link to the code for now.","commit_id":"d957b1bac1942363f9a964c15bc52f40b32e5528"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"b06b25f61d766dfaad4b064af5181002bcac0019","unresolved":false,"context_lines":[{"line_number":35,"context_line":":py:class:`ironic.conductor.task_manager.TaskManager` class."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"A `tooz.hashring.HashRing"},{"line_number":38,"context_line":"\u003chttps://git.openstack.org/cgit/openstack/tooz/tree/tooz/hashring.py\u003e`_"},{"line_number":39,"context_line":"is used to distribute nodes across the set of active conductors which support"},{"line_number":40,"context_line":"each node\u0027s driver.  Rebalancing this ring can trigger various actions by each"},{"line_number":41,"context_line":"conductor, such as building or tearing down the TFTP environment for a node,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a3c09a3_3cd1af23","line":38,"updated":"2017-01-18 15:52:48.000000000","message":"There is also this \u0027tutorial\u0027, but I\u0027m fine with the link to the code.\n\nhttp://docs.openstack.org/developer/tooz/tutorial/hashring.html","commit_id":"95f16527e6935238a61f5737312b2eb3aa55b053"}],"ironic/conductor/rpcapi.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a89cf832995b3656210c4e01e69a6867e9fb59d9","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        try:"},{"line_number":121,"context_line":"            ring \u003d self.ring_manager[node.driver]"},{"line_number":122,"context_line":"            dest \u003d ring.get_nodes(node.uuid.encode(\u0027utf-8\u0027))"},{"line_number":123,"context_line":"            return self.topic + \".\" + dest.pop()"},{"line_number":124,"context_line":"        except exception.DriverNotFound:"},{"line_number":125,"context_line":"            reason \u003d (_(\u0027No conductor service registered which supports \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_2dc8d4a7","line":122,"updated":"2017-01-17 18:01:09.000000000","message":"nit: we don\u0027t really need utf-8 for UUIDs","commit_id":"d957b1bac1942363f9a964c15bc52f40b32e5528"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"03fff8835b642adfb8b778ed2624bca6e5c8fb61","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        try:"},{"line_number":121,"context_line":"            ring \u003d self.ring_manager[node.driver]"},{"line_number":122,"context_line":"            dest \u003d ring.get_nodes(node.uuid.encode(\u0027utf-8\u0027))"},{"line_number":123,"context_line":"            return self.topic + \".\" + dest.pop()"},{"line_number":124,"context_line":"        except exception.DriverNotFound:"},{"line_number":125,"context_line":"            reason \u003d (_(\u0027No conductor service registered which supports \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_21a43106","line":122,"in_reply_to":"7a3c09a3_2dc8d4a7","updated":"2017-01-18 12:45:02.000000000","message":"Ditto as before","commit_id":"d957b1bac1942363f9a964c15bc52f40b32e5528"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a89cf832995b3656210c4e01e69a6867e9fb59d9","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        try:"},{"line_number":121,"context_line":"            ring \u003d self.ring_manager[node.driver]"},{"line_number":122,"context_line":"            dest \u003d ring.get_nodes(node.uuid.encode(\u0027utf-8\u0027))"},{"line_number":123,"context_line":"            return self.topic + \".\" + dest.pop()"},{"line_number":124,"context_line":"        except exception.DriverNotFound:"},{"line_number":125,"context_line":"            reason \u003d (_(\u0027No conductor service registered which supports \u0027"},{"line_number":126,"context_line":"                        \u0027driver %s.\u0027) % node.driver)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_4dcd20b6","line":123,"updated":"2017-01-17 18:01:09.000000000","message":"nit (quite unrelated): I\u0027d prefer us using string formatting here","commit_id":"d957b1bac1942363f9a964c15bc52f40b32e5528"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"03fff8835b642adfb8b778ed2624bca6e5c8fb61","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        try:"},{"line_number":121,"context_line":"            ring \u003d self.ring_manager[node.driver]"},{"line_number":122,"context_line":"            dest \u003d ring.get_nodes(node.uuid.encode(\u0027utf-8\u0027))"},{"line_number":123,"context_line":"            return self.topic + \".\" + dest.pop()"},{"line_number":124,"context_line":"        except exception.DriverNotFound:"},{"line_number":125,"context_line":"            reason \u003d (_(\u0027No conductor service registered which supports \u0027"},{"line_number":126,"context_line":"                        \u0027driver %s.\u0027) % node.driver)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_217b517c","line":123,"in_reply_to":"7a3c09a3_4dcd20b6","updated":"2017-01-18 12:45:02.000000000","message":"Yeah, I can update since I\u0027m in here.","commit_id":"d957b1bac1942363f9a964c15bc52f40b32e5528"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"23e0bfca5c12b64a4812dc200666a7a0431e79b1","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        try:"},{"line_number":121,"context_line":"            ring \u003d self.ring_manager[node.driver]"},{"line_number":122,"context_line":"            dest \u003d ring.get_nodes(node.uuid.encode(\u0027utf-8\u0027),"},{"line_number":123,"context_line":"                                  replicas\u003dCONF.hash_distribution_replicas)"},{"line_number":124,"context_line":"            return \u0027%s.%s\u0027 % (self.topic, dest.pop())"},{"line_number":125,"context_line":"        except exception.DriverNotFound:"},{"line_number":126,"context_line":"            reason \u003d (_(\u0027No conductor service registered which supports \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a3c09a3_823dbcbd","line":123,"updated":"2017-01-18 23:06:43.000000000","message":"pep8 fails cuz \u0027 ./ironic/conductor/rpcapi.py:123:44: F821 undefined name \u0027CONF\u0027 :-(","commit_id":"95f16527e6935238a61f5737312b2eb3aa55b053"}],"releasenotes/notes/add-tooz-dep-85c56c74733a222d.yaml":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d57c5d5134ed46a20010f37753e5c49542053998","unresolved":false,"context_lines":[{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a new dependency on the"},{"line_number":5,"context_line":"    `tooz library \u003chttps://pypi.python.org/pypi/tooz\u003e`_."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7a3c09a3_6bc7f295","line":5,"updated":"2017-01-18 14:22:35.000000000","message":"nit: I wouldn\u0027t mind seeing why in the release note.","commit_id":"2bda0ea1fd7442b74095ce341f6567205e90b32f"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"b06b25f61d766dfaad4b064af5181002bcac0019","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a new dependency on the"},{"line_number":5,"context_line":"    `tooz library \u003chttps://pypi.python.org/pypi/tooz\u003e`_, as the consistent"},{"line_number":6,"context_line":"    hash ring code was moved out of ironic and into tooz."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"7a3c09a3_5ccf5b55","line":4,"updated":"2017-01-18 15:52:48.000000000","message":"We haven\u0027t been adding reno\u0027s for new dependencies. Should we be doing that going forward?","commit_id":"95f16527e6935238a61f5737312b2eb3aa55b053"}],"requirements.txt":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a89cf832995b3656210c4e01e69a6867e9fb59d9","unresolved":false,"context_lines":[{"line_number":41,"context_line":"jsonschema!\u003d2.5.0,\u003c3.0.0,\u003e\u003d2.0.0 # MIT"},{"line_number":42,"context_line":"psutil\u003c2.0.0,\u003e\u003d1.1.1 # BSD"},{"line_number":43,"context_line":"futurist!\u003d0.15.0,\u003e\u003d0.11.0 # Apache-2.0"},{"line_number":44,"context_line":"tooz\u003e\u003d1.47.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":7,"id":"7a3c09a3_edd16c58","line":44,"updated":"2017-01-17 18:01:09.000000000","message":"I wonder if a new requirements justifies a release note..","commit_id":"d957b1bac1942363f9a964c15bc52f40b32e5528"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"03fff8835b642adfb8b778ed2624bca6e5c8fb61","unresolved":false,"context_lines":[{"line_number":41,"context_line":"jsonschema!\u003d2.5.0,\u003c3.0.0,\u003e\u003d2.0.0 # MIT"},{"line_number":42,"context_line":"psutil\u003c2.0.0,\u003e\u003d1.1.1 # BSD"},{"line_number":43,"context_line":"futurist!\u003d0.15.0,\u003e\u003d0.11.0 # Apache-2.0"},{"line_number":44,"context_line":"tooz\u003e\u003d1.47.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":7,"id":"7a3c09a3_a16bc183","line":44,"in_reply_to":"7a3c09a3_edd16c58","updated":"2017-01-18 12:45:02.000000000","message":"I don\u0027t think so, but can add if you like.","commit_id":"d957b1bac1942363f9a964c15bc52f40b32e5528"}]}
