)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1f2b672a65d4912c55cabf206d68f9754060c887","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch adds a Octavia (load_balancer) load balancer failover method."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"It also corrects the resource documentation for the Octavia stats resource"},{"line_number":12,"context_line":"classes."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Depends-On: https://review.openstack.org/634344"},{"line_number":15,"context_line":"Change-Id: I7384351a5b59b2d68d6a45c543449815adfe52f2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"9fdfeff1_10fa1e74","line":12,"updated":"2019-02-13 13:09:19.000000000","message":"nit: I\u0027d prefer such changes proposed separately for easier reviewing","commit_id":"41d6d33339d430a5ed033837dd844a36d251129c"}],"doc/source/user/resources/load_balancer/v2/load_balancer.rst":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1f2b672a65d4912c55cabf206d68f9754060c887","unresolved":false,"context_lines":[{"line_number":21,"context_line":"   :members:"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The LoadBalancerFailover Class"},{"line_number":24,"context_line":"------------------------------"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The ``LoadBalancerFailover`` class inherits from"},{"line_number":27,"context_line":":class:`~openstack.resource.Resource`."}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fdfeff1_30f7228e","line":24,"updated":"2019-02-13 13:09:19.000000000","message":"Should we really document this? There is no way I can think of a caller can get an instances of this class.","commit_id":"41d6d33339d430a5ed033837dd844a36d251129c"}],"openstack/load_balancer/v2/_proxy.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1f2b672a65d4912c55cabf206d68f9754060c887","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        :returns: ``None``"},{"line_number":135,"context_line":"        \"\"\""},{"line_number":136,"context_line":"        return self._update(_lb.LoadBalancerFailover, lb_id\u003dname_or_id)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def create_listener(self, **attrs):"},{"line_number":139,"context_line":"        \"\"\"Create a new listener from attributes"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_f0ec3abc","line":136,"updated":"2019-02-13 13:09:19.000000000","message":"nit: s/return // to make sure it actually returns None as documented?","commit_id":"41d6d33339d430a5ed033837dd844a36d251129c"}],"openstack/load_balancer/v2/load_balancer.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1f2b672a65d4912c55cabf206d68f9754060c887","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    #: The ID of the load balancer."},{"line_number":132,"context_line":"    lb_id \u003d resource.URI(\u0027lb_id\u0027)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    # The parent commit method assumes there is a header or body change,"},{"line_number":135,"context_line":"    # which we do not have here. The default _update code path also has no"},{"line_number":136,"context_line":"    # way to pass has_body into this function, so overriding the method here."},{"line_number":137,"context_line":"    def commit(self, session, base_path\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_d0efb6ae","line":134,"updated":"2019-02-13 13:09:19.000000000","message":"To be honest, I don\u0027t really like the approach here. It seems that this whole thing should be a method on on a LoadBalancer, not a dummy object that is not useful otherwise. See baremetal Node for examples of what I\u0027m thinking of.\n\nNot blocking since it can be fixed in a follow-up.","commit_id":"41d6d33339d430a5ed033837dd844a36d251129c"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"687d9ba1734593498fec9325a72b78c7f69de150","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    #: The ID of the load balancer."},{"line_number":132,"context_line":"    lb_id \u003d resource.URI(\u0027lb_id\u0027)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    # The parent commit method assumes there is a header or body change,"},{"line_number":135,"context_line":"    # which we do not have here. The default _update code path also has no"},{"line_number":136,"context_line":"    # way to pass has_body into this function, so overriding the method here."},{"line_number":137,"context_line":"    def commit(self, session, base_path\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_fc2482b1","line":134,"in_reply_to":"9fdfeff1_4a1c0913","updated":"2019-02-20 19:47:13.000000000","message":"I hear the concern - but I think in this case the LoadBalancerFailover resource is primarily just an internal Resource that facilitates the method on the proxy. It could just be a proxy method with no Resource, but if there\u0027s a chance that in the future the action might have an actual resource that can have its status tested, I think this is the right approach. (The senlin folks have a similar construct that we just updated to have a resource like this - but in their case it does actually get returned and can be fetched to track status of the action)","commit_id":"41d6d33339d430a5ed033837dd844a36d251129c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ad9d8a50288ffff1750384d1353bb7bf0ebf16d9","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    #: The ID of the load balancer."},{"line_number":132,"context_line":"    lb_id \u003d resource.URI(\u0027lb_id\u0027)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    # The parent commit method assumes there is a header or body change,"},{"line_number":135,"context_line":"    # which we do not have here. The default _update code path also has no"},{"line_number":136,"context_line":"    # way to pass has_body into this function, so overriding the method here."},{"line_number":137,"context_line":"    def commit(self, session, base_path\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_4a1c0913","line":134,"in_reply_to":"9fdfeff1_b11e53b9","updated":"2019-02-19 10:27:21.000000000","message":"I don\u0027t think it\u0027s related to audience, but rather to the API consistency. The question is whether LoadBalancerFailover is a resource in the API (and then it can be created/viewed/deleted, maybe updated) or just an action on the LoadBalancer resource (similar to Server power on/off). In the former case you should probably use create() instead of commit(). In the latter case you should just expose it on LoadBalancer. I think the current approach is confusing in both cases: you\u0027re updating something that has never been created.","commit_id":"41d6d33339d430a5ed033837dd844a36d251129c"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"3853a8195a010632397cc06cf2b7a5a4bdc7158c","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    #: The ID of the load balancer."},{"line_number":132,"context_line":"    lb_id \u003d resource.URI(\u0027lb_id\u0027)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    # The parent commit method assumes there is a header or body change,"},{"line_number":135,"context_line":"    # which we do not have here. The default _update code path also has no"},{"line_number":136,"context_line":"    # way to pass has_body into this function, so overriding the method here."},{"line_number":137,"context_line":"    def commit(self, session, base_path\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_b11e53b9","line":134,"in_reply_to":"9fdfeff1_d0efb6ae","updated":"2019-02-19 01:49:56.000000000","message":"I think this is cleaner given the audience for LoadBalancer vs. the audience for LoadBalancerFailover.\nThis is not an end-user command, but an admin command.\nIt is also fair to say that this may be expanded with a fetch in the future.","commit_id":"41d6d33339d430a5ed033837dd844a36d251129c"}]}
