)]}'
{"etc/octavia.conf":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecec0060d4fcc7aa4cca3408049c944620762d8c","unresolved":false,"context_lines":[{"line_number":6,"context_line":"# bind_host \u003d 0.0.0.0"},{"line_number":7,"context_line":"# bind_port \u003d 9191"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"# nova_region_name \u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"[database]"},{"line_number":12,"context_line":"# This line MUST be changed to actually run the plugin."}],"source_content_type":"text/plain","patch_set":8,"id":"ba7be1f8_7fddfe41","line":9,"updated":"2015-03-02 16:46:05.000000000","message":"redundant with amp region name?","commit_id":"63fc6d15c5d82f9bf32f4edba71d31fb931d1024"}],"octavia/common/config.py":[{"author":{"_account_id":10750,"name":"Jorge Miramontes","email":"jorge.miramontes@rackspace.com","username":"jorgem"},"change_message_id":"6d53e4869c59399a955b435624ada5be1fba5170","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    cfg.StrOpt(\u0027lb_network_name\u0027, help\u003d_(\u0027Name of amphora internal network\u0027)),"},{"line_number":87,"context_line":"]"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"controller_worker \u003d ["},{"line_number":90,"context_line":"    cfg.StrOpt(\u0027amp_flavor_id\u0027,"},{"line_number":91,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":92,"context_line":"               help\u003d_(\u0027Nova instance flavor id for the Amphora\u0027)),"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_ec37314b","line":89,"updated":"2015-02-11 20:02:05.000000000","message":"this should be suffixed with _opts as it breaks the changes below","commit_id":"40451cc9762ccfbb682186d825dfb2348b9d93f1"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"01f59d433be00f2830d4f85b411b80e52b56a10b","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    cfg.StrOpt(\u0027lb_network_name\u0027, help\u003d_(\u0027Name of amphora internal network\u0027)),"},{"line_number":87,"context_line":"]"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"controller_worker \u003d ["},{"line_number":90,"context_line":"    cfg.StrOpt(\u0027amp_flavor_id\u0027,"},{"line_number":91,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":92,"context_line":"               help\u003d_(\u0027Nova instance flavor id for the Amphora\u0027)),"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_9d31815c","line":89,"in_reply_to":"da86d52c_ec37314b","updated":"2015-02-11 21:18:12.000000000","message":"Yeah, I have already fixed that locally.  thanks!","commit_id":"40451cc9762ccfbb682186d825dfb2348b9d93f1"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"becdf2653ae95f4669db39e193b58562df5d712d","unresolved":false,"context_lines":[{"line_number":103,"context_line":"               help\u003d_(\u0027SSH key to load into the Amphora\u0027)),"},{"line_number":104,"context_line":"    cfg.ListOpt(\u0027amp_network_list\u0027,"},{"line_number":105,"context_line":"                default\u003d\u0027\u0027,"},{"line_number":106,"context_line":"                help\u003d_(\u0027List of networks to attach to the Amphora\u0027)),"},{"line_number":107,"context_line":"    cfg.ListOpt(\u0027amp_secgroup_list\u0027,"},{"line_number":108,"context_line":"                default\u003d\u0027\u0027,"},{"line_number":109,"context_line":"                help\u003d_(\u0027List of security groups to attach to the Amphora\u0027)),"}],"source_content_type":"text/x-python","patch_set":34,"id":"bab921fb_f7ae0c84","line":106,"updated":"2015-04-24 15:40:07.000000000","message":"This should really be just one network right now.  The reason is the Amphora data model only holds a single mgmt IP, we have no way to store multiple IPs yet and for the demo one network should be sufficient.  Initially, I was thinking many networks would be fine but after running through it, it would require a bit of extra work that we shouldn\u0027t have to worry about right now.\n\nAlso, to retrieve the IP from nova we have to get the amphora by its compute_id.  Nova client will return the amphora object with a dictionary of addresses as an attribute.  This dictionary is keyed off the network NAME not the network id, which is just dumb, but it is what we have to deal with.  That\u0027s why there\u0027s currently a networking group with lb_network_name.  I would prefer to store the ID though, and just get the name by that ID in code.","commit_id":"80b497e00a48ba6be27dbe61cf8a1bbf0db43fb7"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"57ce7a949cd6bdcef533f54cf15e573bdb4097d5","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    cfg.IntOpt(\u0027max_workers\u0027,"},{"line_number":126,"context_line":"               default\u003d5,"},{"line_number":127,"context_line":"               help\u003d_(\u0027The maximum number of workers\u0027))"},{"line_number":128,"context_line":"]"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"core_cli_opts \u003d []"}],"source_content_type":"text/x-python","patch_set":34,"id":"bab921fb_7c065187","line":128,"updated":"2015-04-27 05:43:51.000000000","message":"can these be imported by taskflow?","commit_id":"80b497e00a48ba6be27dbe61cf8a1bbf0db43fb7"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2eea3977324d3ab69bcb47c09d821a20daa7e746","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    cfg.IntOpt(\u0027max_workers\u0027,"},{"line_number":126,"context_line":"               default\u003d5,"},{"line_number":127,"context_line":"               help\u003d_(\u0027The maximum number of workers\u0027))"},{"line_number":128,"context_line":"]"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"core_cli_opts \u003d []"}],"source_content_type":"text/x-python","patch_set":34,"id":"7ad32947_f10b1f7c","line":128,"in_reply_to":"bab921fb_7c065187","updated":"2015-04-27 18:10:05.000000000","message":"I\u0027m not sure I follow this question.  These are used when we setup taskflow.","commit_id":"80b497e00a48ba6be27dbe61cf8a1bbf0db43fb7"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"c0f5eb135cad0ca8bdeb785b7bb80264f5876af6","unresolved":false,"context_lines":[{"line_number":103,"context_line":"               help\u003d_(\u0027SSH key to load into the Amphora\u0027)),"},{"line_number":104,"context_line":"    cfg.ListOpt(\u0027amp_network\u0027,"},{"line_number":105,"context_line":"                default\u003d\u0027\u0027,"},{"line_number":106,"context_line":"                help\u003d_(\u0027Network to attach to the Amphora\u0027)),"},{"line_number":107,"context_line":"    cfg.ListOpt(\u0027amp_secgroup_list\u0027,"},{"line_number":108,"context_line":"                default\u003d\u0027\u0027,"},{"line_number":109,"context_line":"                help\u003d_(\u0027List of security groups to attach to the Amphora\u0027)),"}],"source_content_type":"text/x-python","patch_set":36,"id":"5ad0253b_1dd8e552","line":106,"updated":"2015-04-29 02:10:52.000000000","message":"Are we keeping this as a list? If not this should be a StrOpt.","commit_id":"1d3bf849205c936f9c65fbdafd51334c4e991306"}],"octavia/common/constants.py":[{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"bb919f7a6a5e16ea5b72e95b00e4f9c20681bcc4","unresolved":false,"context_lines":[{"line_number":45,"context_line":"# TODO(johnsom) This doesn\u0027t exist"},{"line_number":46,"context_line":"AMPHORA_UP \u003d \u0027UP\u0027"},{"line_number":47,"context_line":"# Amphora unhealthy with listener(s) deployed"},{"line_number":48,"context_line":"# TODO(johnsom) This doesn\u0027t exist"},{"line_number":49,"context_line":"AMPHORA_DOWN \u003d \u0027DOWN\u0027"},{"line_number":50,"context_line":"# Amphora is being built"},{"line_number":51,"context_line":"AMPHORA_BOOTING \u003d \u0027BOOTING\u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_d79bdb16","line":48,"updated":"2015-04-09 23:27:10.000000000","message":"Do you mean this as \"remove me, I don\u0027t need to be here\" or \"I have yet to implement this status\"?","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":94,"context_line":"CREATE_POOL_FLOW \u003d \u0027octavia-create-pool-flow\u0027"},{"line_number":95,"context_line":"DELETE_AMPHORA_FLOW \u003d \u0027octavia-delete-amphora-flow\u0027"},{"line_number":96,"context_line":"DELETE_HEALTH_MONITOR_FLOW \u003d \u0027octavia-delete-health-monitor-flow\u0027"},{"line_number":97,"context_line":"DELETE_LISTENER_FLOW \u003d \u0027octavia-delete-listener_flow\u0027"},{"line_number":98,"context_line":"DELETE_LOADBALANCER_FLOW \u003d \u0027octavia-delete-loadbalancer-flow\u0027"},{"line_number":99,"context_line":"DELETE_MEMBER_FLOW \u003d \u0027octavia-delete-member-flow\u0027"},{"line_number":100,"context_line":"DELETE_POOL_FLOW \u003d \u0027octavia-delete-pool-flow\u0027"}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_e256ab05","line":97,"updated":"2015-04-27 21:10:35.000000000","message":"underscore here?","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":94,"context_line":"CREATE_POOL_FLOW \u003d \u0027octavia-create-pool-flow\u0027"},{"line_number":95,"context_line":"DELETE_AMPHORA_FLOW \u003d \u0027octavia-delete-amphora-flow\u0027"},{"line_number":96,"context_line":"DELETE_HEALTH_MONITOR_FLOW \u003d \u0027octavia-delete-health-monitor-flow\u0027"},{"line_number":97,"context_line":"DELETE_LISTENER_FLOW \u003d \u0027octavia-delete-listener_flow\u0027"},{"line_number":98,"context_line":"DELETE_LOADBALANCER_FLOW \u003d \u0027octavia-delete-loadbalancer-flow\u0027"},{"line_number":99,"context_line":"DELETE_MEMBER_FLOW \u003d \u0027octavia-delete-member-flow\u0027"},{"line_number":100,"context_line":"DELETE_POOL_FLOW \u003d \u0027octavia-delete-pool-flow\u0027"}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_f2e681e7","line":97,"in_reply_to":"7ad32947_e256ab05","updated":"2015-04-28 21:43:03.000000000","message":"Done","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/common/exceptions.py":[{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"66c10fc38fab6ef1e2335b6673fb74ca29567c91","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from octavia.i18n import _LE"},{"line_number":24,"context_line":"from octavia.i18n import _LI"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class OctaviaException(Exception):"},{"line_number":28,"context_line":"    \"\"\"Base Octavia Exception."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_40edc8b5","line":26,"updated":"2015-04-09 21:25:43.000000000","message":"Think this is more a general comment to be added in another review if considered, but the two added here could be updated. \n\nWhen testing in neutron-lbaas and running into errors I would hit errors that would provide useless information and no trace back because they were wrapped and hidden like they are here, except for a few. \n\nNow, if want to hide certain errors then i understand. Otherwise, I would really like to have trace backs, or, at least additional information included for these messages. \n\ni.e. (\u0027Unable to allocate an amphora due to: %(msg)s\u0027)\n\nallows for the needed additional information to pass through where a few of the others do not. For example the ComputeGetException could fail for many reasons, whether it be authentication or a sever error and only receiving a \u0027failed to delete instance\u0027 message is very unhelpful in those cases.\n\nI apologize if this is sorta unrelated and/or if im thinking about it wrong, i\u0027ve just been in a hard place dealing with issues like these and would like to handle it better if possible.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"bb919f7a6a5e16ea5b72e95b00e4f9c20681bcc4","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from octavia.i18n import _LE"},{"line_number":24,"context_line":"from octavia.i18n import _LI"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class OctaviaException(Exception):"},{"line_number":28,"context_line":"    \"\"\"Base Octavia Exception."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_37a8c71f","line":26,"in_reply_to":"9aa53dc9_40edc8b5","updated":"2015-04-09 23:27:10.000000000","message":"Would a \"catch and re-throw\" system be better you think?  In here I mean?","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"14d46a78a29a64c0e5acc91e7dfb19ec97c97588","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"class ComputeWaitTimeoutException(OctaviaException):"},{"line_number":154,"context_line":"    message \u003d _LI(\u0027Waiting for compute to go active timeout.\u0027)"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_5fbc8705","line":154,"range":{"start_line":154,"start_character":11,"end_line":154,"end_character":12},"updated":"2015-04-09 19:49:13.000000000","message":"Might make a little more sense as \"Timed out waiting for compute node to become active.\"","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"18c45d48b548365bf29d262fde6b17fc156ee5e3","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"class ComputeWaitTimeoutException(OctaviaException):"},{"line_number":154,"context_line":"    message \u003d _LI(\u0027Waiting for compute to go active timeout.\u0027)"}],"source_content_type":"text/x-python","patch_set":24,"id":"7aaa499b_5b067c21","line":154,"in_reply_to":"9aa53dc9_377fa7ac","updated":"2015-04-11 00:19:57.000000000","message":"Nope, again, this is purely for the workflow and will happen under \"normal\" conditions under taskflow, thus I chose informational","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a1d72350ee7303b7111ccc42c077295236615028","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"class ComputeWaitTimeoutException(OctaviaException):"},{"line_number":154,"context_line":"    message \u003d _LI(\u0027Waiting for compute to go active timeout.\u0027)"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_773c0fc8","line":154,"in_reply_to":"9aa53dc9_5fbc8705","updated":"2015-04-09 21:37:29.000000000","message":"This is an interesting one.  It is used to trigger a taskflow retry.  I intend to mask this out by overloading the taskflow logger eventually so that an operator will never see this.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"bb919f7a6a5e16ea5b72e95b00e4f9c20681bcc4","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"class ComputeWaitTimeoutException(OctaviaException):"},{"line_number":154,"context_line":"    message \u003d _LI(\u0027Waiting for compute to go active timeout.\u0027)"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_377fa7ac","line":154,"in_reply_to":"9aa53dc9_773c0fc8","updated":"2015-04-09 23:27:10.000000000","message":"This is an exception, so should probably be \"_LE\" regardless, right?","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"57ce7a949cd6bdcef533f54cf15e573bdb4097d5","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from webob import exc"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from octavia.i18n import _LE"},{"line_number":24,"context_line":"from octavia.i18n import _LI"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class OctaviaException(Exception):"}],"source_content_type":"text/x-python","patch_set":34,"id":"bab921fb_44a05d43","line":24,"updated":"2015-04-27 05:43:51.000000000","message":"this can just be combined into the one import line of _LE, _LI.  The one exception to the normal rule","commit_id":"80b497e00a48ba6be27dbe61cf8a1bbf0db43fb7"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2eea3977324d3ab69bcb47c09d821a20daa7e746","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from webob import exc"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from octavia.i18n import _LE"},{"line_number":24,"context_line":"from octavia.i18n import _LI"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class OctaviaException(Exception):"}],"source_content_type":"text/x-python","patch_set":34,"id":"7ad32947_f1343f4b","line":24,"in_reply_to":"bab921fb_44a05d43","updated":"2015-04-27 18:10:05.000000000","message":"Done","commit_id":"80b497e00a48ba6be27dbe61cf8a1bbf0db43fb7"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":161,"context_line":"# normal part of operation while waiting for nova to go active"},{"line_number":162,"context_line":"# on the instance"},{"line_number":163,"context_line":"class ComputeWaitTimeoutException(OctaviaException):"},{"line_number":164,"context_line":"    message \u003d _LI(\u0027Waiting for compute to go active timeout.\u0027)"}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_a2af93e2","line":164,"updated":"2015-04-27 21:10:35.000000000","message":"This message reads a little strangely.  Maybe reorganize the words like so:  \"Timeout waiting for active compute.\"","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":161,"context_line":"# normal part of operation while waiting for nova to go active"},{"line_number":162,"context_line":"# on the instance"},{"line_number":163,"context_line":"class ComputeWaitTimeoutException(OctaviaException):"},{"line_number":164,"context_line":"    message \u003d _LI(\u0027Waiting for compute to go active timeout.\u0027)"}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_527415fc","line":164,"in_reply_to":"7ad32947_a2af93e2","updated":"2015-04-28 21:43:03.000000000","message":"This exception should be hidden from view (eventually) as it will occur multiple times per Amphora boot in normal operation.  I wanted to word it in a way that indicated it is not a final timeout.","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/controller/worker/controller_worker.py":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecec0060d4fcc7aa4cca3408049c944620762d8c","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                                               log\u003dLOG):"},{"line_number":52,"context_line":"            create_amp_tf.run()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"#        return create_amp_tf.storage.fetch(\u0027amphora\u0027)"},{"line_number":55,"context_line":"        return create_amp_tf.storage.fetch_all()"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def delete_amphora(self, amphora_id):"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_9fb712f5","line":54,"updated":"2015-03-02 16:46:05.000000000","message":"comment neede?","commit_id":"63fc6d15c5d82f9bf32f4edba71d31fb931d1024"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"14d46a78a29a64c0e5acc91e7dfb19ec97c97588","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                                               log\u003dLOG):"},{"line_number":63,"context_line":"            create_amp_tf.run()"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        return create_amp_tf.storage.fetch_all()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def delete_amphora(self, amphora_id):"},{"line_number":68,"context_line":"        \"\"\"Deletes an existing Amphora."}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_df0c17ee","line":65,"updated":"2015-04-09 19:49:13.000000000","message":"Is it possible for this to return multiple results? Is there a fetch_one() like in SQLAlchemy? I am not familiar with taskflow yet.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"bb919f7a6a5e16ea5b72e95b00e4f9c20681bcc4","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                                               log\u003dLOG):"},{"line_number":63,"context_line":"            create_amp_tf.run()"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        return create_amp_tf.storage.fetch_all()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def delete_amphora(self, amphora_id):"},{"line_number":68,"context_line":"        \"\"\"Deletes an existing Amphora."}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_ea9cb6c1","line":65,"in_reply_to":"9aa53dc9_df0c17ee","updated":"2015-04-09 23:27:10.000000000","message":"Just looked it up, it has a \"fetch()\" method, which returns one result.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"14d46a78a29a64c0e5acc91e7dfb19ec97c97588","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                                               log\u003dLOG):"},{"line_number":80,"context_line":"            delete_amp_tf.run()"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"# TODO(johnsom) health_monitor_id here?"},{"line_number":83,"context_line":"    def create_health_monitor(self, health_monitor_id):"},{"line_number":84,"context_line":"        \"\"\"Creates a health monitor."},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_ffd91b58","line":82,"updated":"2015-04-09 19:49:13.000000000","message":"I would assume it wouldn\u0027t TAKE a health_monitor_id, but would return one? I assume that\u0027s what this TODO is for.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a1d72350ee7303b7111ccc42c077295236615028","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                                               log\u003dLOG):"},{"line_number":80,"context_line":"            delete_amp_tf.run()"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"# TODO(johnsom) health_monitor_id here?"},{"line_number":83,"context_line":"    def create_health_monitor(self, health_monitor_id):"},{"line_number":84,"context_line":"        \"\"\"Creates a health monitor."},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_b4b3b599","line":82,"in_reply_to":"9aa53dc9_ffd91b58","updated":"2015-04-09 21:37:29.000000000","message":"This is what I was clarifying at the weekly meeting.  This comes from jorge\u0027s consumer worker.  What I understand from yesterday is the DB will already have this created, this is the reference for me to take and make sure the necessary steps are executed (i.e. update the amphora)","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"66c10fc38fab6ef1e2335b6673fb74ca29567c91","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                                               log\u003dLOG):"},{"line_number":80,"context_line":"            delete_amp_tf.run()"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"# TODO(johnsom) health_monitor_id here?"},{"line_number":83,"context_line":"    def create_health_monitor(self, health_monitor_id):"},{"line_number":84,"context_line":"        \"\"\"Creates a health monitor."},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_201ac47d","line":82,"in_reply_to":"9aa53dc9_ffd91b58","updated":"2015-04-09 21:25:43.000000000","message":"You are using the HM ID to retrieve the required data from the database. Why would it not be here?","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"66c10fc38fab6ef1e2335b6673fb74ca29567c91","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        health_mon \u003d _health_mon_repo.get(db_apis.get_session(),"},{"line_number":90,"context_line":"                                          id\u003dhealth_monitor_id)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        # TODO(johnsom This can\u0027t be the right way to get the amp"},{"line_number":93,"context_line":"        listener \u003d _listener_repo.get(db_apis.get_session(),"},{"line_number":94,"context_line":"                                      default_pool_id\u003dhealth_mon."},{"line_number":95,"context_line":"                                      pool_id)"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_54c34989","line":92,"updated":"2015-04-09 21:25:43.000000000","message":"Agreed, there has to be a better way. Though, there may be no way around gathering that info with the provided info, but \u0027hiding\u0027 the ugliness of this in another call could make it better.\n\ni.e _listener_repo.get_amp(pool_id)","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"bb919f7a6a5e16ea5b72e95b00e4f9c20681bcc4","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                                      default_pool_id\u003dhealth_mon."},{"line_number":95,"context_line":"                                      pool_id)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        amp \u003d listener.load_balancer.amphorae"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        create_hm_tf \u003d self._taskflow_load(self._health_monitor_flows."},{"line_number":100,"context_line":"                                           get_create_health_monitor_flow(),"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_0ae23a2f","line":97,"updated":"2015-04-09 23:27:10.000000000","message":"You can replace the 2 lines above this with \"amps \u003d health_mon.pool.listener.load_balancer.amphorae\".  Will function the same, since you pulled the HM from the DB.  Routes from any given object in the tree can make it back up to an amphora in a similar pattern because of the backrefs we made in the DB.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"18c45d48b548365bf29d262fde6b17fc156ee5e3","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                                      default_pool_id\u003dhealth_mon."},{"line_number":95,"context_line":"                                      pool_id)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        amp \u003d listener.load_balancer.amphorae"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        create_hm_tf \u003d self._taskflow_load(self._health_monitor_flows."},{"line_number":100,"context_line":"                                           get_create_health_monitor_flow(),"}],"source_content_type":"text/x-python","patch_set":24,"id":"7aaa499b_7e37e6e3","line":97,"in_reply_to":"9aa53dc9_0ae23a2f","updated":"2015-04-11 00:19:57.000000000","message":"There is no link from pool to listener in the octavia/db/models.py as far as I can see.\nThis is what I was asking myself here, is there a missing link in the model?","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"14d46a78a29a64c0e5acc91e7dfb19ec97c97588","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                                               log\u003dLOG):"},{"line_number":129,"context_line":"            delete_hm_tf.run()"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def update_health_monitor(self, health_monitor_updates, health_monitor_id):"},{"line_number":132,"context_line":"        \"\"\"Updates a health monitor."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        :returns: None"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_3fec23f2","line":131,"updated":"2015-04-09 19:49:13.000000000","message":"I would assume IDs would always be the first argument, for consistency -- does that make sense or is there a reason it\u0027s this way?\n\nAlso, it doesn\u0027t look like the passed-in updates are even used? What is this doing?","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"66c10fc38fab6ef1e2335b6673fb74ca29567c91","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                                               log\u003dLOG):"},{"line_number":129,"context_line":"            delete_hm_tf.run()"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def update_health_monitor(self, health_monitor_updates, health_monitor_id):"},{"line_number":132,"context_line":"        \"\"\"Updates a health monitor."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        :returns: None"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_40a5c844","line":131,"in_reply_to":"9aa53dc9_3fec23f2","updated":"2015-04-09 21:25:43.000000000","message":"+1 on both counts","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a1d72350ee7303b7111ccc42c077295236615028","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                                               log\u003dLOG):"},{"line_number":129,"context_line":"            delete_hm_tf.run()"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def update_health_monitor(self, health_monitor_updates, health_monitor_id):"},{"line_number":132,"context_line":"        \"\"\"Updates a health monitor."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        :returns: None"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_74b2cd95","line":131,"in_reply_to":"9aa53dc9_3fec23f2","updated":"2015-04-09 21:37:29.000000000","message":"ID placement comes from the consumer worker and spec\n\nYou are correct, the update code is TODO and the clarity topic from the weekly meeting.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"18c45d48b548365bf29d262fde6b17fc156ee5e3","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                                               log\u003dLOG):"},{"line_number":129,"context_line":"            delete_hm_tf.run()"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def update_health_monitor(self, health_monitor_updates, health_monitor_id):"},{"line_number":132,"context_line":"        \"\"\"Updates a health monitor."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        :returns: None"}],"source_content_type":"text/x-python","patch_set":24,"id":"7aaa499b_1e0582c1","line":131,"in_reply_to":"9aa53dc9_6a7e661a","updated":"2015-04-11 00:19:57.000000000","message":"Interesting point.  What do others think?","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"bb919f7a6a5e16ea5b72e95b00e4f9c20681bcc4","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                                               log\u003dLOG):"},{"line_number":129,"context_line":"            delete_hm_tf.run()"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def update_health_monitor(self, health_monitor_updates, health_monitor_id):"},{"line_number":132,"context_line":"        \"\"\"Updates a health monitor."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        :returns: None"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_6a7e661a","line":131,"in_reply_to":"9aa53dc9_74b2cd95","updated":"2015-04-09 23:27:10.000000000","message":"Just a heads up, the unique identifier for \"health monitor\" is actually \"pool_id\", not sure if the idea is to keep it that specific.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"14d46a78a29a64c0e5acc91e7dfb19ec97c97588","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                                               log\u003dLOG):"},{"line_number":189,"context_line":"            delete_listener_tf.run()"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def update_listener(self, listener_updates, listener_id):"},{"line_number":192,"context_line":"        \"\"\"Updates a listener."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        :returns: None"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_df96573d","line":191,"updated":"2015-04-09 19:49:13.000000000","message":"Same as health-monitors above.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a1d72350ee7303b7111ccc42c077295236615028","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                                               log\u003dLOG):"},{"line_number":189,"context_line":"            delete_listener_tf.run()"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def update_listener(self, listener_updates, listener_id):"},{"line_number":192,"context_line":"        \"\"\"Updates a listener."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        :returns: None"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_14a5c145","line":191,"in_reply_to":"9aa53dc9_df96573d","updated":"2015-04-09 21:37:29.000000000","message":"Yep","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"14d46a78a29a64c0e5acc91e7dfb19ec97c97588","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                                               log\u003dLOG):"},{"line_number":233,"context_line":"            amp \u003d None"},{"line_number":234,"context_line":"            try:"},{"line_number":235,"context_line":"                create_lb_tf.run()"},{"line_number":236,"context_line":"                amp \u003d create_lb_tf.storage.fetch(\u0027amphora\u0027)"},{"line_number":237,"context_line":"            except Exception:"},{"line_number":238,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_ff0a3b89","line":235,"updated":"2015-04-09 19:49:13.000000000","message":"I assume taskflow will bail with an Exception right here on the run() if there\u0027s no available amphorae in the pool? Could we specify the actual exception it throws in that case, so we don\u0027t accidentally mask other issues that are unrelated?","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"bb919f7a6a5e16ea5b72e95b00e4f9c20681bcc4","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                                               log\u003dLOG):"},{"line_number":233,"context_line":"            amp \u003d None"},{"line_number":234,"context_line":"            try:"},{"line_number":235,"context_line":"                create_lb_tf.run()"},{"line_number":236,"context_line":"                amp \u003d create_lb_tf.storage.fetch(\u0027amphora\u0027)"},{"line_number":237,"context_line":"            except Exception:"},{"line_number":238,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_8aad2a9d","line":235,"in_reply_to":"9aa53dc9_740e4d3c","updated":"2015-04-09 23:27:10.000000000","message":"That\u0027s behaviorally fine, except if we have spares in the pool, but it failed to retrieve them for some crazy reason, then you would build one without actually \"needing\" to.  So at minimum logging appropriately on \"No spares in pool\" exception will help in filtering actual issues when another exception would be caught.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"66c10fc38fab6ef1e2335b6673fb74ca29567c91","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                                               log\u003dLOG):"},{"line_number":233,"context_line":"            amp \u003d None"},{"line_number":234,"context_line":"            try:"},{"line_number":235,"context_line":"                create_lb_tf.run()"},{"line_number":236,"context_line":"                amp \u003d create_lb_tf.storage.fetch(\u0027amphora\u0027)"},{"line_number":237,"context_line":"            except Exception:"},{"line_number":238,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_d43d1990","line":235,"in_reply_to":"9aa53dc9_ff0a3b89","updated":"2015-04-09 21:25:43.000000000","message":"Agreed, and this ties into comment above about error logging.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a1d72350ee7303b7111ccc42c077295236615028","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                                               log\u003dLOG):"},{"line_number":233,"context_line":"            amp \u003d None"},{"line_number":234,"context_line":"            try:"},{"line_number":235,"context_line":"                create_lb_tf.run()"},{"line_number":236,"context_line":"                amp \u003d create_lb_tf.storage.fetch(\u0027amphora\u0027)"},{"line_number":237,"context_line":"            except Exception:"},{"line_number":238,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_740e4d3c","line":235,"in_reply_to":"9aa53dc9_ff0a3b89","updated":"2015-04-09 21:37:29.000000000","message":"Yes, we could change this.  I left it wide open because when *anything* goes wrong here the next step is to attempt to create an amphora and allocate it to the load balancer.  So, it\u0027s kind of a built in retry.\nThoughts?","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"14d46a78a29a64c0e5acc91e7dfb19ec97c97588","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                                               log\u003dLOG):"},{"line_number":268,"context_line":"            delete_lb_tf.run()"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def update_load_balancer(self, load_balancer_updates, load_balancer_id):"},{"line_number":271,"context_line":"        \"\"\"Updates a load balancer."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        :returns: None"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_9f28cfe3","line":270,"updated":"2015-04-09 19:49:13.000000000","message":"Same as health-monitor and listeners above.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"14d46a78a29a64c0e5acc91e7dfb19ec97c97588","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                                               log\u003dLOG):"},{"line_number":284,"context_line":"            update_lb_tf.run()"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"# TODO(johnsom) member_id here?"},{"line_number":287,"context_line":"    def create_member(self, member_id):"},{"line_number":288,"context_line":"        \"\"\"Creates a pool member."},{"line_number":289,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_ff7fdbdd","line":286,"updated":"2015-04-09 19:49:13.000000000","message":"Same as health_monitor_id above?","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"66c10fc38fab6ef1e2335b6673fb74ca29567c91","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                                               log\u003dLOG):"},{"line_number":284,"context_line":"            update_lb_tf.run()"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"# TODO(johnsom) member_id here?"},{"line_number":287,"context_line":"    def create_member(self, member_id):"},{"line_number":288,"context_line":"        \"\"\"Creates a pool member."},{"line_number":289,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_145021d3","line":286,"in_reply_to":"9aa53dc9_ff7fdbdd","updated":"2015-04-09 21:25:43.000000000","message":"Same for my response.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"14d46a78a29a64c0e5acc91e7dfb19ec97c97588","unresolved":false,"context_lines":[{"line_number":331,"context_line":"                                               log\u003dLOG):"},{"line_number":332,"context_line":"            delete_member_tf.run()"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def update_member(self, member_updates, member_id):"},{"line_number":335,"context_line":"        \"\"\"Updates a pool member."},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"        :returns: None"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_9f568f5a","line":334,"updated":"2015-04-09 19:49:13.000000000","message":"Same as health-monitor and listeners above.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"14d46a78a29a64c0e5acc91e7dfb19ec97c97588","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                                               log\u003dLOG):"},{"line_number":400,"context_line":"            delete_pool_tf.run()"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    def update_pool(self, pool_updates, pool_id):"},{"line_number":403,"context_line":"        \"\"\"Updates a node pool."},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        :returns: None"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_1fc95f26","line":402,"updated":"2015-04-09 19:49:13.000000000","message":"Same as health-monitor and listeners above.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        self._lb_flows \u003d load_balancer_flows.LoadBalancerFlows()"},{"line_number":48,"context_line":"        self._listener_flows \u003d listener_flows.ListenerFlows()"},{"line_number":49,"context_line":"        self._member_flows \u003d member_flows.MemberFlows()"},{"line_number":50,"context_line":"        self._pool_flows \u003d pool_flows.PoolFlows()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        super(ControllerWorker, self).__init__()"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_a2c43392","line":50,"updated":"2015-04-27 21:10:35.000000000","message":"Question: any particular reason the repositories aren\u0027t initialized here as well?","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        self._lb_flows \u003d load_balancer_flows.LoadBalancerFlows()"},{"line_number":48,"context_line":"        self._listener_flows \u003d listener_flows.ListenerFlows()"},{"line_number":49,"context_line":"        self._member_flows \u003d member_flows.MemberFlows()"},{"line_number":50,"context_line":"        self._pool_flows \u003d pool_flows.PoolFlows()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        super(ControllerWorker, self).__init__()"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_4da7d44f","line":50,"in_reply_to":"7ad32947_a2c43392","updated":"2015-04-28 21:43:03.000000000","message":"Done","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        \"\"\"Creates a health monitor."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        :param health_monitor_id: ID of the health monitor to create"},{"line_number":87,"context_line":"        :returns: None"},{"line_number":88,"context_line":"        :raises NoSuitablePool: Unable to find the node pool"},{"line_number":89,"context_line":"        \"\"\""},{"line_number":90,"context_line":"        health_mon \u003d _health_mon_repo.get(db_apis.get_session(),"}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_02f3e774","line":87,"updated":"2015-04-27 21:10:35.000000000","message":"Question: should this and the following update/create methods not be returning anything?  Right now there is a discrepancy between the load balancer create and these methods.","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        \"\"\"Creates a health monitor."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        :param health_monitor_id: ID of the health monitor to create"},{"line_number":87,"context_line":"        :returns: None"},{"line_number":88,"context_line":"        :raises NoSuitablePool: Unable to find the node pool"},{"line_number":89,"context_line":"        \"\"\""},{"line_number":90,"context_line":"        health_mon \u003d _health_mon_repo.get(db_apis.get_session(),"}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_2d4a5884","line":87,"in_reply_to":"7ad32947_02f3e774","updated":"2015-04-28 21:43:03.000000000","message":"Good question, but the only current consumer of these is the queue consumer that doesn\u0027t seem to need anything, so I don\u0027t have anything coming back at the moment.","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/controller/worker/flows/amphora_flows.py":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecec0060d4fcc7aa4cca3408049c944620762d8c","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                                Amphora_WrapUp(requires\u003d\u0027amphora\u0027))"},{"line_number":69,"context_line":"        delete_amphora_flow.add(network_tasks."},{"line_number":70,"context_line":"                                Get_Plumbed_Networks(requires\u003d\u0027amphora\u0027,"},{"line_number":71,"context_line":"                                                     provides\u003d\u0027delta\u0027))"},{"line_number":72,"context_line":"        delete_amphora_flow.add(network_tasks."},{"line_number":73,"context_line":"                                UnPlug_Networks(requires\u003d[\u0027amphora\u0027, \u0027delta\u0027]))"},{"line_number":74,"context_line":"        delete_amphora_flow.add(database_tasks."}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_1324e0ad","line":71,"updated":"2015-03-02 16:46:05.000000000","message":"That one doesn\u0027t provide a delta -- just nics","commit_id":"63fc6d15c5d82f9bf32f4edba71d31fb931d1024"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"66c10fc38fab6ef1e2335b6673fb74ca29567c91","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        :returns: The flow for creating the amphora"},{"line_number":44,"context_line":"        \"\"\""},{"line_number":45,"context_line":"        create_amphora_flow \u003d linear_flow.Flow(\u0027octavia-create-amphora-flow\u0027)"},{"line_number":46,"context_line":"        create_amphora_flow.add(database_tasks.Create_Amphora_in_DB())"},{"line_number":47,"context_line":"        create_amphora_flow.add(compute_tasks.Compute_Create())"},{"line_number":48,"context_line":"        create_amphora_flow.add(database_tasks.Mark_Amphora_Booting_in_DB())"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_14fee1ad","line":45,"updated":"2015-04-09 21:25:43.000000000","message":"Should we maybe put these in constants? \u0027octavia-create-amphora-flow\u0027\n\nSame goes for other stringified flow labels below.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"bb919f7a6a5e16ea5b72e95b00e4f9c20681bcc4","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        :returns: The flow for creating the amphora"},{"line_number":44,"context_line":"        \"\"\""},{"line_number":45,"context_line":"        create_amphora_flow \u003d linear_flow.Flow(\u0027octavia-create-amphora-flow\u0027)"},{"line_number":46,"context_line":"        create_amphora_flow.add(database_tasks.Create_Amphora_in_DB())"},{"line_number":47,"context_line":"        create_amphora_flow.add(compute_tasks.Compute_Create())"},{"line_number":48,"context_line":"        create_amphora_flow.add(database_tasks.Mark_Amphora_Booting_in_DB())"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_aafb4e7a","line":45,"in_reply_to":"9aa53dc9_14fee1ad","updated":"2015-04-09 23:27:10.000000000","message":"I agree.  The repetitive string could be simplified by the config.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"57ce7a949cd6bdcef533f54cf15e573bdb4097d5","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                                   AmphoraFinalize())"},{"line_number":84,"context_line":"        create_amp_for_lb_flow.add(database_tasks."},{"line_number":85,"context_line":"                                   MarkAmphoraAllocatedInDB("},{"line_number":86,"context_line":"                                       requires\u003d\u0027loadbalancer\u0027))"},{"line_number":87,"context_line":"        new_LB_net_subflow \u003d self._lb_flows.get_new_LB_networking_subflow()"},{"line_number":88,"context_line":"        create_amp_for_lb_flow.add(new_LB_net_subflow)"},{"line_number":89,"context_line":"        create_amp_for_lb_flow.add(database_tasks.MarkLBActiveInDB("}],"source_content_type":"text/x-python","patch_set":34,"id":"bab921fb_d16f4dfa","line":86,"updated":"2015-04-27 05:43:51.000000000","message":"looks like some duplicated tasks from other flows after this point, but in the interest of mitigating race conditions and getting this out, this can be improved upon later.","commit_id":"80b497e00a48ba6be27dbe61cf8a1bbf0db43fb7"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class AmphoraFlows(object):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def __init__(self):"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        self._lb_flows \u003d load_balancer_flows.LoadBalancerFlows()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def get_create_amphora_flow(self):"}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_a46560e2","line":34,"updated":"2015-04-27 21:10:35.000000000","message":"nit: no need for the newline here","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class AmphoraFlows(object):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def __init__(self):"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        self._lb_flows \u003d load_balancer_flows.LoadBalancerFlows()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def get_create_amphora_flow(self):"}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_cd48848a","line":34,"in_reply_to":"7ad32947_a46560e2","updated":"2015-04-28 21:43:03.000000000","message":"Done","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/controller/worker/flows/health_monitor_flows.py":[{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"66c10fc38fab6ef1e2335b6673fb74ca29567c91","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        :returns: The flow for creating a health monitor"},{"line_number":28,"context_line":"        \"\"\""},{"line_number":29,"context_line":"        create_hm_flow \u003d linear_flow.Flow(\u0027octavia-create-hm-flow\u0027)"},{"line_number":30,"context_line":"        create_hm_flow.add(amphora_driver_tasks.Send_Configuration("},{"line_number":31,"context_line":"            requires\u003d\u0027amphora\u0027))"},{"line_number":32,"context_line":"        create_hm_flow.add(database_tasks.Mark_Health_Mon_Active_in_DB("}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_1415c1e3","line":29,"updated":"2015-04-09 21:25:43.000000000","message":"Should we add task flow labels to constants?","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"}],"octavia/controller/worker/flows/listener_flows.py":[{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"66c10fc38fab6ef1e2335b6673fb74ca29567c91","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        :returns: The flow for creating a listener"},{"line_number":28,"context_line":"        \"\"\""},{"line_number":29,"context_line":"        create_listener_flow \u003d linear_flow.Flow(\u0027octavia-create-listener_flow\u0027)"},{"line_number":30,"context_line":"        create_listener_flow.add(amphora_driver_tasks.Send_Configuration("},{"line_number":31,"context_line":"            requires\u003d\u0027amphora\u0027))"},{"line_number":32,"context_line":"        create_listener_flow.add(database_tasks.Mark_Listener_Active_in_DB("}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_54e6a915","line":29,"updated":"2015-04-09 21:25:43.000000000","message":"Taskflow labels as constants?","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"}],"octavia/controller/worker/flows/load_balancer_flows.py":[{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"66c10fc38fab6ef1e2335b6673fb74ca29567c91","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        # a conditional flow that would make this cleaner once implemented."},{"line_number":38,"context_line":"        # https://review.openstack.org/#/c/98946/"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        create_LB_flow \u003d linear_flow.Flow(\u0027octavia-create-LB-flow\u0027)"},{"line_number":41,"context_line":"        create_LB_flow.add(database_tasks.Map_Loadbalancer_to_Amphora("},{"line_number":42,"context_line":"            requires\u003d\u0027loadbalancer\u0027,"},{"line_number":43,"context_line":"            provides\u003d\u0027amphora\u0027))"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_b4b17503","line":40,"updated":"2015-04-09 21:25:43.000000000","message":"Taskflow labels as constants?","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"66c10fc38fab6ef1e2335b6673fb74ca29567c91","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        return delete_LB_flow"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def get_new_LB_networking_subflow(self):"},{"line_number":68,"context_line":"        \"\"\"Create a sub-flow to setup networking."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        :returns: The flow to setup networking for a new amphora"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_9484310b","line":67,"updated":"2015-04-09 21:25:43.000000000","message":"Have LB defined here but load_balancer elsewhere. Should we be consistent even though it would make this name much longer? possibly rename the method to reduce overall length if concerned.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"66c10fc38fab6ef1e2335b6673fb74ca29567c91","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        new_LB_net_subflow.add(network_tasks.Plug_Networks("},{"line_number":81,"context_line":"            requires\u003d[\u0027amphora\u0027, \u0027delta\u0027]))"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"# TODO(johnsom) plug the vip here?"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        return new_LB_net_subflow"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_d4bcf9bc","line":83,"updated":"2015-04-09 21:25:43.000000000","message":"This seems like the proper place to plug the vip.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        # Note this flow is a bit strange in how it handles building"},{"line_number":38,"context_line":"        # Amphora if there are no spares.  TaskFlow has a spec for"},{"line_number":39,"context_line":"        # a conditional flow that would make this cleaner once implemented."},{"line_number":40,"context_line":"        # https://review.openstack.org/#/c/98946/"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        create_LB_flow \u003d linear_flow.Flow(constants.CREATE_LOADBALANCER_FLOW)"},{"line_number":43,"context_line":"        create_LB_flow.add(database_tasks.MapLoadbalancerToAmphora("}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_67a74a50","line":40,"updated":"2015-04-27 21:10:35.000000000","message":"If I remember correctly, the spare pool manager should always give you a spare, regardless if it had to create it on the spot or pull from the pool of existing ones.","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        # Note this flow is a bit strange in how it handles building"},{"line_number":38,"context_line":"        # Amphora if there are no spares.  TaskFlow has a spec for"},{"line_number":39,"context_line":"        # a conditional flow that would make this cleaner once implemented."},{"line_number":40,"context_line":"        # https://review.openstack.org/#/c/98946/"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        create_LB_flow \u003d linear_flow.Flow(constants.CREATE_LOADBALANCER_FLOW)"},{"line_number":43,"context_line":"        create_LB_flow.add(database_tasks.MapLoadbalancerToAmphora("}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_e808ce2a","line":40,"in_reply_to":"7ad32947_67a74a50","updated":"2015-04-28 21:43:03.000000000","message":"The design we have is that the housekeeping manager (spare pool manager) is a separate process and we are not doing IPC.  So, if there are no spares (for whatever reason) the flow needs to try to build one.\nWe will gate concurrent # of builds with the DB.","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/controller/worker/flows/member_flows.py":[{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"66c10fc38fab6ef1e2335b6673fb74ca29567c91","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        :returns: The flow for creating a member"},{"line_number":28,"context_line":"        \"\"\""},{"line_number":29,"context_line":"        create_member_flow \u003d linear_flow.Flow(\u0027octavia-create-member-flow\u0027)"},{"line_number":30,"context_line":"        create_member_flow.add(amphora_driver_tasks.Send_Configuration("},{"line_number":31,"context_line":"            requires\u003d\u0027amphora\u0027))"},{"line_number":32,"context_line":"        create_member_flow.add(database_tasks.Mark_Member_Active_in_DB("}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_54c90958","line":29,"updated":"2015-04-09 21:25:43.000000000","message":"Taskflow labels as constants?","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"}],"octavia/controller/worker/flows/pool_flows.py":[{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"66c10fc38fab6ef1e2335b6673fb74ca29567c91","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        :returns: The flow for creating a pool"},{"line_number":28,"context_line":"        \"\"\""},{"line_number":29,"context_line":"        create_pool_flow \u003d linear_flow.Flow(\u0027octavia-create-pool-flow\u0027)"},{"line_number":30,"context_line":"        create_pool_flow.add(amphora_driver_tasks.Send_Configuration("},{"line_number":31,"context_line":"            requires\u003d\u0027amphora\u0027))"},{"line_number":32,"context_line":"        create_pool_flow.add(database_tasks.Mark_Pool_Active_in_DB("}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_74d3ed04","line":29,"updated":"2015-04-09 21:25:43.000000000","message":"Taskflow labels as constants?","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"}],"octavia/controller/worker/tasks/amphora_driver_tasks.py":[{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"bb919f7a6a5e16ea5b72e95b00e4f9c20681bcc4","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    def execute(self, listener, vip):"},{"line_number":47,"context_line":"        \"\"\"Execute listener update routines for an amphora.\"\"\""},{"line_number":48,"context_line":"        self.amphora_driver.update(listener, vip)"},{"line_number":49,"context_line":"        LOG.debug(\"Updated amphora with new configuration for listener\")"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def revert(self, listener, *args, **kwargs):"},{"line_number":52,"context_line":"        \"\"\"Handle a failed listener update.\"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_edbdf068","line":49,"updated":"2015-04-09 23:27:10.000000000","message":"This should maybe be surrounded by _LI() inside the debug logging.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"bb919f7a6a5e16ea5b72e95b00e4f9c20681bcc4","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def revert(self, listener, *args, **kwargs):"},{"line_number":52,"context_line":"        \"\"\"Handle a failed listener update.\"\"\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        LOG.warn(i18n._LW(\"Reverting listener update.\"))"},{"line_number":55,"context_line":"        self.listener_repo.update(db_apis.get_session(), id\u003dlistener.id,"},{"line_number":56,"context_line":"                                  provisioning_status\u003dconstants.ERROR)"},{"line_number":57,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_8db8a476","line":54,"updated":"2015-04-09 23:27:10.000000000","message":"Nit:  Not sure where else you\u0027ve done this except in this file: you are allowed to import the individual classes _LW, _LE, etc.  Might as well do so to shorten the required characters.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"bb919f7a6a5e16ea5b72e95b00e4f9c20681bcc4","unresolved":false,"context_lines":[{"line_number":158,"context_line":"#         return None"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"class Amphora_WrapUp(BaseAmphoraTask):"},{"line_number":162,"context_line":"    \"\"\"Task to perform the wrapup on an amphora"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    likely to be part of the driver."}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_2de3d8a5","line":161,"updated":"2015-04-09 23:27:10.000000000","message":"Class name should be camel-case, not \u0027_\u0027 separated.  Same for any other classes.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from octavia.common import constants"},{"line_number":23,"context_line":"from octavia.db import api as db_apis"},{"line_number":24,"context_line":"from octavia.db import repositories as repo"},{"line_number":25,"context_line":"from octavia import i18n"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d cfg.CONF"},{"line_number":28,"context_line":"CONF.import_group(\u0027controller_worker\u0027, \u0027octavia.common.config\u0027)"}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_aa93e9a2","line":25,"updated":"2015-04-27 21:10:35.000000000","message":"nit: You can import the classes you need here (there is an exception for these) like so:\nfrom octavia.i18n import _LW","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from octavia.common import constants"},{"line_number":23,"context_line":"from octavia.db import api as db_apis"},{"line_number":24,"context_line":"from octavia.db import repositories as repo"},{"line_number":25,"context_line":"from octavia import i18n"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d cfg.CONF"},{"line_number":28,"context_line":"CONF.import_group(\u0027controller_worker\u0027, \u0027octavia.common.config\u0027)"}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_a8c41692","line":25,"in_reply_to":"7ad32947_aa93e9a2","updated":"2015-04-28 21:43:03.000000000","message":"Done","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/controller/worker/tasks/compute_tasks.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"14d46a78a29a64c0e5acc91e7dfb19ec97c97588","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                name\u003d\"amphora-\" + amphora.id,"},{"line_number":56,"context_line":"                amphora_flavor\u003dCONF.controller_worker.amp_flavor_id,"},{"line_number":57,"context_line":"                image_id\u003dCONF.controller_worker.amp_image_id,"},{"line_number":58,"context_line":"                key_name\u003dCONF.controller_worker.amp_key_list,"},{"line_number":59,"context_line":"                sec_groups\u003dNone,"},{"line_number":60,"context_line":"                network_ids\u003dCONF.controller_worker.amp_network_list)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_5a49355f","line":58,"updated":"2015-04-09 19:49:13.000000000","message":"I think it\u0027s confusing that this is \"key_name\" when it is really more like a \"key_names_list\", but that is not your problem... Just wanted to put it out there. :)","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"14d46a78a29a64c0e5acc91e7dfb19ec97c97588","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            raise e"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def revert(self, amphora, *args, **kwargs):"},{"line_number":76,"context_line":"        \"\"\"This method will revert the creation of the"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        amphora. So it will just delete it in this flow"},{"line_number":79,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_fa880973","line":76,"updated":"2015-04-09 19:49:13.000000000","message":"This doc string is not properly formatted -- there are actually a few like this I\u0027ve seen, I think. It should be (pastebin since spacing in gerrit comments is broken):\n\nhttp://pastebin.com/raw.php?i\u003dX3pxPUi5\n\nhttp://docs.openstack.org/developer/hacking/#docstrings\nRule H405\n\nI thought I had seen something with regard to putting periods at the end of sentences or not, but I can\u0027t find it again. :(","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"66c10fc38fab6ef1e2335b6673fb74ca29567c91","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            raise e"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def revert(self, amphora, *args, **kwargs):"},{"line_number":76,"context_line":"        \"\"\"This method will revert the creation of the"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        amphora. So it will just delete it in this flow"},{"line_number":79,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_1444a1b4","line":76,"in_reply_to":"9aa53dc9_fa880973","updated":"2015-04-09 21:25:43.000000000","message":"You need to put a period on the top line here only if its one line from the issues ive worked through regarding this. Since this is a multi line this seems to be accurate based on the rules.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a6601c5ade234b28847c98d36e99a6abf4191778","unresolved":false,"context_lines":[{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class Base_Compute_Task(task.Task):"},{"line_number":33,"context_line":"    \"\"\"Base task to load drivers common to the tasks.\"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __init__(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aaa499b_abc82723","line":32,"updated":"2015-04-15 02:40:24.000000000","message":"no underscores. goes for all of the class names","commit_id":"a2271411d1b1ff6d91fe39e4dc1121b7faeaa44f"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from octavia.common import constants"},{"line_number":24,"context_line":"from octavia.common import exceptions"},{"line_number":25,"context_line":"from octavia import i18n"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d cfg.CONF"},{"line_number":28,"context_line":"CONF.import_group(\u0027controller_worker\u0027, \u0027octavia.common.config\u0027)"}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_eace81b3","line":25,"updated":"2015-04-27 21:10:35.000000000","message":"nit: You can import the classes you need here (there is an exception for these) like so:\nfrom octavia.i18n import _LW","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from octavia.common import constants"},{"line_number":24,"context_line":"from octavia.common import exceptions"},{"line_number":25,"context_line":"from octavia import i18n"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d cfg.CONF"},{"line_number":28,"context_line":"CONF.import_group(\u0027controller_worker\u0027, \u0027octavia.common.config\u0027)"}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_681a7e19","line":25,"in_reply_to":"7ad32947_eace81b3","updated":"2015-04-28 21:43:03.000000000","message":"Done","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/controller/worker/tasks/controller_tasks.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"14d46a78a29a64c0e5acc91e7dfb19ec97c97588","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, **kwargs):"},{"line_number":30,"context_line":"        from octavia.controller.worker import controller_worker"},{"line_number":31,"context_line":"        self.cntrlr_worker \u003d controller_worker.ControllerWorker()"},{"line_number":32,"context_line":"        self.listener_repo \u003d repo.ListenerRepository()"},{"line_number":33,"context_line":"        self.amp_repo \u003d repo.AmphoraRepository()"},{"line_number":34,"context_line":"        super(Base_Controller_Task, self).__init__(**kwargs)"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_5a18151e","line":31,"updated":"2015-04-09 19:49:13.000000000","message":"Why bother taking the vowels out of this?","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"66c10fc38fab6ef1e2335b6673fb74ca29567c91","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            self.cntrlr_worker.delete_load_balancer(lb.id)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"class Delete_Listeners_on_LB(Base_Controller_Task):"},{"line_number":56,"context_line":"    \"\"\"Deletes listeners on a load balancer.\"\"\""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def execute(self, loadbalancer):"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_746f6d2b","line":55,"updated":"2015-04-09 21:25:43.000000000","message":"I would like to see it consistent, but here were using LB and elsewhere using load_balancer. Also, the class name should not have \u0027_\u0027 in it.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a6601c5ade234b28847c98d36e99a6abf4191778","unresolved":false,"context_lines":[{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class Base_Controller_Task(task.Task):"},{"line_number":27,"context_line":"    \"\"\"Base task to load drivers common to the tasks.\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aaa499b_4bec038f","line":26,"updated":"2015-04-15 02:40:24.000000000","message":"no underscores","commit_id":"a2271411d1b1ff6d91fe39e4dc1121b7faeaa44f"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a6601c5ade234b28847c98d36e99a6abf4191778","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    \"\"\"Base task to load drivers common to the tasks.\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, **kwargs):"},{"line_number":30,"context_line":"        from octavia.controller.worker import controller_worker"},{"line_number":31,"context_line":"        self.cntrlr_worker \u003d controller_worker.ControllerWorker()"},{"line_number":32,"context_line":"        self.listener_repo \u003d repo.ListenerRepository()"},{"line_number":33,"context_line":"        self.amp_repo \u003d repo.AmphoraRepository()"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aaa499b_ab64a721","line":30,"updated":"2015-04-15 02:40:24.000000000","message":"why is this import here?","commit_id":"a2271411d1b1ff6d91fe39e4dc1121b7faeaa44f"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a6601c5ade234b28847c98d36e99a6abf4191778","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, **kwargs):"},{"line_number":30,"context_line":"        from octavia.controller.worker import controller_worker"},{"line_number":31,"context_line":"        self.cntrlr_worker \u003d controller_worker.ControllerWorker()"},{"line_number":32,"context_line":"        self.listener_repo \u003d repo.ListenerRepository()"},{"line_number":33,"context_line":"        self.amp_repo \u003d repo.AmphoraRepository()"},{"line_number":34,"context_line":"        super(Base_Controller_Task, self).__init__(**kwargs)"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aaa499b_2b041748","line":31,"updated":"2015-04-15 02:40:24.000000000","message":"self.worker would have been an simpler name :)","commit_id":"a2271411d1b1ff6d91fe39e4dc1121b7faeaa44f"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a6601c5ade234b28847c98d36e99a6abf4191778","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class Delete_Load_Balancers_on_Amp(Base_Controller_Task):"},{"line_number":38,"context_line":"    \"\"\"Delete the load balancers on an amphora.\"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def execute(self, amphora):"},{"line_number":41,"context_line":"        \"\"\"Deletes the load balancers on an amphora."}],"source_content_type":"text/x-python","patch_set":29,"id":"7aaa499b_8b99eb21","line":38,"updated":"2015-04-15 02:40:24.000000000","message":"there won\u0027t be many LBs on single amphora.  Maybe i\u0027m misunderstanding something.  I thought LB to Amphora was 1:M","commit_id":"a2271411d1b1ff6d91fe39e4dc1121b7faeaa44f"}],"octavia/controller/worker/tasks/database_tasks.py":[{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"66c10fc38fab6ef1e2335b6673fb74ca29567c91","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        return None"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"class Map_Loadbalancer_to_Amphora(Base_Database_Task):"},{"line_number":82,"context_line":"    \"\"\"Maps and assigns a load balancer to an amphora in the database.\"\"\""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def execute(self, loadbalancer):"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_d4f4f95b","line":81,"updated":"2015-04-09 21:25:43.000000000","message":"Class names don\u0027t seem to adhere to python standards. And I would like to remain consistent with the naming of LB or load_balancer/Loadbalancer which applies to other classes here and other files.","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"14d46a78a29a64c0e5acc91e7dfb19ec97c97588","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    \"\"\""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def execute(self, amphora, loadbalancer):"},{"line_number":116,"context_line":"        \"\"\"Mark amphora as allocated to a load balancer in DB.\"\"\""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        LOG.debug(\"Mark ALLOCATED in DB for amphora: %s with compute id %s \""},{"line_number":119,"context_line":"                  \"for load balancer: %s\" %"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa53dc9_1a2dedfd","line":116,"updated":"2015-04-09 19:49:13.000000000","message":"Missing a lot of docstring params in this whole file -- I assume that\u0027ll happen at the \"polishing\" stage of the review though. :)","commit_id":"05f21675e9751ece511dc8d09c86258167e78a4e"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a6601c5ade234b28847c98d36e99a6abf4191778","unresolved":false,"context_lines":[{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class Base_Database_Task(task.Task):"},{"line_number":30,"context_line":"    \"\"\"Base task to load drivers common to the tasks.\"\"\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def __init__(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aaa499b_ab4b8786","line":29,"updated":"2015-04-15 02:40:24.000000000","message":"underscores","commit_id":"a2271411d1b1ff6d91fe39e4dc1121b7faeaa44f"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"57ce7a949cd6bdcef533f54cf15e573bdb4097d5","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                                 status\u003dconstants.AMPHORA_ALLOCATED,"},{"line_number":222,"context_line":"                                 compute_id\u003damphora.compute_id,"},{"line_number":223,"context_line":"                                 lb_network_ip\u003damphora.lb_network_ip,"},{"line_number":224,"context_line":"                                 load_balancer_id\u003dloadbalancer.id)"},{"line_number":225,"context_line":"        return None"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def revert(self, amphora, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":34,"id":"bab921fb_2c4f526c","line":224,"updated":"2015-04-27 05:43:51.000000000","message":"after this you\u0027ll need to basically re-retrieve the amphora and loadbalancer objects from the db since the ones passed in are now stale and will continue to be stale throughout the rest of the flow.  I\u0027m not sure how you can reassign them through taskflow though, hopefully you do.","commit_id":"80b497e00a48ba6be27dbe61cf8a1bbf0db43fb7"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"57ce7a949cd6bdcef533f54cf15e573bdb4097d5","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        self.amphora_repo.update(db_apis.get_session(), amphora.id,"},{"line_number":247,"context_line":"                                 status\u003dconstants.AMPHORA_BOOTING,"},{"line_number":248,"context_line":"                                 compute_id\u003damphora.compute_id)"},{"line_number":249,"context_line":"        return None"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def revert(self, amphora, *args, **kwargs):"},{"line_number":252,"context_line":"        \"\"\"Mark the amphora as broken and ready to be cleaned up.\"\"\""}],"source_content_type":"text/x-python","patch_set":34,"id":"bab921fb_91c9d55b","line":249,"updated":"2015-04-27 05:43:51.000000000","message":"all of these return Nones are unnecessary","commit_id":"80b497e00a48ba6be27dbe61cf8a1bbf0db43fb7"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2eea3977324d3ab69bcb47c09d821a20daa7e746","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        self.amphora_repo.update(db_apis.get_session(), amphora.id,"},{"line_number":247,"context_line":"                                 status\u003dconstants.AMPHORA_BOOTING,"},{"line_number":248,"context_line":"                                 compute_id\u003damphora.compute_id)"},{"line_number":249,"context_line":"        return None"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def revert(self, amphora, *args, **kwargs):"},{"line_number":252,"context_line":"        \"\"\"Mark the amphora as broken and ready to be cleaned up.\"\"\""}],"source_content_type":"text/x-python","patch_set":34,"id":"7ad32947_f198bf6c","line":249,"in_reply_to":"bab921fb_91c9d55b","updated":"2015-04-27 18:10:05.000000000","message":"Done","commit_id":"80b497e00a48ba6be27dbe61cf8a1bbf0db43fb7"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from octavia.common import constants"},{"line_number":22,"context_line":"from octavia.db import api as db_apis"},{"line_number":23,"context_line":"from octavia.db import repositories as repo"},{"line_number":24,"context_line":"from octavia import i18n"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_2a3c7992","line":24,"updated":"2015-04-27 21:10:35.000000000","message":"nit: You can import the classes you need here (there is an exception for these) like so:\nfrom octavia.i18n import _LW","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from octavia.common import constants"},{"line_number":22,"context_line":"from octavia.db import api as db_apis"},{"line_number":23,"context_line":"from octavia.db import repositories as repo"},{"line_number":24,"context_line":"from octavia import i18n"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_a8cad64d","line":24,"in_reply_to":"7ad32947_2a3c7992","updated":"2015-04-28 21:43:03.000000000","message":"Done","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/controller/worker/tasks/network_tasks.py":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a6601c5ade234b28847c98d36e99a6abf4191778","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        ).driver"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class Calculate_Delta(BaseNetworkTask):"},{"line_number":49,"context_line":"    \"\"\"Task to calculate the delta between"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    the nics on the amphora and the ones"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aaa499b_eb306f03","line":48,"updated":"2015-04-15 02:40:24.000000000","message":"no underscores, same below","commit_id":"a2271411d1b1ff6d91fe39e4dc1121b7faeaa44f"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from taskflow import task"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from octavia.common import constants"},{"line_number":23,"context_line":"from octavia import i18n"},{"line_number":24,"context_line":"from octavia.network import base"},{"line_number":25,"context_line":"from octavia.network import data_models"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_0a589df9","line":23,"updated":"2015-04-27 21:10:35.000000000","message":"nit: You can import the classes you need here (there is an exception for these) like so:\nfrom octavia.i18n import _LW, _LE","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from taskflow import task"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from octavia.common import constants"},{"line_number":23,"context_line":"from octavia import i18n"},{"line_number":24,"context_line":"from octavia.network import base"},{"line_number":25,"context_line":"from octavia.network import data_models"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_68495ed0","line":23,"in_reply_to":"7ad32947_0a589df9","updated":"2015-04-28 21:43:03.000000000","message":"Done","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/tests/unit/controller/worker/flows/test_amphora_flows.py":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecec0060d4fcc7aa4cca3408049c944620762d8c","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def test_get_create_amphora_flow(self):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        AmpFlow \u003d amphora_flows.AmphoraFlows()"},{"line_number":31,"context_line":"        amp_flow \u003d AmpFlow.get_create_amphora_flow()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        assert isinstance(amp_flow, flow.Flow)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_33c48491","line":30,"updated":"2015-03-02 16:46:05.000000000","message":"I likely would put that in setup so you can reference it in each test with self.amphora_flows...","commit_id":"63fc6d15c5d82f9bf32f4edba71d31fb931d1024"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        amp_flow \u003d self.AmpFlow.get_create_amphora_flow()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        assert isinstance(amp_flow, flow.Flow)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        assert \u0027amphora\u0027 in amp_flow.provides"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_cd4bdf2a","line":39,"updated":"2015-04-27 21:10:35.000000000","message":"All the assertions here should be modified to the appropriate asset methods.  Here should be re-written to:  self.assertIsInstance(amp_flow, flow.Flow)","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        amp_flow \u003d self.AmpFlow.get_create_amphora_flow()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        assert isinstance(amp_flow, flow.Flow)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        assert \u0027amphora\u0027 in amp_flow.provides"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_08cc2a34","line":39,"in_reply_to":"7ad32947_cd4bdf2a","updated":"2015-04-28 21:43:03.000000000","message":"Done","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/tests/unit/controller/worker/flows/test_health_monitor_flows.py":[{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        health_mon_flow \u003d (self.HealthMonitorFlow."},{"line_number":32,"context_line":"                           get_create_health_monitor_flow())"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        assert isinstance(health_mon_flow, flow.Flow)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        assert \u0027listener\u0027 in health_mon_flow.requires"},{"line_number":37,"context_line":"        assert \u0027loadbalancer\u0027 in health_mon_flow.requires"}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_6d528bdf","line":34,"updated":"2015-04-27 21:10:35.000000000","message":"Should modify assertions in this file as well.","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        health_mon_flow \u003d (self.HealthMonitorFlow."},{"line_number":32,"context_line":"                           get_create_health_monitor_flow())"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        assert isinstance(health_mon_flow, flow.Flow)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        assert \u0027listener\u0027 in health_mon_flow.requires"},{"line_number":37,"context_line":"        assert \u0027loadbalancer\u0027 in health_mon_flow.requires"}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_23e9491b","line":34,"in_reply_to":"7ad32947_6d528bdf","updated":"2015-04-28 21:43:03.000000000","message":"Done","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/tests/unit/controller/worker/flows/test_listener_flows.py":[{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        listener_flow \u003d self.ListenerFlow.get_create_listener_flow()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        assert isinstance(listener_flow, flow.Flow)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        assert \u0027listener\u0027 in listener_flow.requires"},{"line_number":36,"context_line":"        assert \u0027loadbalancer\u0027 in listener_flow.requires"}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_8d6cc79d","line":33,"updated":"2015-04-27 21:10:35.000000000","message":"Should modify assertions in this file as well.","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        listener_flow \u003d self.ListenerFlow.get_create_listener_flow()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        assert isinstance(listener_flow, flow.Flow)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        assert \u0027listener\u0027 in listener_flow.requires"},{"line_number":36,"context_line":"        assert \u0027loadbalancer\u0027 in listener_flow.requires"}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_c3b855e8","line":33,"in_reply_to":"7ad32947_8d6cc79d","updated":"2015-04-28 21:43:03.000000000","message":"Done","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/tests/unit/controller/worker/flows/test_load_balancer_flows.py":[{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        lb_flow \u003d self.LBFlow.get_create_load_balancer_flow()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        assert isinstance(lb_flow, flow.Flow)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        assert \u0027amphora\u0027 in lb_flow.provides"},{"line_number":36,"context_line":"        assert \u0027delta\u0027 in lb_flow.provides"}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_6d696b8b","line":33,"updated":"2015-04-27 21:10:35.000000000","message":"Should modify assertions in this file as well.","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        lb_flow \u003d self.LBFlow.get_create_load_balancer_flow()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        assert isinstance(lb_flow, flow.Flow)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        assert \u0027amphora\u0027 in lb_flow.provides"},{"line_number":36,"context_line":"        assert \u0027delta\u0027 in lb_flow.provides"}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_83cedd58","line":33,"in_reply_to":"7ad32947_6d696b8b","updated":"2015-04-28 21:43:03.000000000","message":"Done","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/tests/unit/controller/worker/flows/test_member_flows.py":[{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        member_flow \u003d self.MemberFlow.get_create_member_flow()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        assert isinstance(member_flow, flow.Flow)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        assert \u0027listener\u0027 in member_flow.requires"},{"line_number":36,"context_line":"        assert \u0027loadbalancer\u0027 in member_flow.requires"}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_4d058fc0","line":33,"updated":"2015-04-27 21:10:35.000000000","message":"Should modify assertions in this file as well.","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        member_flow \u003d self.MemberFlow.get_create_member_flow()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        assert isinstance(member_flow, flow.Flow)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        assert \u0027listener\u0027 in member_flow.requires"},{"line_number":36,"context_line":"        assert \u0027loadbalancer\u0027 in member_flow.requires"}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_836a5d19","line":33,"in_reply_to":"7ad32947_4d058fc0","updated":"2015-04-28 21:43:03.000000000","message":"Done","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/tests/unit/controller/worker/flows/test_pool_flows.py":[{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        pool_flow \u003d self.PoolFlow.get_create_pool_flow()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        assert isinstance(pool_flow, flow.Flow)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        assert \u0027listener\u0027 in pool_flow.requires"},{"line_number":36,"context_line":"        assert \u0027loadbalancer\u0027 in pool_flow.requires"}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_2d0a53d3","line":33,"updated":"2015-04-27 21:10:35.000000000","message":"Should modify assertions in this file as well.","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        pool_flow \u003d self.PoolFlow.get_create_pool_flow()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        assert isinstance(pool_flow, flow.Flow)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        assert \u0027listener\u0027 in pool_flow.requires"},{"line_number":36,"context_line":"        assert \u0027loadbalancer\u0027 in pool_flow.requires"}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_c3ba956e","line":33,"in_reply_to":"7ad32947_2d0a53d3","updated":"2015-04-28 21:43:03.000000000","message":"Done","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/tests/unit/controller/worker/tasks/test_controller_tasks.py":[{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from octavia.db import repositories as repo"},{"line_number":21,"context_line":"import octavia.tests.unit.base as base"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"AMP_ID \u003d \u0027e7271ec4-c77e-11e4-88f6-9f36415e58e0\u0027"},{"line_number":24,"context_line":"LB1_ID \u003d \u002733afd2fa-c77e-11e4-929c-9783f6e7e3e7\u0027"},{"line_number":25,"context_line":"LB2_ID \u003d \u00273c47c800-c77e-11e4-81cf-db4f342af1e7\u0027"},{"line_number":26,"context_line":"LISTENER1_ID \u003d \u0027ad0f176e-c783-11e4-af0b-5f59555e292b\u0027"}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_6d172bee","line":23,"updated":"2015-04-27 21:10:35.000000000","message":"We have a uuid generation utility you can use here:\n\nfrom oslo_utils import uuidutils\n\nuuidutils.generate_uuid()","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from octavia.db import repositories as repo"},{"line_number":21,"context_line":"import octavia.tests.unit.base as base"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"AMP_ID \u003d \u0027e7271ec4-c77e-11e4-88f6-9f36415e58e0\u0027"},{"line_number":24,"context_line":"LB1_ID \u003d \u002733afd2fa-c77e-11e4-929c-9783f6e7e3e7\u0027"},{"line_number":25,"context_line":"LB2_ID \u003d \u00273c47c800-c77e-11e4-81cf-db4f342af1e7\u0027"},{"line_number":26,"context_line":"LISTENER1_ID \u003d \u0027ad0f176e-c783-11e4-af0b-5f59555e292b\u0027"}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_63ee20ee","line":23,"in_reply_to":"7ad32947_6d172bee","updated":"2015-04-28 21:43:03.000000000","message":"Done\n\nWhile debugging it is nice to be able to match these up with the run output, but I see the value in making sure someone doesn\u0027t hard code these.","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/tests/unit/controller/worker/tasks/test_database_tasks.py":[{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from octavia.db import repositories as repo"},{"line_number":21,"context_line":"import octavia.tests.unit.base as base"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"AMP_ID \u003d \u002711940118-bfaf-11e4-9405-bb90ef4ef78c\u0027"},{"line_number":24,"context_line":"COMPUTE_ID \u003d \u002711940118-bfaf-11e4-9405-bb90ef4ef78cs\u0027"},{"line_number":25,"context_line":"HM_ID \u003d \u00277e92fb70-da67-11e4-9bc4-000c29cbbc7e\u0027"},{"line_number":26,"context_line":"LB_ID \u003d \u00276eb5932a-c3a1-11e4-96d5-876804b16013\u0027"}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_0dab178b","line":23,"updated":"2015-04-27 21:10:35.000000000","message":"uuidutils.generate_uuid()","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from octavia.db import repositories as repo"},{"line_number":21,"context_line":"import octavia.tests.unit.base as base"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"AMP_ID \u003d \u002711940118-bfaf-11e4-9405-bb90ef4ef78c\u0027"},{"line_number":24,"context_line":"COMPUTE_ID \u003d \u002711940118-bfaf-11e4-9405-bb90ef4ef78cs\u0027"},{"line_number":25,"context_line":"HM_ID \u003d \u00277e92fb70-da67-11e4-9bc4-000c29cbbc7e\u0027"},{"line_number":26,"context_line":"LB_ID \u003d \u00276eb5932a-c3a1-11e4-96d5-876804b16013\u0027"}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_a392f855","line":23,"in_reply_to":"7ad32947_0dab178b","updated":"2015-04-28 21:43:03.000000000","message":"Done","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/tests/unit/controller/worker/tasks/test_network_tasks.py":[{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"AMPHORA_ID \u003d 7"},{"line_number":25,"context_line":"COMPUTE_ID \u003d \u0027e3c36e9e-e9e4-11e4-bf8c-231d576beab3\u0027"},{"line_number":26,"context_line":"PORT_ID \u003d \u002711940118-bfaf-11e4-9405-bb90ef4ef78c\u0027"},{"line_number":27,"context_line":"NETWORK_ID \u003d \u002711940118-bfaf-11e4-9405-bb90ef4ef712\u0027"},{"line_number":28,"context_line":"IP_ADDRESS \u003d \"172.24.41.1\""}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_cd951f41","line":25,"updated":"2015-04-27 21:10:35.000000000","message":"uuidutils.generate_uuid()","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"AMPHORA_ID \u003d 7"},{"line_number":25,"context_line":"COMPUTE_ID \u003d \u0027e3c36e9e-e9e4-11e4-bf8c-231d576beab3\u0027"},{"line_number":26,"context_line":"PORT_ID \u003d \u002711940118-bfaf-11e4-9405-bb90ef4ef78c\u0027"},{"line_number":27,"context_line":"NETWORK_ID \u003d \u002711940118-bfaf-11e4-9405-bb90ef4ef712\u0027"},{"line_number":28,"context_line":"IP_ADDRESS \u003d \"172.24.41.1\""}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_8376dc3c","line":25,"in_reply_to":"7ad32947_cd951f41","updated":"2015-04-28 21:43:03.000000000","message":"Done","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"octavia/tests/unit/controller/worker/test_controller_worker.py":[{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"6d37ead0b31b7f9288b6c16c204d9211555deb5a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from octavia.controller.worker import controller_worker"},{"line_number":21,"context_line":"import octavia.tests.unit.base as base"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"AMP_ID \u003d \u0027ee2f5692-c043-11e4-81e6-372c5231ce92\u0027"},{"line_number":24,"context_line":"LB_ID \u003d \u00278db1d204-c688-11e4-80d6-936c33af718d\u0027"},{"line_number":25,"context_line":"POOL_ID \u003d \u002743c7928a-d288-11e4-9c66-3ffe75fc24ae\u0027"},{"line_number":26,"context_line":"HM_ID \u003d \u002710304010-d41e-11e4-a855-977e643c4024\u0027"}],"source_content_type":"text/x-python","patch_set":35,"id":"7ad32947_ad92e355","line":23,"updated":"2015-04-27 21:10:35.000000000","message":"uuidutils.generate_uuid()","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f25f013eed51a642c5165023246275f5189e3a5d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from octavia.controller.worker import controller_worker"},{"line_number":21,"context_line":"import octavia.tests.unit.base as base"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"AMP_ID \u003d \u0027ee2f5692-c043-11e4-81e6-372c5231ce92\u0027"},{"line_number":24,"context_line":"LB_ID \u003d \u00278db1d204-c688-11e4-80d6-936c33af718d\u0027"},{"line_number":25,"context_line":"POOL_ID \u003d \u002743c7928a-d288-11e4-9c66-3ffe75fc24ae\u0027"},{"line_number":26,"context_line":"HM_ID \u003d \u002710304010-d41e-11e4-a855-977e643c4024\u0027"}],"source_content_type":"text/x-python","patch_set":35,"id":"5ad0253b_e39d905a","line":23,"in_reply_to":"7ad32947_ad92e355","updated":"2015-04-28 21:43:03.000000000","message":"Done","commit_id":"92da7a4f8d5d79d925b2d86f68fe3258e735c685"}],"setup.cfg":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"57ce7a949cd6bdcef533f54cf15e573bdb4097d5","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    compute_nova_driver \u003d octavia.compute.drivers.nova_driver:VirtualMachineManager"},{"line_number":43,"context_line":"octavia.network.drivers \u003d"},{"line_number":44,"context_line":"    network_noop_driver \u003d octavia.network.drivers.noop_driver.driver:NoopNetworkDriver"},{"line_number":45,"context_line":"    allowd_address_pairs_driver \u003d octavia.network.drivers.neutron.allowed_address_pairs:AllowedAddressPairsDriver"}],"source_content_type":"text/x-ttcn-cfg","patch_set":34,"id":"bab921fb_00da3c17","line":45,"updated":"2015-04-27 05:43:51.000000000","message":"typo: allowd to allowed","commit_id":"80b497e00a48ba6be27dbe61cf8a1bbf0db43fb7"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2eea3977324d3ab69bcb47c09d821a20daa7e746","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    compute_nova_driver \u003d octavia.compute.drivers.nova_driver:VirtualMachineManager"},{"line_number":43,"context_line":"octavia.network.drivers \u003d"},{"line_number":44,"context_line":"    network_noop_driver \u003d octavia.network.drivers.noop_driver.driver:NoopNetworkDriver"},{"line_number":45,"context_line":"    allowd_address_pairs_driver \u003d octavia.network.drivers.neutron.allowed_address_pairs:AllowedAddressPairsDriver"}],"source_content_type":"text/x-ttcn-cfg","patch_set":34,"id":"7ad32947_91ce2b59","line":45,"in_reply_to":"bab921fb_00da3c17","updated":"2015-04-27 18:10:05.000000000","message":"Done","commit_id":"80b497e00a48ba6be27dbe61cf8a1bbf0db43fb7"}]}
