)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"eafa31770f523961330668c58f3b1038f0d6b1bd","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Giampaolo Lauria \u003clauria@us.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-03-15 14:59:37 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove unnecessary check in apy.py"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Remove checks to make sure instance is in running state"},{"line_number":10,"context_line":"when adding or removing security groups to/from an"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAN3%2F%2FtTY%3D","line":7,"updated":"2013-03-15 19:17:10.000000000","message":"api.py","commit_id":"2b7aa4be2cec035d19e4f35baa8fe3926a284c93"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"a1a77a89cf8546332139248a7c3aba3648017acb","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove unnecessary checks in api.py"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Remove checks to make sure instance is in running state"},{"line_number":10,"context_line":"when adding or removing security groups to/from an"},{"line_number":11,"context_line":"instance."},{"line_number":12,"context_line":"Modified unit test accordingly"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAOH%2F%2F%2BkQ%3D","line":9,"updated":"2013-03-18 18:54:09.000000000","message":"can you please change this line to \"Removed existing check that ensured instance was running\"?","commit_id":"cbebebd729fbf763d8376c817b61a8012cc632c2"}],"nova/tests/api/openstack/compute/contrib/test_security_groups.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"981bee358733cbdd99f4ec99f5e9e7a389e8cc4d","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"def return_non_running_server(context, server_id):"},{"line_number":96,"context_line":"    return {\u0027id\u0027: server_id, \u0027power_state\u0027: 0x02, \u0027uuid\u0027: FAKE_UUID,"},{"line_number":97,"context_line":"            \u0027host\u0027: \"localhost\", \u0027name\u0027: \u0027asdf\u0027}"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAN3%2F%2FtCQ%3D","side":"PARENT","line":96,"updated":"2013-03-15 23:39:22.000000000","message":"should power_state be defined by something in computer.power_state like SUSPENDED or NOSTATE rather than a hardcoded value?","commit_id":"11f65872503e1779ece1d5f83a19627b23267235"},{"author":{"_account_id":4598,"name":"Giampaolo Lauria","email":"lauria@us.ibm.com","username":"lauria"},"change_message_id":"1e641523b90507c0e05419051ca53942be56670d","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"def return_non_running_server(context, server_id):"},{"line_number":96,"context_line":"    return {\u0027id\u0027: server_id, \u0027power_state\u0027: 0x02, \u0027uuid\u0027: FAKE_UUID,"},{"line_number":97,"context_line":"            \u0027host\u0027: \"localhost\", \u0027name\u0027: \u0027asdf\u0027}"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAN3%2F%2FtBc%3D","side":"PARENT","line":96,"in_reply_to":"AAAAN3%2F%2FtCQ%3D","updated":"2013-03-15 23:58:26.000000000","message":"Hi Chris, I am removing this code as part of my patch, and so am not sure what you are asking me to do.\nThanks.","commit_id":"11f65872503e1779ece1d5f83a19627b23267235"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"ff9cc776a506e4c3ef599fad00d5437ac1b60a72","unresolved":false,"context_lines":[{"line_number":518,"context_line":"        body \u003d dict(addSecurityGroup\u003ddict(name\u003d\"test\"))"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/servers/1/action\u0027)"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"    def test_associate_already_associated_security_group_to_instance(self):"},{"line_number":523,"context_line":"        self.stubs.Set(nova.db, \u0027instance_get\u0027, return_server)"},{"line_number":524,"context_line":"        self.stubs.Set(nova.db, \u0027instance_get_by_uuid\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOH%2F%2F%2B%2BQ%3D","line":521,"updated":"2013-03-18 13:58:11.000000000","message":"you are not asserting your result.. I mean: you should do the call for the controller using the body you created above, and assert the the security group is created even with the instance in a weird state","commit_id":"9812789f6dfcbf2ad84e1973d731c53c3f344914"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"ff9cc776a506e4c3ef599fad00d5437ac1b60a72","unresolved":false,"context_lines":[{"line_number":611,"context_line":"        body \u003d dict(removeSecurityGroup\u003ddict(name\u003d\"test\"))"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/servers/1/action\u0027)"},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"    def test_disassociate_already_associated_security_group_to_instance(self):"},{"line_number":616,"context_line":"        self.stubs.Set(nova.db, \u0027instance_get\u0027, return_server)"},{"line_number":617,"context_line":"        self.stubs.Set(nova.db, \u0027instance_get_by_uuid\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOH%2F%2F%2B%2BM%3D","line":614,"updated":"2013-03-18 13:58:11.000000000","message":"ditto","commit_id":"9812789f6dfcbf2ad84e1973d731c53c3f344914"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"6e053c1527409a93935f0a7efc1a0582c831b970","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            \u0027name\u0027: \u0027asdf\u0027}"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"def return_non_running_server(context, server_id):"},{"line_number":96,"context_line":"    return {\u0027id\u0027: server_id, \u0027power_state\u0027: 0x02, \u0027uuid\u0027: FAKE_UUID,"},{"line_number":97,"context_line":"            \u0027host\u0027: \"localhost\", \u0027name\u0027: \u0027asdf\u0027}"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOH%2F%2F5ZA%3D","line":95,"updated":"2013-03-21 19:40:52.000000000","message":"While updating this code.  The power_state should be changed to \n SHUTDOWN \u003d 0x04  # the VM is powered off\nor \n CRASHED \u003d 0x06\n\nAs 0x02 (BLOCKED) was removed in change I586b9058fada5efd468870fb187590fc0e37aa8f","commit_id":"b31a89ad575064193e8db35547b6217b76ca2ba0"},{"author":{"_account_id":191,"name":"Trey Morris","email":"trey.morris@rackspace.com","username":"tr3buchet"},"change_message_id":"5d0bd199d71ecc0d9956cf224770ec708e88e795","unresolved":false,"context_lines":[{"line_number":518,"context_line":"        body \u003d dict(addSecurityGroup\u003ddict(name\u003d\"test\"))"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/servers/1/action\u0027)"},{"line_number":521,"context_line":"        self.manager._addSecurityGroup(req, \u00271\u0027, body)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"    def test_associate_already_associated_security_group_to_instance(self):"},{"line_number":524,"context_line":"        self.stubs.Set(nova.db, \u0027instance_get\u0027, return_server)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOH%2F%2F%2BPI%3D","line":521,"updated":"2013-03-18 21:19:32.000000000","message":"does this test still have any value if we allow it running or not?","commit_id":"b31a89ad575064193e8db35547b6217b76ca2ba0"},{"author":{"_account_id":4598,"name":"Giampaolo Lauria","email":"lauria@us.ibm.com","username":"lauria"},"change_message_id":"3fcbe314273689d7d925b1b3a6df6b7e69b1648e","unresolved":false,"context_lines":[{"line_number":518,"context_line":"        body \u003d dict(addSecurityGroup\u003ddict(name\u003d\"test\"))"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/servers/1/action\u0027)"},{"line_number":521,"context_line":"        self.manager._addSecurityGroup(req, \u00271\u0027, body)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"    def test_associate_already_associated_security_group_to_instance(self):"},{"line_number":524,"context_line":"        self.stubs.Set(nova.db, \u0027instance_get\u0027, return_server)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOH%2F%2F7vQ%3D","line":521,"in_reply_to":"AAAAOH%2F%2F%2BL8%3D","updated":"2013-03-20 12:52:14.000000000","message":"Hi Joe, let me run some tests...","commit_id":"b31a89ad575064193e8db35547b6217b76ca2ba0"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"2058d413945fd43d6432102a1254f088126734bb","unresolved":false,"context_lines":[{"line_number":518,"context_line":"        body \u003d dict(addSecurityGroup\u003ddict(name\u003d\"test\"))"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/servers/1/action\u0027)"},{"line_number":521,"context_line":"        self.manager._addSecurityGroup(req, \u00271\u0027, body)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"    def test_associate_already_associated_security_group_to_instance(self):"},{"line_number":524,"context_line":"        self.stubs.Set(nova.db, \u0027instance_get\u0027, return_server)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOH%2F%2F%2BL8%3D","line":521,"in_reply_to":"AAAAOH%2F%2F%2BPI%3D","updated":"2013-03-18 21:47:58.000000000","message":"Although I am not sure if this is the correct implementation of the test, it looks like a a valid test.  And this changes the result of the test.  \n\nIf a user tries to add a security group to a non_running instance (non-existant or otherwise) what happens in the REST API?","commit_id":"b31a89ad575064193e8db35547b6217b76ca2ba0"},{"author":{"_account_id":4598,"name":"Giampaolo Lauria","email":"lauria@us.ibm.com","username":"lauria"},"change_message_id":"80781997ae3ab33f62878c9bbc79394746559893","unresolved":false,"context_lines":[{"line_number":518,"context_line":"        body \u003d dict(addSecurityGroup\u003ddict(name\u003d\"test\"))"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/servers/1/action\u0027)"},{"line_number":521,"context_line":"        self.manager._addSecurityGroup(req, \u00271\u0027, body)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"    def test_associate_already_associated_security_group_to_instance(self):"},{"line_number":524,"context_line":"        self.stubs.Set(nova.db, \u0027instance_get\u0027, return_server)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOH%2F%2F4Jo%3D","line":521,"in_reply_to":"AAAAOH%2F%2F5Yw%3D","updated":"2013-03-22 14:26:29.000000000","message":"In the error states, the API will still return a 202.\nI will push another patch to change the error state above.","commit_id":"b31a89ad575064193e8db35547b6217b76ca2ba0"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"6e053c1527409a93935f0a7efc1a0582c831b970","unresolved":false,"context_lines":[{"line_number":518,"context_line":"        body \u003d dict(addSecurityGroup\u003ddict(name\u003d\"test\"))"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/servers/1/action\u0027)"},{"line_number":521,"context_line":"        self.manager._addSecurityGroup(req, \u00271\u0027, body)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"    def test_associate_already_associated_security_group_to_instance(self):"},{"line_number":524,"context_line":"        self.stubs.Set(nova.db, \u0027instance_get\u0027, return_server)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOH%2F%2F5Yw%3D","line":521,"in_reply_to":"AAAAOH%2F%2F5cM%3D","updated":"2013-03-21 19:40:52.000000000","message":"So is this case unreachable from the REST API?  What about if the VM exists but is in an error state (see comment above).  \n\nI am just trying to better understand how this patch changes the REST API.","commit_id":"b31a89ad575064193e8db35547b6217b76ca2ba0"},{"author":{"_account_id":4598,"name":"Giampaolo Lauria","email":"lauria@us.ibm.com","username":"lauria"},"change_message_id":"8a2c4deb6ec347572e505967d882a66b974e55c7","unresolved":false,"context_lines":[{"line_number":518,"context_line":"        body \u003d dict(addSecurityGroup\u003ddict(name\u003d\"test\"))"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/servers/1/action\u0027)"},{"line_number":521,"context_line":"        self.manager._addSecurityGroup(req, \u00271\u0027, body)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"    def test_associate_already_associated_security_group_to_instance(self):"},{"line_number":524,"context_line":"        self.stubs.Set(nova.db, \u0027instance_get\u0027, return_server)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOH%2F%2F5cM%3D","line":521,"in_reply_to":"AAAAOH%2F%2F7vQ%3D","updated":"2013-03-21 19:17:20.000000000","message":"Joe,\nIn cases where the instance does not exist, the API will trow an exception indicating the instance does not exist:\nexcept exception.InstanceNotFound as exp:\n            raise exc.HTTPNotFound(explanation\u003dunicode(exp))\n\nIf the instance exists, the API will return a 202 regardless of its state.\n\nIs this the type of answer you are looking for? Thanks","commit_id":"b31a89ad575064193e8db35547b6217b76ca2ba0"}]}
