)]}'
{"openstack/compute/v2/_proxy.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"3fbbb88ba4afc7f365bc52863bcf528b4ae5ed7c","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    def update_server(self, **data):"},{"line_number":140,"context_line":"        return server.Server(data).update(self.session)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def wait_for_server(self, value, status\u003d\u0027ACTIVE\u0027, failures\u003d[\u0027ERROR\u0027],"},{"line_number":143,"context_line":"                        interval\u003d2, wait\u003d120):"},{"line_number":144,"context_line":"        return resource.wait_for_status(self.session, value, status,"},{"line_number":145,"context_line":"                                        failures, interval, wait)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_f53c1c31","line":142,"updated":"2015-04-20 14:55:50.000000000","message":"My first pass I had no idea that \u0027value\u0027 was the resource.  In this instance, server might be better although there is a scope issue with that.","commit_id":"b649bac022297afa32e5230d0064250e91a92832"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"ab4562dc85a29158fc8d5ffeb3282bb39afe33fc","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    def update_server(self, **data):"},{"line_number":140,"context_line":"        return server.Server(data).update(self.session)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def wait_for_server(self, value, status\u003d\u0027ACTIVE\u0027, failures\u003d[\u0027ERROR\u0027],"},{"line_number":143,"context_line":"                        interval\u003d2, wait\u003d120):"},{"line_number":144,"context_line":"        return resource.wait_for_status(self.session, value, status,"},{"line_number":145,"context_line":"                                        failures, interval, wait)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_c963afb0","line":142,"in_reply_to":"dac4157f_1e732d82","updated":"2015-04-20 22:07:09.000000000","message":"Yep. If you call it server, it shadows the module name.\n\nI don\u0027t care what it\u0027s called all that much. I definitely do want it to be consistent with what it\u0027s called elsewhere in the file though. I chatted with Brian on IRC about it and he mentioned \u0027value\u0027 because that\u0027s what he was using so that\u0027s what I used.\n\nI\u0027ll leave it as \u0027value\u0027 for now. If a different name is agreed on, I\u0027m happy to change it here too.\n\nHmmm....what about \u0027server_\u0027 or would that be an abuse of the use of a trailing underscore as described in pep8?","commit_id":"b649bac022297afa32e5230d0064250e91a92832"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"30480260bc2c0e191ceb604ecf29922f6b4da257","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    def update_server(self, **data):"},{"line_number":140,"context_line":"        return server.Server(data).update(self.session)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def wait_for_server(self, value, status\u003d\u0027ACTIVE\u0027, failures\u003d[\u0027ERROR\u0027],"},{"line_number":143,"context_line":"                        interval\u003d2, wait\u003d120):"},{"line_number":144,"context_line":"        return resource.wait_for_status(self.session, value, status,"},{"line_number":145,"context_line":"                                        failures, interval, wait)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_7dcd545c","line":142,"in_reply_to":"dac4157f_c963afb0","updated":"2015-04-21 19:21:04.000000000","message":"So trailing underscores like that are generally reserved for *really* good reasons. We can also modify the import above to do\n\n    from openstack.compute.v2 import server as server_api\n\nWhich would avoid conflicts in the future (since I\u0027m failing to see what conflicts it would cause in this context).","commit_id":"b649bac022297afa32e5230d0064250e91a92832"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"a9c153e5ccd833dd97141e95ec1daaedc63ccd28","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    def update_server(self, **data):"},{"line_number":140,"context_line":"        return server.Server(data).update(self.session)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def wait_for_server(self, value, status\u003d\u0027ACTIVE\u0027, failures\u003d[\u0027ERROR\u0027],"},{"line_number":143,"context_line":"                        interval\u003d2, wait\u003d120):"},{"line_number":144,"context_line":"        return resource.wait_for_status(self.session, value, status,"},{"line_number":145,"context_line":"                                        failures, interval, wait)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_1e732d82","line":142,"in_reply_to":"dac4157f_f53c1c31","updated":"2015-04-20 15:17:13.000000000","message":"I see Brian was using \u0027value\u0027 in his delete changes and I didn\u0027t find that confusing for some reason","commit_id":"b649bac022297afa32e5230d0064250e91a92832"}],"openstack/orchestration/v1/_proxy.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"3fbbb88ba4afc7f365bc52863bcf528b4ae5ed7c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def delete_stack(self, **data):"},{"line_number":33,"context_line":"        return stack.Stack(data).delete(self.session)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def wait_for_stack(self, value, status\u003d\u0027CREATE_COMPLETE\u0027,"},{"line_number":36,"context_line":"                       failures\u003d[\u0027CREATE_FAILED\u0027], interval\u003d2, wait\u003d120):"},{"line_number":37,"context_line":"        return resource.wait_for_status(self.session, value, status,"},{"line_number":38,"context_line":"                                        failures, interval, wait)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_f523fc03","line":35,"updated":"2015-04-20 14:55:50.000000000","message":"Again, value is too generic a name for me.","commit_id":"b649bac022297afa32e5230d0064250e91a92832"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"ab4562dc85a29158fc8d5ffeb3282bb39afe33fc","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def delete_stack(self, **data):"},{"line_number":33,"context_line":"        return stack.Stack(data).delete(self.session)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def wait_for_stack(self, value, status\u003d\u0027CREATE_COMPLETE\u0027,"},{"line_number":36,"context_line":"                       failures\u003d[\u0027CREATE_FAILED\u0027], interval\u003d2, wait\u003d120):"},{"line_number":37,"context_line":"        return resource.wait_for_status(self.session, value, status,"},{"line_number":38,"context_line":"                                        failures, interval, wait)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_e90553c2","line":35,"in_reply_to":"dac4157f_f523fc03","updated":"2015-04-20 22:07:09.000000000","message":"Same response as in /openstack/compute/v2/_proxy.py","commit_id":"b649bac022297afa32e5230d0064250e91a92832"}],"openstack/resource.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"3fbbb88ba4afc7f365bc52863bcf528b4ae5ed7c","unresolved":false,"context_lines":[{"line_number":944,"context_line":"        return None"},{"line_number":945,"context_line":""},{"line_number":946,"context_line":""},{"line_number":947,"context_line":"def wait_for_status(session, resource, status\u003dNone, failures\u003dNone,"},{"line_number":948,"context_line":"                    interval\u003d5, wait\u003d120):"},{"line_number":949,"context_line":"    \"\"\"Wait for the server to be in some status."},{"line_number":950,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_3814c9f3","line":947,"updated":"2015-04-20 14:55:50.000000000","message":"The whole function vs. method of a resource, I don\u0027t understand all the pros and cons of each approach.  If it is only the import name, it would just be server.wait_for_status(...) if it was a Resource method.  There wouldn\u0027t be a need import resource to access it.","commit_id":"b649bac022297afa32e5230d0064250e91a92832"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"ab4562dc85a29158fc8d5ffeb3282bb39afe33fc","unresolved":false,"context_lines":[{"line_number":944,"context_line":"        return None"},{"line_number":945,"context_line":""},{"line_number":946,"context_line":""},{"line_number":947,"context_line":"def wait_for_status(session, resource, status\u003dNone, failures\u003dNone,"},{"line_number":948,"context_line":"                    interval\u003d5, wait\u003d120):"},{"line_number":949,"context_line":"    \"\"\"Wait for the server to be in some status."},{"line_number":950,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_acd1a9cf","line":947,"in_reply_to":"dac4157f_3814c9f3","updated":"2015-04-20 22:07:09.000000000","message":"Being able to do server.wait_for_status() without an extra import is kind of nice. But having it as resource.Resource.wait_for_status() signals to me that every resource has a status and you can wait for it, which is false. \n\nWhat about this? For the base resource we have\n\n    resource.Resource._wait_for_status()\n\nThe leading underscore indicating that this method shouldn\u0027t be used directly (since a resource might not have a status) [1]. \n\nThis method would be exposed in the sub-resources properly as\n\n    server.Server.wait_for_status()\n    stack.Stack.wait_for_status()\n\nWhich would call super(Server, self)._wait_for_status().\n\nTo me that\u0027s a cleaner approach. Thoughts?\n\n[1] I\u0027m going with this as what the leading underscore means to make the method non-public.\n\nhttps://www.python.org/dev/peps/pep-0008/#method-names-and-instance-variables","commit_id":"b649bac022297afa32e5230d0064250e91a92832"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"3fbbb88ba4afc7f365bc52863bcf528b4ae5ed7c","unresolved":false,"context_lines":[{"line_number":946,"context_line":""},{"line_number":947,"context_line":"def wait_for_status(session, resource, status\u003dNone, failures\u003dNone,"},{"line_number":948,"context_line":"                    interval\u003d5, wait\u003d120):"},{"line_number":949,"context_line":"    \"\"\"Wait for the server to be in some status."},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"    :param resource: TODO"},{"line_number":952,"context_line":"    :type resource: :class:`~openstack.resource.Resource`"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_95604037","line":949,"updated":"2015-04-20 14:55:50.000000000","message":"s/server/resource","commit_id":"b649bac022297afa32e5230d0064250e91a92832"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"ab4562dc85a29158fc8d5ffeb3282bb39afe33fc","unresolved":false,"context_lines":[{"line_number":946,"context_line":""},{"line_number":947,"context_line":"def wait_for_status(session, resource, status\u003dNone, failures\u003dNone,"},{"line_number":948,"context_line":"                    interval\u003d5, wait\u003d120):"},{"line_number":949,"context_line":"    \"\"\"Wait for the server to be in some status."},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"    :param resource: TODO"},{"line_number":952,"context_line":"    :type resource: :class:`~openstack.resource.Resource`"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_6cdcb1e4","line":949,"in_reply_to":"dac4157f_95604037","updated":"2015-04-20 22:07:09.000000000","message":"Will be fixed in the next patch set.","commit_id":"b649bac022297afa32e5230d0064250e91a92832"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"3fbbb88ba4afc7f365bc52863bcf528b4ae5ed7c","unresolved":false,"context_lines":[{"line_number":948,"context_line":"                    interval\u003d5, wait\u003d120):"},{"line_number":949,"context_line":"    \"\"\"Wait for the server to be in some status."},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"    :param resource: TODO"},{"line_number":952,"context_line":"    :type resource: :class:`~openstack.resource.Resource`"},{"line_number":953,"context_line":"    :param session: The session to use for making this request."},{"line_number":954,"context_line":"    :type session: :class:`~openstack.session.Session`"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_556d0803","line":951,"updated":"2015-04-20 14:55:50.000000000","message":"s/TODO/resource that we are waiting for a status change/ or something like that.","commit_id":"b649bac022297afa32e5230d0064250e91a92832"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"ab4562dc85a29158fc8d5ffeb3282bb39afe33fc","unresolved":false,"context_lines":[{"line_number":948,"context_line":"                    interval\u003d5, wait\u003d120):"},{"line_number":949,"context_line":"    \"\"\"Wait for the server to be in some status."},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"    :param resource: TODO"},{"line_number":952,"context_line":"    :type resource: :class:`~openstack.resource.Resource`"},{"line_number":953,"context_line":"    :param session: The session to use for making this request."},{"line_number":954,"context_line":"    :type session: :class:`~openstack.session.Session`"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_ecee818a","line":951,"in_reply_to":"dac4157f_556d0803","updated":"2015-04-20 22:07:09.000000000","message":"Will be fixed in the next patch set.","commit_id":"b649bac022297afa32e5230d0064250e91a92832"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"3fbbb88ba4afc7f365bc52863bcf528b4ae5ed7c","unresolved":false,"context_lines":[{"line_number":975,"context_line":"        resource.get(session)"},{"line_number":976,"context_line":"        if resource.status \u003d\u003d status:"},{"line_number":977,"context_line":"            return resource"},{"line_number":978,"context_line":"        if resource.status in failures:"},{"line_number":979,"context_line":"            msg \u003d (\"Resource %s transitioned to failure state %s\" %"},{"line_number":980,"context_line":"                   (resource.id, resource.status))"},{"line_number":981,"context_line":"            raise exceptions.ResourceFailure(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_58abfd89","line":978,"updated":"2015-04-20 14:55:50.000000000","message":"In theory, we could rename the method wait_for and pass in an attribute name to get.  In that case the method argument would become something like state.","commit_id":"b649bac022297afa32e5230d0064250e91a92832"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"ab4562dc85a29158fc8d5ffeb3282bb39afe33fc","unresolved":false,"context_lines":[{"line_number":975,"context_line":"        resource.get(session)"},{"line_number":976,"context_line":"        if resource.status \u003d\u003d status:"},{"line_number":977,"context_line":"            return resource"},{"line_number":978,"context_line":"        if resource.status in failures:"},{"line_number":979,"context_line":"            msg \u003d (\"Resource %s transitioned to failure state %s\" %"},{"line_number":980,"context_line":"                   (resource.id, resource.status))"},{"line_number":981,"context_line":"            raise exceptions.ResourceFailure(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_8c402558","line":978,"in_reply_to":"dac4157f_58abfd89","updated":"2015-04-20 22:07:09.000000000","message":"I\u0027m very hesitant to make this function more generic without a very concrete use case for that. \n\nwait_for_status is an extremely common \"wait for\" condition. I think we would always want to have this as a convenience method.\n\nIf there was a real need for a generic function that can wait on any attribute we could create a method for it called wait_for (or whatever) alongside wait_for_status and change the implementation of wait_for_status to call wait_for.","commit_id":"b649bac022297afa32e5230d0064250e91a92832"}],"openstack/tests/unit/test_resource.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"3fbbb88ba4afc7f365bc52863bcf528b4ae5ed7c","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from testtools import matchers"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from openstack.compute.v2 import flavor"},{"line_number":21,"context_line":"from openstack.compute.v2 import server"},{"line_number":22,"context_line":"from openstack import exceptions"},{"line_number":23,"context_line":"from openstack import format"},{"line_number":24,"context_line":"from openstack import resource"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_381169ad","line":21,"updated":"2015-04-20 14:55:50.000000000","message":"It\u0027d be kind of nice to just use some test resources.","commit_id":"b649bac022297afa32e5230d0064250e91a92832"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"ab4562dc85a29158fc8d5ffeb3282bb39afe33fc","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from testtools import matchers"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from openstack.compute.v2 import flavor"},{"line_number":21,"context_line":"from openstack.compute.v2 import server"},{"line_number":22,"context_line":"from openstack import exceptions"},{"line_number":23,"context_line":"from openstack import format"},{"line_number":24,"context_line":"from openstack import resource"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_b72b3682","line":21,"in_reply_to":"dac4157f_381169ad","updated":"2015-04-20 22:07:09.000000000","message":"I\u0027m not totally sure what you mean. Example?","commit_id":"b649bac022297afa32e5230d0064250e91a92832"}],"openstack/utils.py":[{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"5fae6e99cbaaf933177dbb359a5716f57956d3e4","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    return \u0027/\u0027.join(str(a or \u0027\u0027).strip(\u0027/\u0027) for a in args)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"def wait_for_status(resource, session, status\u003dNone, failures\u003dNone,"},{"line_number":66,"context_line":"                    interval\u003d5, wait\u003d120):"},{"line_number":67,"context_line":"    \"\"\"Wait for the server to be in some status."},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3ab451fb_0a4c0041","line":65,"updated":"2015-04-17 17:56:33.000000000","message":"I\u0027m not necessarily crazy about this function being in utils. It could definitely be a slippery slope into making this a dumping ground. Would we want to create resource_utils module?","commit_id":"b50861c3f30f80b922c217210e78d1064e19629b"}]}
