)]}'
{"novaclient/tests/unit/v2/test_services.py":[{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"700e50ef70b004cc0b93b66c65c53902ae897f5c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            self.assertEqual(\u0027nova-cert\u0027, s.binary)"},{"line_number":65,"context_line":"            self.assertEqual(\u0027host2\u0027, s.host)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def _update_body(self, host, binary, disabled_reason\u003dNone,"},{"line_number":68,"context_line":"                     force_down\u003dNone):"},{"line_number":69,"context_line":"        body \u003d {\"host\": host,"},{"line_number":70,"context_line":"                \"binary\": binary}"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_a10a4388","line":67,"updated":"2015-08-07 01:36:19.000000000","message":"Undoing this change, and moving into a \"ServicesV211TestCase(ServicesTest)\" class.","commit_id":"df27301bc2c1d29fffa33ea5f442af06a65c4309"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"700e50ef70b004cc0b93b66c65c53902ae897f5c","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        self.assertIsInstance(service, self._get_service_type())"},{"line_number":102,"context_line":"        self.assertEqual(\u0027disabled\u0027, service.status)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def test_services_force_down(self):"},{"line_number":105,"context_line":"        service \u003d self.cs.services.force_down("},{"line_number":106,"context_line":"            \u0027compute1\u0027, \u0027nova-compute\u0027, False)"},{"line_number":107,"context_line":"        values \u003d self._update_body(\"compute1\", \"nova-compute\","}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_61375b4d","line":104,"updated":"2015-08-07 01:36:19.000000000","message":"This method will be moved into a new class with the following code:\n\n    class ServicesV211TestCase(ServicesTest):\n        def setUp(self):\n            super(ServicesV211TestCase, self).setUp()\n            self.cs.api_version \u003d api_versions.APIVersion(\"2.11\")\n\n        def _update_body(self, host, binary, disabled_reason\u003dNone,\n                         force_down\u003dNone):\n            [...]\n\n        def test_services_force_down(self):\n            [...]","commit_id":"df27301bc2c1d29fffa33ea5f442af06a65c4309"}],"novaclient/v2/services.py":[{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"700e50ef70b004cc0b93b66c65c53902ae897f5c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            url \u003d \"%s?%s\" % (url, \"\u0026\".join(filters))"},{"line_number":49,"context_line":"        return self._list(url, \"services\")"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _update_body(self, host, binary, disabled_reason\u003dNone,"},{"line_number":52,"context_line":"                     force_down\u003dNone):"},{"line_number":53,"context_line":"        body \u003d {\"host\": host,"},{"line_number":54,"context_line":"                \"binary\": binary}"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_be925ef4","line":51,"updated":"2015-08-07 01:36:19.000000000","message":"This method will also need to be decorated with the microversion wrap, ending up with two methods:\n\n    @api_versions.wraps(\"2.0\", \"2.10\")\n    def _update_body(self, host, binary, disabled_reason\u003dNone):\n\nand\n\n    @api_versions.wraps(\"2.11\")\n    def _update_body(self, host, binary, disabled_reason\u003dNone,\n                     force_down\u003dNone):","commit_id":"df27301bc2c1d29fffa33ea5f442af06a65c4309"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"40b32fa0dbb9da61b653124f6fa05ea02233fc6d","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    def delete(self, service_id):"},{"line_number":77,"context_line":"        \"\"\"Delete a service.\"\"\""},{"line_number":78,"context_line":"        return self._delete(\"/os-services/%s\" % service_id)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def force_down(self, host, binary, force_down\u003dNone):"},{"line_number":81,"context_line":"        \"\"\"Force service state to down specified by hostname and binary.\"\"\""},{"line_number":82,"context_line":"        body \u003d self._update_body(host, binary, force_down\u003dforce_down)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_6453ee17","line":79,"updated":"2015-08-06 23:06:19.000000000","message":"I think you need to decorate this function with the microversion where it becomes available:\n\n @api_versions.wraps(\"2.11\")\n\nSee example https://review.openstack.org/#/c/136458/42/novaclient/v2/keypairs.py,cm","commit_id":"df27301bc2c1d29fffa33ea5f442af06a65c4309"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"700e50ef70b004cc0b93b66c65c53902ae897f5c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    def delete(self, service_id):"},{"line_number":77,"context_line":"        \"\"\"Delete a service.\"\"\""},{"line_number":78,"context_line":"        return self._delete(\"/os-services/%s\" % service_id)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def force_down(self, host, binary, force_down\u003dNone):"},{"line_number":81,"context_line":"        \"\"\"Force service state to down specified by hostname and binary.\"\"\""},{"line_number":82,"context_line":"        body \u003d self._update_body(host, binary, force_down\u003dforce_down)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_5ed31ad5","line":79,"in_reply_to":"1a4dcd0f_6453ee17","updated":"2015-08-07 01:36:19.000000000","message":"Done","commit_id":"df27301bc2c1d29fffa33ea5f442af06a65c4309"}],"novaclient/v2/shell.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ce96b6eaf4fbf132631dd8b39d8951798fc679d0","unresolved":false,"context_lines":[{"line_number":3518,"context_line":"    metavar\u003d\u0027\u003cset\u003e\u0027,"},{"line_number":3519,"context_line":"    help\u003d_(\"Set the force down of service (default true)\"),"},{"line_number":3520,"context_line":"    type\u003dlambda v: strutils.bool_from_string(v, True),"},{"line_number":3521,"context_line":"    default\u003dTrue)"},{"line_number":3522,"context_line":"def do_service_force_down(cs, args):"},{"line_number":3523,"context_line":"    \"\"\"Force service to down.\"\"\""},{"line_number":3524,"context_line":"    result \u003d cs.services.force_down(args.host, args.binary, args.set)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_dfafbce1","line":3521,"updated":"2015-05-27 15:17:57.000000000","message":"Let\u0027s not add boolean flags that take arguments.  Eliminate type and use \"action\u003d\u0027store_true\u0027\" and/or \"action\u003d\u0027store_false\u0027\" depending on what you want to try to do.","commit_id":"59cc67c968f0bb63237fff1688862983bcbc43e5"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"d9545291acff620409aeaa3ba253b9e6ff7667f0","unresolved":false,"context_lines":[{"line_number":3518,"context_line":"    metavar\u003d\u0027\u003cset\u003e\u0027,"},{"line_number":3519,"context_line":"    help\u003d_(\"Set the force down of service (default true)\"),"},{"line_number":3520,"context_line":"    type\u003dlambda v: strutils.bool_from_string(v, True),"},{"line_number":3521,"context_line":"    default\u003dTrue)"},{"line_number":3522,"context_line":"def do_service_force_down(cs, args):"},{"line_number":3523,"context_line":"    \"\"\"Force service to down.\"\"\""},{"line_number":3524,"context_line":"    result \u003d cs.services.force_down(args.host, args.binary, args.set)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_ec950240","line":3521,"in_reply_to":"7a016987_59be3e00","updated":"2015-05-28 15:40:16.000000000","message":"Yes, that\u0027s more what I\u0027m looking for.","commit_id":"59cc67c968f0bb63237fff1688862983bcbc43e5"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"ce1fbfec94076763aab2e0cbce5ef7aae6d41847","unresolved":false,"context_lines":[{"line_number":3518,"context_line":"    metavar\u003d\u0027\u003cset\u003e\u0027,"},{"line_number":3519,"context_line":"    help\u003d_(\"Set the force down of service (default true)\"),"},{"line_number":3520,"context_line":"    type\u003dlambda v: strutils.bool_from_string(v, True),"},{"line_number":3521,"context_line":"    default\u003dTrue)"},{"line_number":3522,"context_line":"def do_service_force_down(cs, args):"},{"line_number":3523,"context_line":"    \"\"\"Force service to down.\"\"\""},{"line_number":3524,"context_line":"    result \u003d cs.services.force_down(args.host, args.binary, args.set)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_59be3e00","line":3521,"in_reply_to":"7a016987_dfafbce1","updated":"2015-05-27 19:41:42.000000000","message":"What do you think of this?\n\n@cliutils.arg(\n    \u0027--unset\u0027,\n    dest\u003d\u0027set\u0027,\n    metavar\u003d\u0027\u003cunset\u003e\u0027,\n    help\u003d_(\"Unset the force down of service\"),\n    action\u003d\u0027store_false\u0027,\n    default\u003dTrue)\n\nIf --unset is passed, \u0027set\u0027 will be False, otherwise will be \u0027True\u0027","commit_id":"59cc67c968f0bb63237fff1688862983bcbc43e5"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"a21b9cd32511ac5933f69057bfb822d1e49d42f0","unresolved":false,"context_lines":[{"line_number":3518,"context_line":"    metavar\u003d\u0027\u003cset\u003e\u0027,"},{"line_number":3519,"context_line":"    help\u003d_(\"Set the force down of service (default true)\"),"},{"line_number":3520,"context_line":"    type\u003dlambda v: strutils.bool_from_string(v, True),"},{"line_number":3521,"context_line":"    default\u003dTrue)"},{"line_number":3522,"context_line":"def do_service_force_down(cs, args):"},{"line_number":3523,"context_line":"    \"\"\"Force service to down.\"\"\""},{"line_number":3524,"context_line":"    result \u003d cs.services.force_down(args.host, args.binary, args.set)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_132873e1","line":3521,"in_reply_to":"7a016987_ec950240","updated":"2015-06-15 10:09:28.000000000","message":"Done","commit_id":"59cc67c968f0bb63237fff1688862983bcbc43e5"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"fd04f0407201c2f2a3684c97b7637f1e1e565a70","unresolved":false,"context_lines":[{"line_number":3536,"context_line":"@cliutils.arg(\u0027binary\u0027, metavar\u003d\u0027\u003cbinary\u003e\u0027, help\u003d_(\u0027Service binary.\u0027))"},{"line_number":3537,"context_line":"@cliutils.arg("},{"line_number":3538,"context_line":"    \u0027--unset\u0027,"},{"line_number":3539,"context_line":"    dest\u003d\u0027set\u0027,"},{"line_number":3540,"context_line":"    help\u003d_(\"Unset the force state down of service\"),"},{"line_number":3541,"context_line":"    action\u003d\u0027store_false\u0027,"},{"line_number":3542,"context_line":"    default\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_36009301","line":3539,"updated":"2015-08-07 16:15:19.000000000","message":"I\u0027ll suggest the name like `force\u0027 or `force_set\u0027 instead of `set\u0027 just to avoid confusion with python type of the same name.","commit_id":"df27301bc2c1d29fffa33ea5f442af06a65c4309"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"2f4b71aa3de1bd9a39d06fb29e412dadd55b4782","unresolved":false,"context_lines":[{"line_number":3536,"context_line":"@cliutils.arg(\u0027binary\u0027, metavar\u003d\u0027\u003cbinary\u003e\u0027, help\u003d_(\u0027Service binary.\u0027))"},{"line_number":3537,"context_line":"@cliutils.arg("},{"line_number":3538,"context_line":"    \u0027--unset\u0027,"},{"line_number":3539,"context_line":"    dest\u003d\u0027set\u0027,"},{"line_number":3540,"context_line":"    help\u003d_(\"Unset the force state down of service\"),"},{"line_number":3541,"context_line":"    action\u003d\u0027store_false\u0027,"},{"line_number":3542,"context_line":"    default\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_f18d5531","line":3539,"in_reply_to":"1a4dcd0f_36009301","updated":"2015-08-07 16:23:09.000000000","message":"Ok, I can do it no problem.","commit_id":"df27301bc2c1d29fffa33ea5f442af06a65c4309"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"40b32fa0dbb9da61b653124f6fa05ea02233fc6d","unresolved":false,"context_lines":[{"line_number":3543,"context_line":"def do_service_force_down(cs, args):"},{"line_number":3544,"context_line":"    \"\"\"Force service to down.\"\"\""},{"line_number":3545,"context_line":"    result \u003d cs.services.force_down(args.host, args.binary, args.set)"},{"line_number":3546,"context_line":"    utils.print_list([result], [\u0027Host\u0027, \u0027Binary\u0027, \u0027Forced down\u0027])"},{"line_number":3547,"context_line":""},{"line_number":3548,"context_line":""},{"line_number":3549,"context_line":"@cliutils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cid\u003e\u0027, help\u003d_(\u0027Id of service.\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_24cc06ba","line":3546,"updated":"2015-08-06 23:06:19.000000000","message":"I think we need something similar here but I\u0027m not sure if we can decorate the entire do_service_force_down or if we have to do it on a private method that calls the cs.services.force_down similar to https://review.openstack.org/#/c/136458/42/novaclient/v2/shell.py,cm\n\nI\u0027m going to add people who know a lot about microversions to this review","commit_id":"df27301bc2c1d29fffa33ea5f442af06a65c4309"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"700e50ef70b004cc0b93b66c65c53902ae897f5c","unresolved":false,"context_lines":[{"line_number":3543,"context_line":"def do_service_force_down(cs, args):"},{"line_number":3544,"context_line":"    \"\"\"Force service to down.\"\"\""},{"line_number":3545,"context_line":"    result \u003d cs.services.force_down(args.host, args.binary, args.set)"},{"line_number":3546,"context_line":"    utils.print_list([result], [\u0027Host\u0027, \u0027Binary\u0027, \u0027Forced down\u0027])"},{"line_number":3547,"context_line":""},{"line_number":3548,"context_line":""},{"line_number":3549,"context_line":"@cliutils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cid\u003e\u0027, help\u003d_(\u0027Id of service.\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_5e147a4b","line":3546,"in_reply_to":"1a4dcd0f_24cc06ba","updated":"2015-08-07 01:36:19.000000000","message":"Done.\n\nYou are right on the need of adding the decorator here. I think I can decorate the entire do_service_force_down because it\u0027s being introduced for the first time, i.e. I\u0027m not adding any new parameter to a previously existing method (because it didn\u0027t exist). I may be wrong, though.","commit_id":"df27301bc2c1d29fffa33ea5f442af06a65c4309"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"fd04f0407201c2f2a3684c97b7637f1e1e565a70","unresolved":false,"context_lines":[{"line_number":3543,"context_line":"def do_service_force_down(cs, args):"},{"line_number":3544,"context_line":"    \"\"\"Force service to down.\"\"\""},{"line_number":3545,"context_line":"    result \u003d cs.services.force_down(args.host, args.binary, args.set)"},{"line_number":3546,"context_line":"    utils.print_list([result], [\u0027Host\u0027, \u0027Binary\u0027, \u0027Forced down\u0027])"},{"line_number":3547,"context_line":""},{"line_number":3548,"context_line":""},{"line_number":3549,"context_line":"@cliutils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cid\u003e\u0027, help\u003d_(\u0027Id of service.\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_766b7b1e","line":3546,"in_reply_to":"1a4dcd0f_5e147a4b","updated":"2015-08-07 16:15:19.000000000","message":"hint: put the api_verisions decorator before cliutils. Otherwise you\u0027ll get the error.","commit_id":"df27301bc2c1d29fffa33ea5f442af06a65c4309"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d303a25c86e772ea709e60bbf04db45d2bad97aa","unresolved":false,"context_lines":[{"line_number":3543,"context_line":"def do_service_force_down(cs, args):"},{"line_number":3544,"context_line":"    \"\"\"Force service to down.\"\"\""},{"line_number":3545,"context_line":"    result \u003d cs.services.force_down(args.host, args.binary, args.set)"},{"line_number":3546,"context_line":"    utils.print_list([result], [\u0027Host\u0027, \u0027Binary\u0027, \u0027Forced down\u0027])"},{"line_number":3547,"context_line":""},{"line_number":3548,"context_line":""},{"line_number":3549,"context_line":"@cliutils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cid\u003e\u0027, help\u003d_(\u0027Id of service.\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_a1cf7a28","line":3546,"in_reply_to":"1a4dcd0f_766b7b1e","updated":"2015-08-07 18:17:18.000000000","message":"\u003ehint: put the api_verisions decorator before cliutils. Otherwise you\u0027ll get the error.\n\nThank you for this hint. https://review.openstack.org/210563 should fix it.","commit_id":"df27301bc2c1d29fffa33ea5f442af06a65c4309"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"2f4b71aa3de1bd9a39d06fb29e412dadd55b4782","unresolved":false,"context_lines":[{"line_number":3543,"context_line":"def do_service_force_down(cs, args):"},{"line_number":3544,"context_line":"    \"\"\"Force service to down.\"\"\""},{"line_number":3545,"context_line":"    result \u003d cs.services.force_down(args.host, args.binary, args.set)"},{"line_number":3546,"context_line":"    utils.print_list([result], [\u0027Host\u0027, \u0027Binary\u0027, \u0027Forced down\u0027])"},{"line_number":3547,"context_line":""},{"line_number":3548,"context_line":""},{"line_number":3549,"context_line":"@cliutils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cid\u003e\u0027, help\u003d_(\u0027Id of service.\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_d1913948","line":3546,"in_reply_to":"1a4dcd0f_766b7b1e","updated":"2015-08-07 16:23:09.000000000","message":"Yes, I put it before :-)","commit_id":"df27301bc2c1d29fffa33ea5f442af06a65c4309"}]}
