)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a6a09f064640897d0592468d466e3ce1612672fe","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2014-08-27 12:35:29 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add preliminary heat support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"BP: https://blueprints.launchpad.net/python-openstackclient/+spec/heat-support"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Id188cdc0e97b480875a7626443f68e69863f0647"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa98f980_e51af96d","line":8,"updated":"2014-09-03 19:42:36.000000000","message":"can you add a bit more of a description, like the fact that you;re just doing stack CRUD and tests.","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"192e78a829cc02ad159158d27ff4c8774e9bde2d","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2014-08-27 12:35:29 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add preliminary heat support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"BP: https://blueprints.launchpad.net/python-openstackclient/+spec/heat-support"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Id188cdc0e97b480875a7626443f68e69863f0647"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa98f980_6bb316e9","line":8,"in_reply_to":"fa98f980_e51af96d","updated":"2014-10-22 14:09:52.000000000","message":"Done","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a6a09f064640897d0592468d466e3ce1612672fe","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add preliminary heat support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"BP: https://blueprints.launchpad.net/python-openstackclient/+spec/heat-support"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Id188cdc0e97b480875a7626443f68e69863f0647"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa98f980_25016105","line":9,"updated":"2014-09-03 19:42:36.000000000","message":"could just use the short name:\n\n  implements bp heat-support","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"192e78a829cc02ad159158d27ff4c8774e9bde2d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add preliminary heat support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"BP: https://blueprints.launchpad.net/python-openstackclient/+spec/heat-support"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Id188cdc0e97b480875a7626443f68e69863f0647"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa98f980_4bb012dd","line":9,"in_reply_to":"fa98f980_25016105","updated":"2014-10-22 14:09:52.000000000","message":"Done","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"}],"openstackclient/orchestration/client.py":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f4df19a9c27d9a8b55ccaef442e250a1c5159de3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#   Copyright 2014 OpenStack, LLC."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_7a53b6e1","line":1,"updated":"2014-08-29 14:13:00.000000000","message":"Even if this were correct it should be OpenStack Foundation","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"192e78a829cc02ad159158d27ff4c8774e9bde2d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#   Copyright 2014 OpenStack, LLC."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_0b160aa8","line":1,"in_reply_to":"1abeadc6_7a53b6e1","updated":"2014-10-22 14:09:52.000000000","message":"Done","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a6a09f064640897d0592468d466e3ce1612672fe","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    \"\"\"Hook to add global options\"\"\""},{"line_number":53,"context_line":"    parser.add_argument("},{"line_number":54,"context_line":"        \u0027--os-orchestration-api-version\u0027,"},{"line_number":55,"context_line":"        metavar\u003d\u0027\u003ccompute-api-version\u003e\u0027,"},{"line_number":56,"context_line":"        default\u003dutils.env("},{"line_number":57,"context_line":"            \u0027OS_ORCHESTRATION_API_VERSION\u0027,"},{"line_number":58,"context_line":"            default\u003dDEFAULT_ORCHESTRATION_API_VERSION),"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_254fa16c","line":55,"updated":"2014-09-03 19:42:36.000000000","message":"s/compute/orchestration","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"192e78a829cc02ad159158d27ff4c8774e9bde2d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    \"\"\"Hook to add global options\"\"\""},{"line_number":53,"context_line":"    parser.add_argument("},{"line_number":54,"context_line":"        \u0027--os-orchestration-api-version\u0027,"},{"line_number":55,"context_line":"        metavar\u003d\u0027\u003ccompute-api-version\u003e\u0027,"},{"line_number":56,"context_line":"        default\u003dutils.env("},{"line_number":57,"context_line":"            \u0027OS_ORCHESTRATION_API_VERSION\u0027,"},{"line_number":58,"context_line":"            default\u003dDEFAULT_ORCHESTRATION_API_VERSION),"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_2b802ebf","line":55,"in_reply_to":"fa98f980_254fa16c","updated":"2014-10-22 14:09:52.000000000","message":"Done","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a6a09f064640897d0592468d466e3ce1612672fe","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        \u0027--os-orchestration-api-version\u0027,"},{"line_number":55,"context_line":"        metavar\u003d\u0027\u003ccompute-api-version\u003e\u0027,"},{"line_number":56,"context_line":"        default\u003dutils.env("},{"line_number":57,"context_line":"            \u0027OS_ORCHESTRATION_API_VERSION\u0027,"},{"line_number":58,"context_line":"            default\u003dDEFAULT_ORCHESTRATION_API_VERSION),"},{"line_number":59,"context_line":"        help\u003d\u0027Compute API version, default\u003d\u0027 +"},{"line_number":60,"context_line":"             DEFAULT_ORCHESTRATION_API_VERSION +"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_a53b91cf","line":57,"updated":"2014-09-03 19:42:36.000000000","message":"i think you have to update shell.py to include these","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"bc9512fec741289afd2d97e0b7841fe11ffaece6","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        \u0027--os-orchestration-api-version\u0027,"},{"line_number":55,"context_line":"        metavar\u003d\u0027\u003ccompute-api-version\u003e\u0027,"},{"line_number":56,"context_line":"        default\u003dutils.env("},{"line_number":57,"context_line":"            \u0027OS_ORCHESTRATION_API_VERSION\u0027,"},{"line_number":58,"context_line":"            default\u003dDEFAULT_ORCHESTRATION_API_VERSION),"},{"line_number":59,"context_line":"        help\u003d\u0027Compute API version, default\u003d\u0027 +"},{"line_number":60,"context_line":"             DEFAULT_ORCHESTRATION_API_VERSION +"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_32d0bef5","line":57,"in_reply_to":"fa98f980_a53b91cf","updated":"2014-09-04 03:02:48.000000000","message":"Steve, this function is discovered by shell during initialization so we don\u0027t have to modify it to add options.","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a6a09f064640897d0592468d466e3ce1612672fe","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        default\u003dutils.env("},{"line_number":57,"context_line":"            \u0027OS_ORCHESTRATION_API_VERSION\u0027,"},{"line_number":58,"context_line":"            default\u003dDEFAULT_ORCHESTRATION_API_VERSION),"},{"line_number":59,"context_line":"        help\u003d\u0027Compute API version, default\u003d\u0027 +"},{"line_number":60,"context_line":"             DEFAULT_ORCHESTRATION_API_VERSION +"},{"line_number":61,"context_line":"             \u0027 (Env: OS_ORCHESTRATION_API_VERSION)\u0027)"},{"line_number":62,"context_line":"    return parser"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_855a0d28","line":59,"updated":"2014-09-03 19:42:36.000000000","message":"s/compute/orchestration","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"192e78a829cc02ad159158d27ff4c8774e9bde2d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        default\u003dutils.env("},{"line_number":57,"context_line":"            \u0027OS_ORCHESTRATION_API_VERSION\u0027,"},{"line_number":58,"context_line":"            default\u003dDEFAULT_ORCHESTRATION_API_VERSION),"},{"line_number":59,"context_line":"        help\u003d\u0027Compute API version, default\u003d\u0027 +"},{"line_number":60,"context_line":"             DEFAULT_ORCHESTRATION_API_VERSION +"},{"line_number":61,"context_line":"             \u0027 (Env: OS_ORCHESTRATION_API_VERSION)\u0027)"},{"line_number":62,"context_line":"    return parser"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_0b7d2ae8","line":59,"in_reply_to":"fa98f980_855a0d28","updated":"2014-10-22 14:09:52.000000000","message":"Done","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"}],"openstackclient/orchestration/v1/resource.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"29f36417ea01642c931a256eb0b044d67229f7c0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"9aa7fdbe_a063bfda","updated":"2014-10-22 15:49:12.000000000","message":"this one seems incomplete, if it\u0027s not related to stack CRUD, maybe put it in a different patch","commit_id":"f2c08c06e48136508107056bf430bd7408905c21"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"29f36417ea01642c931a256eb0b044d67229f7c0","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def get_parser(self, prog_name):"},{"line_number":38,"context_line":"        parser \u003d super(ResourceEventList, self).get_parser(prog_name)"},{"line_number":39,"context_line":"        parser.add_argument("},{"line_number":40,"context_line":"            \u0027id\u0027,"},{"line_number":41,"context_line":"            metavar\u003d\u0027\u003cstack\u003e\u0027,"},{"line_number":42,"context_line":"            help\u003d\u0027Name or ID of stack to to get events for.\u0027,"},{"line_number":43,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa7fdbe_85596d5c","line":40,"updated":"2014-10-22 15:49:12.000000000","message":"can we use \u0027stack\u0027 here instead of \u0027id\u0027, since the user can pass in name or id","commit_id":"f2c08c06e48136508107056bf430bd7408905c21"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"29f36417ea01642c931a256eb0b044d67229f7c0","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        heat_client \u003d self.app.client_manager.orchestration"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        try:"},{"line_number":52,"context_line":"            stack \u003d heat_client.stacks.abandon(stack_id\u003dparsed_args.id)"},{"line_number":53,"context_line":"        except heat_exc.HTTPNotFound:"},{"line_number":54,"context_line":"            raise exc.CommandError(\u0027Stack not found with id: %s\u0027 %"},{"line_number":55,"context_line":"                                   parsed_args.id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa7fdbe_85308d02","line":52,"updated":"2014-10-22 15:49:12.000000000","message":"is abandon here correct?","commit_id":"f2c08c06e48136508107056bf430bd7408905c21"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"29f36417ea01642c931a256eb0b044d67229f7c0","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        try:"},{"line_number":52,"context_line":"            stack \u003d heat_client.stacks.abandon(stack_id\u003dparsed_args.id)"},{"line_number":53,"context_line":"        except heat_exc.HTTPNotFound:"},{"line_number":54,"context_line":"            raise exc.CommandError(\u0027Stack not found with id: %s\u0027 %"},{"line_number":55,"context_line":"                                   parsed_args.id)"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa7fdbe_20226fa4","line":53,"updated":"2014-10-22 15:49:12.000000000","message":"rather than a try/except here, you can use utils.find_resource to basically perform a GET to make sure it exists.\n\n  stack \u003d utils.find_resource(heat_client.stacks, parsed_args.stack).id\n\nthis will do the \u0027make sure the object exists part\u0027 before depending on it for the abandon operation.","commit_id":"f2c08c06e48136508107056bf430bd7408905c21"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"29f36417ea01642c931a256eb0b044d67229f7c0","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        adopt_data \u003d jsonutils.dumps(stack, indent\u003d2)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        if parsed_args.adopt_file \u003d\u003d \"\u003cSTACK_NAME\u003e-abandon-data.json\":"},{"line_number":61,"context_line":"            adopt_file \u003d \"{}-abandon-data.json\".format(stack[\u0027name\u0027])"},{"line_number":62,"context_line":"        else:"},{"line_number":63,"context_line":"            adopt_file \u003d parsed_args.adopt_file"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa7fdbe_405cd325","line":60,"updated":"2014-10-22 15:49:12.000000000","message":"there is no parsed_arg called adopt_file","commit_id":"f2c08c06e48136508107056bf430bd7408905c21"}],"openstackclient/orchestration/v1/stack.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"3987354d892a1648156417e9baed25e6c4ea457b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        parser \u003d super(ListStack, self).get_parser(prog_name)"},{"line_number":37,"context_line":"        parser.add_argument("},{"line_number":38,"context_line":"            \u0027-l\u0027,"},{"line_number":39,"context_line":"            \u0027--limit\u0027,"},{"line_number":40,"context_line":"            metavar\u003d\u0027\u003cMAX\u003e\u0027,"},{"line_number":41,"context_line":"            type\u003dint,"},{"line_number":42,"context_line":"            help\u003d\u0027Maximum number of stacks to list.\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_9d6878f5","line":39,"updated":"2014-08-04 21:36:34.000000000","message":"list with a -l makes me think --long rather than limit.","commit_id":"3db381005c0ec52fe2b4b2c4f149ce3d7778d1df"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"5e708c6d573c788912965d7c164f1e4753f29ed1","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        parser \u003d super(ListStack, self).get_parser(prog_name)"},{"line_number":37,"context_line":"        parser.add_argument("},{"line_number":38,"context_line":"            \u0027-l\u0027,"},{"line_number":39,"context_line":"            \u0027--limit\u0027,"},{"line_number":40,"context_line":"            metavar\u003d\u0027\u003cMAX\u003e\u0027,"},{"line_number":41,"context_line":"            type\u003dint,"},{"line_number":42,"context_line":"            help\u003d\u0027Maximum number of stacks to list.\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_e7454c45","line":39,"in_reply_to":"baada198_9d6878f5","updated":"2014-08-05 11:29:04.000000000","message":"Done","commit_id":"3db381005c0ec52fe2b4b2c4f149ce3d7778d1df"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"3987354d892a1648156417e9baed25e6c4ea457b","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        )"},{"line_number":68,"context_line":"        return _add_template_options(parser)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def take_action(self, parsed_args):"},{"line_number":71,"context_line":"        self.log.debug(\"take_action(%s)\", parsed_args)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        heat_client \u003d self.app.client_manager.orchestration"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_5d49808c","line":70,"updated":"2014-08-04 21:36:34.000000000","message":"Seems like this could be a --preview option to show maybe?","commit_id":"3db381005c0ec52fe2b4b2c4f149ce3d7778d1df"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"3987354d892a1648156417e9baed25e6c4ea457b","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        parser \u003d super(DeleteStack, self).get_parser(prog_name)"},{"line_number":123,"context_line":"        parser.add_argument("},{"line_number":124,"context_line":"            \u0027id\u0027,"},{"line_number":125,"context_line":"            metavar\u003d\u0027\u003cNAME or ID\u003e\u0027,"},{"line_number":126,"context_line":"            nargs\u003d\"+\","},{"line_number":127,"context_line":"            help\u003d\u0027Name or ID of stack to describe.\u0027,"},{"line_number":128,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_dd5cb04e","line":125,"updated":"2014-08-04 21:36:34.000000000","message":"I think there is a more standard format for this.","commit_id":"3db381005c0ec52fe2b4b2c4f149ce3d7778d1df"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"3987354d892a1648156417e9baed25e6c4ea457b","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    def get_parser(self, prog_name):"},{"line_number":156,"context_line":"        parser \u003d super(UpdateStack, self).get_parser(prog_name)"},{"line_number":157,"context_line":"        parser.add_argument("},{"line_number":158,"context_line":"            \u0027-t\u0027,"},{"line_number":159,"context_line":"            \u0027--timeout\u0027,"},{"line_number":160,"context_line":"            type\u003dint,"},{"line_number":161,"context_line":"            metavar\u003d\u0027\u003cTIMEOUT_MINUTES\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_1d2aa890","line":158,"updated":"2014-08-04 21:36:34.000000000","message":"I think OSC could do without the shortcuts and rely on bash complete","commit_id":"3db381005c0ec52fe2b4b2c4f149ce3d7778d1df"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"5e708c6d573c788912965d7c164f1e4753f29ed1","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    def get_parser(self, prog_name):"},{"line_number":156,"context_line":"        parser \u003d super(UpdateStack, self).get_parser(prog_name)"},{"line_number":157,"context_line":"        parser.add_argument("},{"line_number":158,"context_line":"            \u0027-t\u0027,"},{"line_number":159,"context_line":"            \u0027--timeout\u0027,"},{"line_number":160,"context_line":"            type\u003dint,"},{"line_number":161,"context_line":"            metavar\u003d\u0027\u003cTIMEOUT_MINUTES\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_a76274d8","line":158,"in_reply_to":"baada198_1d2aa890","updated":"2014-08-05 11:29:04.000000000","message":"Fair point. I\u0027ll get rid of the short options.","commit_id":"3db381005c0ec52fe2b4b2c4f149ce3d7778d1df"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"3987354d892a1648156417e9baed25e6c4ea457b","unresolved":false,"context_lines":[{"line_number":268,"context_line":""},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"class ShowStack(show.ShowOne):"},{"line_number":271,"context_line":"    \"\"\"Show a specific stack, given an ID\"\"\""},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    log \u003d logging.getLogger(__name__ + \".ShowStack\")"},{"line_number":274,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_3dfccc0c","line":271,"updated":"2014-08-04 21:36:34.000000000","message":"drop the \u0027, given an ID\u0027 it is name or id anyway","commit_id":"3db381005c0ec52fe2b4b2c4f149ce3d7778d1df"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"5e708c6d573c788912965d7c164f1e4753f29ed1","unresolved":false,"context_lines":[{"line_number":268,"context_line":""},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"class ShowStack(show.ShowOne):"},{"line_number":271,"context_line":"    \"\"\"Show a specific stack, given an ID\"\"\""},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    log \u003d logging.getLogger(__name__ + \".ShowStack\")"},{"line_number":274,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_279664a1","line":271,"in_reply_to":"baada198_3dfccc0c","updated":"2014-08-05 11:29:04.000000000","message":"Done","commit_id":"3db381005c0ec52fe2b4b2c4f149ce3d7778d1df"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from heatclient import exc as heat_exc"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class ListStack(lister.Lister):"},{"line_number":31,"context_line":"    \"\"\"List all stacks\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    log \u003d logging.getLogger(__name__ + \".ListStack\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_d72c3db5","line":30,"updated":"2014-08-06 17:41:29.000000000","message":"Please put these classes in alpha order.","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from heatclient import exc as heat_exc"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class ListStack(lister.Lister):"},{"line_number":31,"context_line":"    \"\"\"List all stacks\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    log \u003d logging.getLogger(__name__ + \".ListStack\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_2930bde8","line":30,"in_reply_to":"baada198_d72c3db5","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        parser \u003d super(ListStack, self).get_parser(prog_name)"},{"line_number":37,"context_line":"        parser.add_argument("},{"line_number":38,"context_line":"            \u0027--limit\u0027,"},{"line_number":39,"context_line":"            metavar\u003d\u0027\u003cMAX\u003e\u0027,"},{"line_number":40,"context_line":"            type\u003dint,"},{"line_number":41,"context_line":"            help\u003d\u0027Maximum number of stacks to list.\u0027,"},{"line_number":42,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_72329ff4","line":39,"updated":"2014-08-06 17:41:29.000000000","message":"\u003cmax\u003e  or \u003cmax-num\u003e","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        parser \u003d super(ListStack, self).get_parser(prog_name)"},{"line_number":37,"context_line":"        parser.add_argument("},{"line_number":38,"context_line":"            \u0027--limit\u0027,"},{"line_number":39,"context_line":"            metavar\u003d\u0027\u003cMAX\u003e\u0027,"},{"line_number":40,"context_line":"            type\u003dint,"},{"line_number":41,"context_line":"            help\u003d\u0027Maximum number of stacks to list.\u0027,"},{"line_number":42,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_262b8a96","line":39,"in_reply_to":"baada198_72329ff4","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            metavar\u003d\u0027\u003cMAX\u003e\u0027,"},{"line_number":40,"context_line":"            type\u003dint,"},{"line_number":41,"context_line":"            help\u003d\u0027Maximum number of stacks to list.\u0027,"},{"line_number":42,"context_line":"        )"},{"line_number":43,"context_line":"        return parser"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_972ac58f","line":42,"updated":"2014-08-06 17:41:29.000000000","message":"Just curious: Does your API also \u0027marker\u0027 to pick up where the --limit stops?","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            metavar\u003d\u0027\u003cMAX\u003e\u0027,"},{"line_number":40,"context_line":"            type\u003dint,"},{"line_number":41,"context_line":"            help\u003d\u0027Maximum number of stacks to list.\u0027,"},{"line_number":42,"context_line":"        )"},{"line_number":43,"context_line":"        return parser"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_f9110caf","line":42,"in_reply_to":"baada198_972ac58f","updated":"2014-08-07 18:49:18.000000000","message":"Yes it does, and I\u0027ve added it and other options to the list command.","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        if parsed_args.limit:"},{"line_number":50,"context_line":"            return _format_stack_list("},{"line_number":51,"context_line":"                heat_client.stacks.list()[:parsed_args.limit])"},{"line_number":52,"context_line":"        return _format_stack_list(heat_client.stacks.list())"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_77045119","line":51,"updated":"2014-08-06 17:41:29.000000000","message":"Ah, I see, it isn\u0027t an API thing...in this case, consider supporting something to get the \u0027second\u0027 set of stacks to list.   Not a blocker, just a usability thing.","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        if parsed_args.limit:"},{"line_number":50,"context_line":"            return _format_stack_list("},{"line_number":51,"context_line":"                heat_client.stacks.list()[:parsed_args.limit])"},{"line_number":52,"context_line":"        return _format_stack_list(heat_client.stacks.list())"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_19096084","line":51,"in_reply_to":"baada198_77045119","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        return _format_stack_list(heat_client.stacks.list())"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"class PreviewStack(show.ShowOne):"},{"line_number":56,"context_line":"    \"\"\"Preview a stack based on given params/templates\"\"\""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    log \u003d logging.getLogger(__name__ + \".PreviewStack\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_9272d310","line":55,"updated":"2014-08-06 17:41:29.000000000","message":"Can this be implemented as a \u0027--preview\u0027 option to \u0027stack show\u0027?  From a user\u0027s perspective they produce similar output.  Actually, it looks like it might be closer to \u0027stack create --preview\u0027.\n\nIs this used similar to the \u0027--dry-run\u0027 option to rsync and other utilities?","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        return _format_stack_list(heat_client.stacks.list())"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"class PreviewStack(show.ShowOne):"},{"line_number":56,"context_line":"    \"\"\"Preview a stack based on given params/templates\"\"\""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    log \u003d logging.getLogger(__name__ + \".PreviewStack\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_66f47b88","line":55,"in_reply_to":"baada198_9272d310","updated":"2014-08-07 18:49:18.000000000","message":"It is similar to --dry-run, and I\u0027ve updated the option name to reflect as such. (stack create --dry-run ...)","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        parser \u003d super(PreviewStack, self).get_parser(prog_name)"},{"line_number":62,"context_line":"        parser.add_argument("},{"line_number":63,"context_line":"            \u0027name\u0027,"},{"line_number":64,"context_line":"            metavar\u003d\u0027\u003cSTACK_NAME\u003e\u0027,"},{"line_number":65,"context_line":"            help\u003d\u0027Name of the stack to preview.\u0027,"},{"line_number":66,"context_line":"        )"},{"line_number":67,"context_line":"        return _add_template_options(parser)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_f2ff8ffe","line":64,"updated":"2014-08-06 17:41:29.000000000","message":"\u003cstack-name\u003e","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        parser \u003d super(PreviewStack, self).get_parser(prog_name)"},{"line_number":62,"context_line":"        parser.add_argument("},{"line_number":63,"context_line":"            \u0027name\u0027,"},{"line_number":64,"context_line":"            metavar\u003d\u0027\u003cSTACK_NAME\u003e\u0027,"},{"line_number":65,"context_line":"            help\u003d\u0027Name of the stack to preview.\u0027,"},{"line_number":66,"context_line":"        )"},{"line_number":67,"context_line":"        return _add_template_options(parser)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_093859ca","line":64,"in_reply_to":"baada198_f2ff8ffe","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        heat_client \u003d self.app.client_manager.orchestration"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        tpl_files, template \u003d template_utils.get_template_contents("},{"line_number":75,"context_line":"            parsed_args.template_file,"},{"line_number":76,"context_line":"            parsed_args.template_url,"},{"line_number":77,"context_line":"            parsed_args.template_object,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_92ec93f6","line":74,"updated":"2014-08-06 17:41:29.000000000","message":"Since these are options, does get_template_contents() handle their absence properly?  If they are required options (yeah, I know) that should be reflected in the parser setup.","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        heat_client \u003d self.app.client_manager.orchestration"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        tpl_files, template \u003d template_utils.get_template_contents("},{"line_number":75,"context_line":"            parsed_args.template_file,"},{"line_number":76,"context_line":"            parsed_args.template_url,"},{"line_number":77,"context_line":"            parsed_args.template_object,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_26ce032e","line":74,"in_reply_to":"baada198_92ec93f6","updated":"2014-08-07 18:49:18.000000000","message":"Exactly one of them is required, and I\u0027ve made them a required mutually exclusive group to reflect that.","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"class DeleteStack(lister.Lister):"},{"line_number":117,"context_line":"    \"\"\"Delete a stack by ID\"\"\""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    log \u003d logging.getLogger(__name__ + \".DeleteStack\")"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_3213c766","line":117,"updated":"2014-08-06 17:41:29.000000000","message":"Delete one or more stacks","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"class DeleteStack(lister.Lister):"},{"line_number":117,"context_line":"    \"\"\"Delete a stack by ID\"\"\""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    log \u003d logging.getLogger(__name__ + \".DeleteStack\")"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_29b51d32","line":117,"in_reply_to":"baada198_3213c766","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        parser \u003d super(DeleteStack, self).get_parser(prog_name)"},{"line_number":123,"context_line":"        parser.add_argument("},{"line_number":124,"context_line":"            \u0027id\u0027,"},{"line_number":125,"context_line":"            metavar\u003d\u0027\u003cNAME or ID\u003e\u0027,"},{"line_number":126,"context_line":"            nargs\u003d\"+\","},{"line_number":127,"context_line":"            help\u003d\u0027Name or ID of stack to describe.\u0027,"},{"line_number":128,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_72045f19","line":125,"updated":"2014-08-06 17:41:29.000000000","message":"\u003cstack\u003e","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        parser \u003d super(DeleteStack, self).get_parser(prog_name)"},{"line_number":123,"context_line":"        parser.add_argument("},{"line_number":124,"context_line":"            \u0027id\u0027,"},{"line_number":125,"context_line":"            metavar\u003d\u0027\u003cNAME or ID\u003e\u0027,"},{"line_number":126,"context_line":"            nargs\u003d\"+\","},{"line_number":127,"context_line":"            help\u003d\u0027Name or ID of stack to describe.\u0027,"},{"line_number":128,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_09a6990d","line":125,"in_reply_to":"baada198_72045f19","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            \u0027id\u0027,"},{"line_number":125,"context_line":"            metavar\u003d\u0027\u003cNAME or ID\u003e\u0027,"},{"line_number":126,"context_line":"            nargs\u003d\"+\","},{"line_number":127,"context_line":"            help\u003d\u0027Name or ID of stack to describe.\u0027,"},{"line_number":128,"context_line":"        )"},{"line_number":129,"context_line":"        return parser"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_804c3e77","line":127,"updated":"2014-08-06 17:41:29.000000000","message":"Stack(s) to delete (name or ID)","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            \u0027id\u0027,"},{"line_number":125,"context_line":"            metavar\u003d\u0027\u003cNAME or ID\u003e\u0027,"},{"line_number":126,"context_line":"            nargs\u003d\"+\","},{"line_number":127,"context_line":"            help\u003d\u0027Name or ID of stack to describe.\u0027,"},{"line_number":128,"context_line":"        )"},{"line_number":129,"context_line":"        return parser"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_49b09140","line":127,"in_reply_to":"baada198_804c3e77","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        if failure_count \u003d\u003d len(parsed_args.id):"},{"line_number":145,"context_line":"            raise exc.CommandError(\"Unable to delete any of the specified \""},{"line_number":146,"context_line":"                                   \"stacks.\")"},{"line_number":147,"context_line":"        return _format_stack_list(heat_client.stacks.list())"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"class UpdateStack(lister.Lister):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_60972a9d","line":147,"updated":"2014-08-06 17:41:29.000000000","message":"Are you listing all of the remaining stacks?\n\n\u0027delete\u0027 verbs usually don\u0027t return anything if it was successful, maybe here list the failed deletes?  I need to think about this a bit","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        if failure_count \u003d\u003d len(parsed_args.id):"},{"line_number":145,"context_line":"            raise exc.CommandError(\"Unable to delete any of the specified \""},{"line_number":146,"context_line":"                                   \"stacks.\")"},{"line_number":147,"context_line":"        return _format_stack_list(heat_client.stacks.list())"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"class UpdateStack(lister.Lister):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_c6dc67e4","line":147,"in_reply_to":"baada198_60972a9d","updated":"2014-08-07 18:49:18.000000000","message":"I return a list of the in progress deletes, since deletes in heat don\u0027t resolve immediately. On failure I return additional information.","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        parser.add_argument("},{"line_number":158,"context_line":"            \u0027--timeout\u0027,"},{"line_number":159,"context_line":"            type\u003dint,"},{"line_number":160,"context_line":"            metavar\u003d\u0027\u003cTIMEOUT_MINUTES\u003e\u0027,"},{"line_number":161,"context_line":"            help\u003d\u0027Stack creation timeout in minutes.\u0027,"},{"line_number":162,"context_line":"        )"},{"line_number":163,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_c0a47609","line":160,"updated":"2014-08-06 17:41:29.000000000","message":"\u003cminutes\u003e","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        parser.add_argument("},{"line_number":158,"context_line":"            \u0027--timeout\u0027,"},{"line_number":159,"context_line":"            type\u003dint,"},{"line_number":160,"context_line":"            metavar\u003d\u0027\u003cTIMEOUT_MINUTES\u003e\u0027,"},{"line_number":161,"context_line":"            help\u003d\u0027Stack creation timeout in minutes.\u0027,"},{"line_number":162,"context_line":"        )"},{"line_number":163,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_c97bc178","line":160,"in_reply_to":"baada198_c0a47609","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            metavar\u003d\u0027\u003cTIMEOUT_MINUTES\u003e\u0027,"},{"line_number":161,"context_line":"            help\u003d\u0027Stack creation timeout in minutes.\u0027,"},{"line_number":162,"context_line":"        )"},{"line_number":163,"context_line":"        parser.add_argument("},{"line_number":164,"context_line":"            \u0027--enable-rollback\u0027,"},{"line_number":165,"context_line":"            default\u003dFalse,"},{"line_number":166,"context_line":"            action\u003d\u0027store_true\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_00f02ed9","line":163,"updated":"2014-08-06 17:41:29.000000000","message":"Have a look at how we handle true/false option pairs.  It\u0027s a bit pedantic and I know some don\u0027t like it, but it is \u0027complete\u0027 and cleanly handles default changes.\n\nhttps://github.com/openstack/python-openstackclient/blob/master/openstackclient/image/v1/image.py#L145\n\nhttps://github.com/openstack/python-openstackclient/blob/master/openstackclient/image/v1/image.py#L190","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            metavar\u003d\u0027\u003cTIMEOUT_MINUTES\u003e\u0027,"},{"line_number":161,"context_line":"            help\u003d\u0027Stack creation timeout in minutes.\u0027,"},{"line_number":162,"context_line":"        )"},{"line_number":163,"context_line":"        parser.add_argument("},{"line_number":164,"context_line":"            \u0027--enable-rollback\u0027,"},{"line_number":165,"context_line":"            default\u003dFalse,"},{"line_number":166,"context_line":"            action\u003d\u0027store_true\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_7a84310e","line":163,"in_reply_to":"baada198_00f02ed9","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        )"},{"line_number":169,"context_line":"        parser.add_argument("},{"line_number":170,"context_line":"            \u0027id\u0027,"},{"line_number":171,"context_line":"            metavar\u003d\u0027\u003cNAME or ID\u003e\u0027,"},{"line_number":172,"context_line":"            help\u003d\u0027Name or ID of stack to update.\u0027,"},{"line_number":173,"context_line":"        )"},{"line_number":174,"context_line":"        return _add_template_options(parser)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_60cf2a8c","line":171,"updated":"2014-08-06 17:41:29.000000000","message":"\u003cstack\u003e","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        )"},{"line_number":169,"context_line":"        parser.add_argument("},{"line_number":170,"context_line":"            \u0027id\u0027,"},{"line_number":171,"context_line":"            metavar\u003d\u0027\u003cNAME or ID\u003e\u0027,"},{"line_number":172,"context_line":"            help\u003d\u0027Name or ID of stack to update.\u0027,"},{"line_number":173,"context_line":"        )"},{"line_number":174,"context_line":"        return _add_template_options(parser)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_fac5a13e","line":171,"in_reply_to":"baada198_60cf2a8c","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        parser.add_argument("},{"line_number":170,"context_line":"            \u0027id\u0027,"},{"line_number":171,"context_line":"            metavar\u003d\u0027\u003cNAME or ID\u003e\u0027,"},{"line_number":172,"context_line":"            help\u003d\u0027Name or ID of stack to update.\u0027,"},{"line_number":173,"context_line":"        )"},{"line_number":174,"context_line":"        return _add_template_options(parser)"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_a0d94258","line":172,"updated":"2014-08-06 17:41:29.000000000","message":"Stack to update (name or ID)","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        parser.add_argument("},{"line_number":170,"context_line":"            \u0027id\u0027,"},{"line_number":171,"context_line":"            metavar\u003d\u0027\u003cNAME or ID\u003e\u0027,"},{"line_number":172,"context_line":"            help\u003d\u0027Name or ID of stack to update.\u0027,"},{"line_number":173,"context_line":"        )"},{"line_number":174,"context_line":"        return _add_template_options(parser)"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_1ac17530","line":172,"in_reply_to":"baada198_a0d94258","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        parser.add_argument("},{"line_number":216,"context_line":"            \u0027--timeout\u0027,"},{"line_number":217,"context_line":"            type\u003dint,"},{"line_number":218,"context_line":"            metavar\u003d\u0027\u003cTIMEOUT_MINUTES\u003e\u0027,"},{"line_number":219,"context_line":"            help\u003d\u0027Stack creation timeout in minutes.\u0027,"},{"line_number":220,"context_line":"        )"},{"line_number":221,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_20ed32f1","line":218,"updated":"2014-08-06 17:41:29.000000000","message":"\u003cminutes\u003e","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        parser.add_argument("},{"line_number":216,"context_line":"            \u0027--timeout\u0027,"},{"line_number":217,"context_line":"            type\u003dint,"},{"line_number":218,"context_line":"            metavar\u003d\u0027\u003cTIMEOUT_MINUTES\u003e\u0027,"},{"line_number":219,"context_line":"            help\u003d\u0027Stack creation timeout in minutes.\u0027,"},{"line_number":220,"context_line":"        )"},{"line_number":221,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_1aefb5b3","line":218,"in_reply_to":"baada198_20ed32f1","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":219,"context_line":"            help\u003d\u0027Stack creation timeout in minutes.\u0027,"},{"line_number":220,"context_line":"        )"},{"line_number":221,"context_line":"        parser.add_argument("},{"line_number":222,"context_line":"            \u0027--enable-rollback\u0027,"},{"line_number":223,"context_line":"            default\u003dFalse,"},{"line_number":224,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":225,"context_line":"            help\u003d\u0027Enable rollback on create/update failure\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_e0c97a7b","line":222,"updated":"2014-08-06 17:41:29.000000000","message":"Same note as above","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":219,"context_line":"            help\u003d\u0027Stack creation timeout in minutes.\u0027,"},{"line_number":220,"context_line":"        )"},{"line_number":221,"context_line":"        parser.add_argument("},{"line_number":222,"context_line":"            \u0027--enable-rollback\u0027,"},{"line_number":223,"context_line":"            default\u003dFalse,"},{"line_number":224,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":225,"context_line":"            help\u003d\u0027Enable rollback on create/update failure\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_faf3e19d","line":222,"in_reply_to":"baada198_e0c97a7b","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        )"},{"line_number":227,"context_line":"        parser.add_argument("},{"line_number":228,"context_line":"            \u0027name\u0027,"},{"line_number":229,"context_line":"            metavar\u003d\u0027\u003cSTACK_NAME\u003e\u0027,"},{"line_number":230,"context_line":"            help\u003d\u0027Name of the stack to create.\u0027,"},{"line_number":231,"context_line":"        )"},{"line_number":232,"context_line":"        return _add_template_options(parser)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_60b64afe","line":229,"updated":"2014-08-06 17:41:29.000000000","message":"\u003cstack\u003e","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        )"},{"line_number":227,"context_line":"        parser.add_argument("},{"line_number":228,"context_line":"            \u0027name\u0027,"},{"line_number":229,"context_line":"            metavar\u003d\u0027\u003cSTACK_NAME\u003e\u0027,"},{"line_number":230,"context_line":"            help\u003d\u0027Name of the stack to create.\u0027,"},{"line_number":231,"context_line":"        )"},{"line_number":232,"context_line":"        return _add_template_options(parser)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_dafd3d6f","line":229,"in_reply_to":"baada198_60b64afe","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        parser \u003d super(ShowStack, self).get_parser(prog_name)"},{"line_number":273,"context_line":"        parser.add_argument("},{"line_number":274,"context_line":"            \u0027id\u0027,"},{"line_number":275,"context_line":"            metavar\u003d\u0027\u003cNAME or ID\u003e\u0027,"},{"line_number":276,"context_line":"            help\u003d\u0027Name or ID of stack to describe.\u0027,"},{"line_number":277,"context_line":"        )"},{"line_number":278,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_52775b3c","line":275,"updated":"2014-08-06 17:41:29.000000000","message":"\u003cstack\u003e","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        parser \u003d super(ShowStack, self).get_parser(prog_name)"},{"line_number":273,"context_line":"        parser.add_argument("},{"line_number":274,"context_line":"            \u0027id\u0027,"},{"line_number":275,"context_line":"            metavar\u003d\u0027\u003cNAME or ID\u003e\u0027,"},{"line_number":276,"context_line":"            help\u003d\u0027Name or ID of stack to describe.\u0027,"},{"line_number":277,"context_line":"        )"},{"line_number":278,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_3aee39b6","line":275,"in_reply_to":"baada198_52775b3c","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        parser.add_argument("},{"line_number":274,"context_line":"            \u0027id\u0027,"},{"line_number":275,"context_line":"            metavar\u003d\u0027\u003cNAME or ID\u003e\u0027,"},{"line_number":276,"context_line":"            help\u003d\u0027Name or ID of stack to describe.\u0027,"},{"line_number":277,"context_line":"        )"},{"line_number":278,"context_line":"        return parser"},{"line_number":279,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_9271f347","line":276,"updated":"2014-08-06 17:41:29.000000000","message":"\u0027Stack to describe (name or ID)\u0027","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        parser.add_argument("},{"line_number":274,"context_line":"            \u0027id\u0027,"},{"line_number":275,"context_line":"            metavar\u003d\u0027\u003cNAME or ID\u003e\u0027,"},{"line_number":276,"context_line":"            help\u003d\u0027Name or ID of stack to describe.\u0027,"},{"line_number":277,"context_line":"        )"},{"line_number":278,"context_line":"        return parser"},{"line_number":279,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_5ae92daa","line":276,"in_reply_to":"baada198_9271f347","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":311,"context_line":"def _add_template_options(parser):"},{"line_number":312,"context_line":"    parser.add_argument("},{"line_number":313,"context_line":"        \u0027--template-file\u0027,"},{"line_number":314,"context_line":"        metavar\u003d\u0027\u003cFILE\u003e\u0027,"},{"line_number":315,"context_line":"        help\u003d\u0027Path to the template.\u0027,"},{"line_number":316,"context_line":"    )"},{"line_number":317,"context_line":"    parser.add_argument("}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_925d7319","line":314,"updated":"2014-08-06 17:41:29.000000000","message":"\u003cfilename\u003e","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":311,"context_line":"def _add_template_options(parser):"},{"line_number":312,"context_line":"    parser.add_argument("},{"line_number":313,"context_line":"        \u0027--template-file\u0027,"},{"line_number":314,"context_line":"        metavar\u003d\u0027\u003cFILE\u003e\u0027,"},{"line_number":315,"context_line":"        help\u003d\u0027Path to the template.\u0027,"},{"line_number":316,"context_line":"    )"},{"line_number":317,"context_line":"    parser.add_argument("}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_9a1105b1","line":314,"in_reply_to":"baada198_925d7319","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":316,"context_line":"    )"},{"line_number":317,"context_line":"    parser.add_argument("},{"line_number":318,"context_line":"        \u0027--environment-file\u0027,"},{"line_number":319,"context_line":"        metavar\u003d\u0027\u003cFILE or URL\u003e\u0027,"},{"line_number":320,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":321,"context_line":"        help\u003d\u0027Path to the environment.\u0027,"},{"line_number":322,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_92b49337","line":319,"updated":"2014-08-06 17:41:29.000000000","message":"\u003cfilename\u003e|\u003curl\u003e","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":316,"context_line":"    )"},{"line_number":317,"context_line":"    parser.add_argument("},{"line_number":318,"context_line":"        \u0027--environment-file\u0027,"},{"line_number":319,"context_line":"        metavar\u003d\u0027\u003cFILE or URL\u003e\u0027,"},{"line_number":320,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":321,"context_line":"        help\u003d\u0027Path to the environment.\u0027,"},{"line_number":322,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_7a0ef190","line":319,"in_reply_to":"baada198_92b49337","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":322,"context_line":"    )"},{"line_number":323,"context_line":"    parser.add_argument("},{"line_number":324,"context_line":"        \u0027--template-url\u0027,"},{"line_number":325,"context_line":"        metavar\u003d\u0027\u003cURL\u003e\u0027,"},{"line_number":326,"context_line":"        help\u003d\u0027URL of template.\u0027,"},{"line_number":327,"context_line":"    )"},{"line_number":328,"context_line":"    parser.add_argument("}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_1278837d","line":325,"updated":"2014-08-06 17:41:29.000000000","message":"\u003curl\u003e","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":322,"context_line":"    )"},{"line_number":323,"context_line":"    parser.add_argument("},{"line_number":324,"context_line":"        \u0027--template-url\u0027,"},{"line_number":325,"context_line":"        metavar\u003d\u0027\u003cURL\u003e\u0027,"},{"line_number":326,"context_line":"        help\u003d\u0027URL of template.\u0027,"},{"line_number":327,"context_line":"    )"},{"line_number":328,"context_line":"    parser.add_argument("}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_ba088981","line":325,"in_reply_to":"baada198_1278837d","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":327,"context_line":"    )"},{"line_number":328,"context_line":"    parser.add_argument("},{"line_number":329,"context_line":"        \u0027--template-object\u0027,"},{"line_number":330,"context_line":"        metavar\u003d\u0027\u003cURL\u003e\u0027,"},{"line_number":331,"context_line":"        help\u003d\u0027URL to retrieve template object (e.g. from swift)\u0027,"},{"line_number":332,"context_line":"    )"},{"line_number":333,"context_line":"    parser.add_argument("}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_d2e44b44","line":330,"updated":"2014-08-06 17:41:29.000000000","message":"\u003curl\u003e","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":327,"context_line":"    )"},{"line_number":328,"context_line":"    parser.add_argument("},{"line_number":329,"context_line":"        \u0027--template-object\u0027,"},{"line_number":330,"context_line":"        metavar\u003d\u0027\u003cURL\u003e\u0027,"},{"line_number":331,"context_line":"        help\u003d\u0027URL to retrieve template object (e.g. from swift)\u0027,"},{"line_number":332,"context_line":"    )"},{"line_number":333,"context_line":"    parser.add_argument("}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_da0b7d7a","line":330,"in_reply_to":"baada198_d2e44b44","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":331,"context_line":"        help\u003d\u0027URL to retrieve template object (e.g. from swift)\u0027,"},{"line_number":332,"context_line":"    )"},{"line_number":333,"context_line":"    parser.add_argument("},{"line_number":334,"context_line":"        \u0027--parameters\u0027,"},{"line_number":335,"context_line":"        metavar\u003d\u0027\u003cKEY1\u003dVALUE1;KEY2\u003dVALUE2...\u003e\u0027,"},{"line_number":336,"context_line":"        help\u003d\u0027Parameter values used in the stack. \u0027"},{"line_number":337,"context_line":"        \u0027This can be specified multiple times, or once with parameters \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_12c6c39c","line":334,"updated":"2014-08-06 17:41:29.000000000","message":"OSC uses \u0027--property\u0027 for this sort of thing (metadata usually).  Singular because each invocation of the option has a single key\u003dvalue pair as an argument.","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":331,"context_line":"        help\u003d\u0027URL to retrieve template object (e.g. from swift)\u0027,"},{"line_number":332,"context_line":"    )"},{"line_number":333,"context_line":"    parser.add_argument("},{"line_number":334,"context_line":"        \u0027--parameters\u0027,"},{"line_number":335,"context_line":"        metavar\u003d\u0027\u003cKEY1\u003dVALUE1;KEY2\u003dVALUE2...\u003e\u0027,"},{"line_number":336,"context_line":"        help\u003d\u0027Parameter values used in the stack. \u0027"},{"line_number":337,"context_line":"        \u0027This can be specified multiple times, or once with parameters \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_46e8577b","line":334,"in_reply_to":"baada198_12c6c39c","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":332,"context_line":"    )"},{"line_number":333,"context_line":"    parser.add_argument("},{"line_number":334,"context_line":"        \u0027--parameters\u0027,"},{"line_number":335,"context_line":"        metavar\u003d\u0027\u003cKEY1\u003dVALUE1;KEY2\u003dVALUE2...\u003e\u0027,"},{"line_number":336,"context_line":"        help\u003d\u0027Parameter values used in the stack. \u0027"},{"line_number":337,"context_line":"        \u0027This can be specified multiple times, or once with parameters \u0027"},{"line_number":338,"context_line":"        \u0027separated by semicolon.\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_f205cfc1","line":335,"updated":"2014-08-06 17:41:29.000000000","message":"\u003ckey\u003dvalue\u003e","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8af640297651e04e31b7d84f34e8e2101758e4c3","unresolved":false,"context_lines":[{"line_number":332,"context_line":"    )"},{"line_number":333,"context_line":"    parser.add_argument("},{"line_number":334,"context_line":"        \u0027--parameters\u0027,"},{"line_number":335,"context_line":"        metavar\u003d\u0027\u003cKEY1\u003dVALUE1;KEY2\u003dVALUE2...\u003e\u0027,"},{"line_number":336,"context_line":"        help\u003d\u0027Parameter values used in the stack. \u0027"},{"line_number":337,"context_line":"        \u0027This can be specified multiple times, or once with parameters \u0027"},{"line_number":338,"context_line":"        \u0027separated by semicolon.\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_66fe3b3b","line":335,"in_reply_to":"baada198_f205cfc1","updated":"2014-08-07 18:49:18.000000000","message":"Done","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"2b7cf0dd6bb4c494cf5c768e4bf285f2fd5e8715","unresolved":false,"context_lines":[{"line_number":215,"context_line":"            \u0027separated by a semicolon.\u0027,"},{"line_number":216,"context_line":"        )"},{"line_number":217,"context_line":"        parser.add_argument("},{"line_number":218,"context_line":"            \u0027--marker\u0027, metavar\u003d\u0027\u003cid\u003e\u0027,"},{"line_number":219,"context_line":"            help\u003d\u0027Only return stacks that appear after the given stack ID.\u0027"},{"line_number":220,"context_line":"        )"},{"line_number":221,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_88a6f80b","line":218,"updated":"2014-08-07 21:22:13.000000000","message":"split this into two lines","commit_id":"7dc222c3679d8bb599a87d1d74bc4c7ad01d3ce3"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"2b7cf0dd6bb4c494cf5c768e4bf285f2fd5e8715","unresolved":false,"context_lines":[{"line_number":219,"context_line":"            help\u003d\u0027Only return stacks that appear after the given stack ID.\u0027"},{"line_number":220,"context_line":"        )"},{"line_number":221,"context_line":"        parser.add_argument("},{"line_number":222,"context_line":"            \u0027--global-tenant\u0027,"},{"line_number":223,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":224,"context_line":"            default\u003dFalse,"},{"line_number":225,"context_line":"            help\u003d\u0027Display stacks from all tenants. Operation only authorized \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_888c383b","line":222,"updated":"2014-08-07 21:22:13.000000000","message":"* we never use the word \u0027tenant\u0027 wherever possible, use \u0027project\u0027 instead\n* in other commands we\u0027ve used \u0027--all\u0027 to do this option (I\u0027m open to arguments for something better, but I like how short --all is)\n\nSigh...grep shows me we also used --all-projects.  It is more specific and consistent with other things in OSC.   --all has a 6-3 advantage in my quick count.  Thoughts?","commit_id":"7dc222c3679d8bb599a87d1d74bc4c7ad01d3ce3"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"2b7cf0dd6bb4c494cf5c768e4bf285f2fd5e8715","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":224,"context_line":"            default\u003dFalse,"},{"line_number":225,"context_line":"            help\u003d\u0027Display stacks from all tenants. Operation only authorized \u0027"},{"line_number":226,"context_line":"            \u0027for users who match the policy in heat\\\u0027s policy.json.\u0027"},{"line_number":227,"context_line":"        )"},{"line_number":228,"context_line":"        return parser"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_28096c84","line":226,"updated":"2014-08-07 21:22:13.000000000","message":"We\u0027ve also tried to avoid using project names in user-visible places.  What about something like \"Display stacks for all projects (if allowed by server policy)\"","commit_id":"7dc222c3679d8bb599a87d1d74bc4c7ad01d3ce3"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"2b7cf0dd6bb4c494cf5c768e4bf285f2fd5e8715","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        return _show_stack(heat_client, stack_id\u003dparsed_args.id)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"class UpdateStack(show.ShowOne):"},{"line_number":271,"context_line":"    \"\"\"Update a stack given a set of params/templates\"\"\""},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    log \u003d logging.getLogger(__name__ + \".UpdateStack\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_2d389eed","line":270,"updated":"2014-08-07 21:22:13.000000000","message":"Sorry I missed this last time, but OSC uses \u0027set\u0027 as this verb rather than \u0027update\u0027","commit_id":"7dc222c3679d8bb599a87d1d74bc4c7ad01d3ce3"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"c7632e135e89825df3f1954133620603f1366751","unresolved":false,"context_lines":[{"line_number":349,"context_line":"    template_group.add_argument("},{"line_number":350,"context_line":"        \u0027--template-object\u0027,"},{"line_number":351,"context_line":"        metavar\u003d\u0027\u003curl\u003e\u0027,"},{"line_number":352,"context_line":"        help\u003d\u0027URL to retrieve template object (e.g. from swift)\u0027,"},{"line_number":353,"context_line":"    )"},{"line_number":354,"context_line":"    parser.add_argument("},{"line_number":355,"context_line":"        \u0027--environment-file\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_efe12298","line":352,"updated":"2014-08-08 13:08:31.000000000","message":"s/from swift/from object store/","commit_id":"7dc222c3679d8bb599a87d1d74bc4c7ad01d3ce3"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"2b7cf0dd6bb4c494cf5c768e4bf285f2fd5e8715","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        metavar\u003d\u0027\u003ckey\u003dvalue\u003e\u0027,"},{"line_number":364,"context_line":"        help\u003d\u0027Parameters to be used in the stack. \u0027"},{"line_number":365,"context_line":"        \u0027This can be specified multiple times.\u0027,"},{"line_number":366,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":367,"context_line":"    )"},{"line_number":368,"context_line":"    return parser"},{"line_number":369,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_28a24cfc","line":366,"updated":"2014-08-07 21:22:13.000000000","message":"We have a custom action that ensures the properties arg is a dict, and implements the form --property key\u003d to remove a key from the dict.\n\n            action\u003dparseractions.KeyValueAction,","commit_id":"7dc222c3679d8bb599a87d1d74bc4c7ad01d3ce3"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"c7632e135e89825df3f1954133620603f1366751","unresolved":false,"context_lines":[{"line_number":368,"context_line":"    return parser"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"def _format_stack_list(data):"},{"line_number":372,"context_line":"    columns \u003d ("},{"line_number":373,"context_line":"        \"ID\","},{"line_number":374,"context_line":"        \"Name\","}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_0f6c9606","line":371,"updated":"2014-08-08 13:08:31.000000000","message":"Not sure why this is broken out and only used in one place.","commit_id":"7dc222c3679d8bb599a87d1d74bc4c7ad01d3ce3"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"c7632e135e89825df3f1954133620603f1366751","unresolved":false,"context_lines":[{"line_number":391,"context_line":"        data \u003d heat_client.stacks.get(**kwargs)"},{"line_number":392,"context_line":"    except heat_exc.HTTPNotFound:"},{"line_number":393,"context_line":"        raise exc.CommandError(\u0027Stack not found with params: %s\u0027 % kwargs)"},{"line_number":394,"context_line":"    else:"},{"line_number":395,"context_line":"        columns \u003d ("},{"line_number":396,"context_line":"            (\u0027description\u0027, heat_utils.text_wrap_formatter),"},{"line_number":397,"context_line":"            (\u0027template_description\u0027, heat_utils.text_wrap_formatter),"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_32ac5dee","line":394,"updated":"2014-08-08 13:08:31.000000000","message":"OSC kind of uses utils.get_item_properties to apply formatters and might be a more standard way to go for list and show.","commit_id":"7dc222c3679d8bb599a87d1d74bc4c7ad01d3ce3"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f4df19a9c27d9a8b55ccaef442e250a1c5159de3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#   Copyright 2014 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_1e1e7f5f","line":1,"updated":"2014-08-29 14:13:00.000000000","message":"Don\u0027t use this unless you work for the foundation...you see it in a lot of files because I worked for Rax when I started the project and all Rackspace-owned code was transferred to the foundation.\n\nUnless your employer requires it, I\u0027ve interpreted the lawyer\u0027s comments in a number of places to indicate it doesn\u0027t really do much here.","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"192e78a829cc02ad159158d27ff4c8774e9bde2d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#   Copyright 2014 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_8b703a0c","line":1,"in_reply_to":"1abeadc6_1e1e7f5f","updated":"2014-10-22 14:09:52.000000000","message":"Thanks for the explanation, I just noticed the other modules (compute, network, etc) had it so presumed it was a required header.","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a6a09f064640897d0592468d466e3ce1612672fe","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from openstackclient.common import parseractions"},{"line_number":27,"context_line":"from openstackclient.common import utils"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from heatclient import exc as heat_exc"},{"line_number":30,"context_line":"from heatclient.common import template_utils"},{"line_number":31,"context_line":"from heatclient.common import utils as heat_utils"},{"line_number":32,"context_line":"from heatclient.openstack.common import jsonutils"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_a569d1bf","line":29,"updated":"2014-09-03 19:42:36.000000000","message":"these should be grouped with the other 3rd party libs","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"192e78a829cc02ad159158d27ff4c8774e9bde2d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from openstackclient.common import parseractions"},{"line_number":27,"context_line":"from openstackclient.common import utils"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from heatclient import exc as heat_exc"},{"line_number":30,"context_line":"from heatclient.common import template_utils"},{"line_number":31,"context_line":"from heatclient.common import utils as heat_utils"},{"line_number":32,"context_line":"from heatclient.openstack.common import jsonutils"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_2b674e4e","line":29,"in_reply_to":"fa98f980_a569d1bf","updated":"2014-10-22 14:09:52.000000000","message":"Done","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f4df19a9c27d9a8b55ccaef442e250a1c5159de3","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class AbandonStack(show.ShowOne):"},{"line_number":36,"context_line":"    \"\"\"Abandon a stack by name or ID, saves stack as adoptable file\"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    log \u003d logging.getLogger(__name__ + \".AbandonStack\")"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_fccfc626","line":36,"updated":"2014-08-29 14:13:00.000000000","message":"This sounds more like a save/delete combination?","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"d6cc237b5ae3f4d2078aba65fda40de569c9d0bb","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class AbandonStack(show.ShowOne):"},{"line_number":36,"context_line":"    \"\"\"Abandon a stack by name or ID, saves stack as adoptable file\"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    log \u003d logging.getLogger(__name__ + \".AbandonStack\")"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_91cf8b28","line":36,"in_reply_to":"1abeadc6_fccfc626","updated":"2014-08-29 21:11:25.000000000","message":"In Heat, abandon means to delete the stack from heat but don\u0027t delete the underlying OpenStack resources. Abandon also returns the information for each abandoned resource, so that those resource can be adopted into a new stack.","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f4df19a9c27d9a8b55ccaef442e250a1c5159de3","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        return _show_stack(heat_client, stack_id\u003dparsed_args.id)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"class AdoptStack(show.ShowOne):"},{"line_number":81,"context_line":"    \"\"\"Adopt a stack with a given name\"\"\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    log \u003d logging.getLogger(__name__ + \".AdoptStack\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_bcf0ee67","line":80,"updated":"2014-08-29 14:13:00.000000000","message":"How is this different from create from a local file?","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"d6cc237b5ae3f4d2078aba65fda40de569c9d0bb","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        return _show_stack(heat_client, stack_id\u003dparsed_args.id)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"class AdoptStack(show.ShowOne):"},{"line_number":81,"context_line":"    \"\"\"Adopt a stack with a given name\"\"\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    log \u003d logging.getLogger(__name__ + \".AdoptStack\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_d103c33f","line":80,"in_reply_to":"1abeadc6_bcf0ee67","updated":"2014-08-29 21:11:25.000000000","message":"With adopt, it is assumed all the OpenStack resources already exist. So the stack is created by attaching to existing resources rather than creating them. The data passed to adopt can either come from a previous abandon, or written manually.","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"bc9512fec741289afd2d97e0b7841fe11ffaece6","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        return _show_stack(heat_client, stack_id\u003dparsed_args.id)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"class AdoptStack(show.ShowOne):"},{"line_number":81,"context_line":"    \"\"\"Adopt a stack with a given name\"\"\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    log \u003d logging.getLogger(__name__ + \".AdoptStack\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_12281ae1","line":80,"in_reply_to":"1abeadc6_d103c33f","updated":"2014-09-04 03:02:48.000000000","message":"You are creating a stack in both cases, the difference is if the resources already exist, correct?  I still think we can do both with a single stack create command and if we can\u0027t tell the difference from the context of passed arguments adding an --adopt option is a possibility.","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"192e78a829cc02ad159158d27ff4c8774e9bde2d","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        return _show_stack(heat_client, stack_id\u003dparsed_args.id)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"class AdoptStack(show.ShowOne):"},{"line_number":81,"context_line":"    \"\"\"Adopt a stack with a given name\"\"\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    log \u003d logging.getLogger(__name__ + \".AdoptStack\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_6ba2364c","line":80,"in_reply_to":"fa98f980_12281ae1","updated":"2014-10-22 14:09:52.000000000","message":"I feel like the semantic difference between \"actually make a thing\" and \"put a different label on an existing set of things\" is enough to warrant separate commands.","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f4df19a9c27d9a8b55ccaef442e250a1c5159de3","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        adopt_url \u003d template_utils.normalise_file_path_to_url("},{"line_number":134,"context_line":"            parsed_args.adopt_file)"},{"line_number":135,"context_line":"        adopt_data \u003d request.urlopen(adopt_url).read()"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        fields \u003d {"},{"line_number":138,"context_line":"            \u0027stack_name\u0027: parsed_args.name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_5ada7a78","line":135,"updated":"2014-08-29 14:13:00.000000000","message":"I\u0027m concerned about using yet another HTTP client here...we already have at least two available that are properly configured to do TLS cert verification, et.al.","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"bc9512fec741289afd2d97e0b7841fe11ffaece6","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        adopt_url \u003d template_utils.normalise_file_path_to_url("},{"line_number":134,"context_line":"            parsed_args.adopt_file)"},{"line_number":135,"context_line":"        adopt_data \u003d request.urlopen(adopt_url).read()"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        fields \u003d {"},{"line_number":138,"context_line":"            \u0027stack_name\u0027: parsed_args.name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_f25d567a","line":135,"in_reply_to":"1abeadc6_51bed365","updated":"2014-09-04 03:02:48.000000000","message":"OK.  requests currently can\u0027t do that but adding support is actually pretty straightforward.  Can you drop a note here to remind us(me) to do that?","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"d6cc237b5ae3f4d2078aba65fda40de569c9d0bb","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        adopt_url \u003d template_utils.normalise_file_path_to_url("},{"line_number":134,"context_line":"            parsed_args.adopt_file)"},{"line_number":135,"context_line":"        adopt_data \u003d request.urlopen(adopt_url).read()"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        fields \u003d {"},{"line_number":138,"context_line":"            \u0027stack_name\u0027: parsed_args.name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_51bed365","line":135,"in_reply_to":"1abeadc6_5ada7a78","updated":"2014-08-29 21:11:25.000000000","message":"As long as the client can handle file:// URLs then we can use that.","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a6a09f064640897d0592468d466e3ce1612672fe","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            parsed_args.template_object,"},{"line_number":205,"context_line":"            heat_client.http_client.raw_request,"},{"line_number":206,"context_line":"        )"},{"line_number":207,"context_line":"        env_files, env \u003d \\"},{"line_number":208,"context_line":"            template_utils.process_multiple_environments_and_files("},{"line_number":209,"context_line":"                env_paths\u003dparsed_args.environment_file)"},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_05b45d33","line":207,"updated":"2014-09-03 19:42:36.000000000","message":"avoid using \\, try wrapping with ()","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"192e78a829cc02ad159158d27ff4c8774e9bde2d","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            parsed_args.template_object,"},{"line_number":205,"context_line":"            heat_client.http_client.raw_request,"},{"line_number":206,"context_line":"        )"},{"line_number":207,"context_line":"        env_files, env \u003d \\"},{"line_number":208,"context_line":"            template_utils.process_multiple_environments_and_files("},{"line_number":209,"context_line":"                env_paths\u003dparsed_args.environment_file)"},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_eb52a633","line":207,"in_reply_to":"fa98f980_05b45d33","updated":"2014-10-22 14:09:52.000000000","message":"Done","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a6a09f064640897d0592468d466e3ce1612672fe","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        self.log.debug(\"take_action(%s)\", parsed_args)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        heat_client \u003d self.app.client_manager.orchestration"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        failure_count \u003d 0"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        data \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_45890574","line":270,"updated":"2014-09-03 19:42:36.000000000","message":"unnecessary new line break","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"192e78a829cc02ad159158d27ff4c8774e9bde2d","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        self.log.debug(\"take_action(%s)\", parsed_args)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        heat_client \u003d self.app.client_manager.orchestration"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        failure_count \u003d 0"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        data \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_8b283a9b","line":270,"in_reply_to":"fa98f980_45890574","updated":"2014-10-22 14:09:52.000000000","message":"Done","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a6a09f064640897d0592468d466e3ce1612672fe","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        heat_client \u003d self.app.client_manager.orchestration"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        failure_count \u003d 0"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        data \u003d []"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        for sid in parsed_args.id:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_657a8978","line":272,"updated":"2014-09-03 19:42:36.000000000","message":"unnecessary new line break","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"192e78a829cc02ad159158d27ff4c8774e9bde2d","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        heat_client \u003d self.app.client_manager.orchestration"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        failure_count \u003d 0"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        data \u003d []"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        for sid in parsed_args.id:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_6b3eb6db","line":272,"in_reply_to":"fa98f980_657a8978","updated":"2014-10-22 14:09:52.000000000","message":"Done","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a6a09f064640897d0592468d466e3ce1612672fe","unresolved":false,"context_lines":[{"line_number":346,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":347,"context_line":"            default\u003dFalse,"},{"line_number":348,"context_line":"            help\u003d\u0027Display stacks from all projects (if allowed by server \u0027"},{"line_number":349,"context_line":"            \u0027 policy).\u0027,"},{"line_number":350,"context_line":"        )"},{"line_number":351,"context_line":"        return parser"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_e58d997d","line":349,"updated":"2014-09-03 19:42:36.000000000","message":"remove the space here, and you will have two spaces when rendered, (the previous line has a space)","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"192e78a829cc02ad159158d27ff4c8774e9bde2d","unresolved":false,"context_lines":[{"line_number":346,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":347,"context_line":"            default\u003dFalse,"},{"line_number":348,"context_line":"            help\u003d\u0027Display stacks from all projects (if allowed by server \u0027"},{"line_number":349,"context_line":"            \u0027 policy).\u0027,"},{"line_number":350,"context_line":"        )"},{"line_number":351,"context_line":"        return parser"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_4b12d262","line":349,"in_reply_to":"fa98f980_e58d997d","updated":"2014-10-22 14:09:52.000000000","message":"Done","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f4df19a9c27d9a8b55ccaef442e250a1c5159de3","unresolved":false,"context_lines":[{"line_number":434,"context_line":""},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"class SuspendStack(show.ShowOne):"},{"line_number":437,"context_line":"    \"\"\"Update a stack by name or ID\"\"\""},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"    log \u003d logging.getLogger(__name__ + \".SuspendStack\")"},{"line_number":440,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_bc7b8ef3","line":437,"updated":"2014-08-29 14:13:00.000000000","message":"s/update/suspend/","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f4df19a9c27d9a8b55ccaef442e250a1c5159de3","unresolved":false,"context_lines":[{"line_number":443,"context_line":"        parser.add_argument("},{"line_number":444,"context_line":"            \u0027id\u0027,"},{"line_number":445,"context_line":"            metavar\u003d\u0027\u003cstack\u003e\u0027,"},{"line_number":446,"context_line":"            help\u003d\u0027Name or ID of stack to update.\u0027,"},{"line_number":447,"context_line":"        )"},{"line_number":448,"context_line":"        return parser"},{"line_number":449,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_9c1972d3","line":446,"updated":"2014-08-29 14:13:00.000000000","message":"s/update/suspend/","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f4df19a9c27d9a8b55ccaef442e250a1c5159de3","unresolved":false,"context_lines":[{"line_number":460,"context_line":"        return _show_stack(heat_client, stack_id\u003dparsed_args.id)"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"class UpdateStack(show.ShowOne):"},{"line_number":464,"context_line":"    \"\"\"Update a stack given a set of params/templates\"\"\""},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    log \u003d logging.getLogger(__name__ + \".UpdateStack\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_fc8186c3","line":463,"updated":"2014-08-29 14:13:00.000000000","message":"Should be SetStack","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a6a09f064640897d0592468d466e3ce1612672fe","unresolved":false,"context_lines":[{"line_number":502,"context_line":"            parsed_args.template_object,"},{"line_number":503,"context_line":"            heat_client.http_client.raw_request,"},{"line_number":504,"context_line":"        )"},{"line_number":505,"context_line":"        env_files, env \u003d \\"},{"line_number":506,"context_line":"            template_utils.process_multiple_environments_and_files("},{"line_number":507,"context_line":"                env_paths\u003dparsed_args.environment_file)"},{"line_number":508,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_85f68df7","line":505,"updated":"2014-09-03 19:42:36.000000000","message":"wrap in ()","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"d6cc237b5ae3f4d2078aba65fda40de569c9d0bb","unresolved":false,"context_lines":[{"line_number":543,"context_line":"        \u0027--template-object\u0027,"},{"line_number":544,"context_line":"        metavar\u003d\u0027\u003curl\u003e\u0027,"},{"line_number":545,"context_line":"        help\u003d\u0027URL to retrieve template object (e.g. from object store)\u0027,"},{"line_number":546,"context_line":"    )"},{"line_number":547,"context_line":"    parser.add_argument("},{"line_number":548,"context_line":"        \u0027--environment-file\u0027,"},{"line_number":549,"context_line":"        metavar\u003d\u0027\u003cfilename\u003e|\u003curl\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_916b0bf0","line":546,"updated":"2014-08-29 21:11:25.000000000","message":"Having three --template options in heatclient is a historic accident. It would be good to fix that mistake here and consolidate them into a single --template option, just like --environment","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"bc9512fec741289afd2d97e0b7841fe11ffaece6","unresolved":false,"context_lines":[{"line_number":543,"context_line":"        \u0027--template-object\u0027,"},{"line_number":544,"context_line":"        metavar\u003d\u0027\u003curl\u003e\u0027,"},{"line_number":545,"context_line":"        help\u003d\u0027URL to retrieve template object (e.g. from object store)\u0027,"},{"line_number":546,"context_line":"    )"},{"line_number":547,"context_line":"    parser.add_argument("},{"line_number":548,"context_line":"        \u0027--environment-file\u0027,"},{"line_number":549,"context_line":"        metavar\u003d\u0027\u003cfilename\u003e|\u003curl\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_f2d476be","line":546,"in_reply_to":"1abeadc6_916b0bf0","updated":"2014-09-04 03:02:48.000000000","message":"Great.  Fortunately OSC is bound by no history (yet) so we get to clean up things like that.","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"192e78a829cc02ad159158d27ff4c8774e9bde2d","unresolved":false,"context_lines":[{"line_number":543,"context_line":"        \u0027--template-object\u0027,"},{"line_number":544,"context_line":"        metavar\u003d\u0027\u003curl\u003e\u0027,"},{"line_number":545,"context_line":"        help\u003d\u0027URL to retrieve template object (e.g. from object store)\u0027,"},{"line_number":546,"context_line":"    )"},{"line_number":547,"context_line":"    parser.add_argument("},{"line_number":548,"context_line":"        \u0027--environment-file\u0027,"},{"line_number":549,"context_line":"        metavar\u003d\u0027\u003cfilename\u003e|\u003curl\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_2654e3fd","line":546,"in_reply_to":"fa98f980_f2d476be","updated":"2014-10-22 14:09:52.000000000","message":"Thanks for the info @stevebaker","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f4df19a9c27d9a8b55ccaef442e250a1c5159de3","unresolved":false,"context_lines":[{"line_number":545,"context_line":"        help\u003d\u0027URL to retrieve template object (e.g. from object store)\u0027,"},{"line_number":546,"context_line":"    )"},{"line_number":547,"context_line":"    parser.add_argument("},{"line_number":548,"context_line":"        \u0027--environment-file\u0027,"},{"line_number":549,"context_line":"        metavar\u003d\u0027\u003cfilename\u003e|\u003curl\u003e\u0027,"},{"line_number":550,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":551,"context_line":"        help\u003d\u0027Path to the environment.\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_bfeb8011","line":548,"updated":"2014-08-29 14:13:00.000000000","message":"If this can be a file or url, how about just --environment?","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"192e78a829cc02ad159158d27ff4c8774e9bde2d","unresolved":false,"context_lines":[{"line_number":545,"context_line":"        help\u003d\u0027URL to retrieve template object (e.g. from object store)\u0027,"},{"line_number":546,"context_line":"    )"},{"line_number":547,"context_line":"    parser.add_argument("},{"line_number":548,"context_line":"        \u0027--environment-file\u0027,"},{"line_number":549,"context_line":"        metavar\u003d\u0027\u003cfilename\u003e|\u003curl\u003e\u0027,"},{"line_number":550,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":551,"context_line":"        help\u003d\u0027Path to the environment.\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_a638d3d3","line":548,"in_reply_to":"1abeadc6_bfeb8011","updated":"2014-10-22 14:09:52.000000000","message":"Done","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"d6cc237b5ae3f4d2078aba65fda40de569c9d0bb","unresolved":false,"context_lines":[{"line_number":551,"context_line":"        help\u003d\u0027Path to the environment.\u0027,"},{"line_number":552,"context_line":"    )"},{"line_number":553,"context_line":"    parser.add_argument("},{"line_number":554,"context_line":"        \u0027--property\u0027,"},{"line_number":555,"context_line":"        dest\u003d\u0027properties\u0027,"},{"line_number":556,"context_line":"        metavar\u003d\u0027\u003ckey\u003dvalue\u003e\u0027,"},{"line_number":557,"context_line":"        help\u003d\u0027Parameters to be used in the stack. \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_f1219fb4","line":554,"updated":"2014-08-29 21:11:25.000000000","message":"Can we not call this parameter? The template format declares a parameters section which matches the values specified here, and properties is something different in the template (a property is an input value to a resource in the template)","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"bc9512fec741289afd2d97e0b7841fe11ffaece6","unresolved":false,"context_lines":[{"line_number":551,"context_line":"        help\u003d\u0027Path to the environment.\u0027,"},{"line_number":552,"context_line":"    )"},{"line_number":553,"context_line":"    parser.add_argument("},{"line_number":554,"context_line":"        \u0027--property\u0027,"},{"line_number":555,"context_line":"        dest\u003d\u0027properties\u0027,"},{"line_number":556,"context_line":"        metavar\u003d\u0027\u003ckey\u003dvalue\u003e\u0027,"},{"line_number":557,"context_line":"        help\u003d\u0027Parameters to be used in the stack. \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_72f7a659","line":554,"in_reply_to":"1abeadc6_f1219fb4","updated":"2014-09-04 03:02:48.000000000","message":"Unfortunate.  That will make the orchestration commands unique in that regard so this needs to be well documented,such as in the wiki command tables.  A comment here would be helpful too.","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"167f7c64e69880544222abd8d41a9d62990671d8","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            help\u003d\"File to write \u0027stack adopt\u0027 data file to\","},{"line_number":44,"context_line":"        )"},{"line_number":45,"context_line":"        parser.add_argument("},{"line_number":46,"context_line":"            \u0027id\u0027,"},{"line_number":47,"context_line":"            metavar\u003d\u0027\u003cstack\u003e\u0027,"},{"line_number":48,"context_line":"            help\u003d\u0027Name or ID of stack to abandon\u0027,"},{"line_number":49,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa7fdbe_5e3d8bba","line":46,"updated":"2014-10-22 21:03:33.000000000","message":"use stack or name here, to be consistent with the other functions","commit_id":"f2c08c06e48136508107056bf430bd7408905c21"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8b6d09ec6d83bc5dcaa47e617c0ff2485a835972","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            help\u003d\"File to write \u0027stack adopt\u0027 data file to\","},{"line_number":44,"context_line":"        )"},{"line_number":45,"context_line":"        parser.add_argument("},{"line_number":46,"context_line":"            \u0027id\u0027,"},{"line_number":47,"context_line":"            metavar\u003d\u0027\u003cstack\u003e\u0027,"},{"line_number":48,"context_line":"            help\u003d\u0027Name or ID of stack to abandon\u0027,"},{"line_number":49,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa7fdbe_5b17b954","line":46,"in_reply_to":"9aa7fdbe_5e3d8bba","updated":"2014-10-29 17:32:26.000000000","message":"Done","commit_id":"f2c08c06e48136508107056bf430bd7408905c21"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"167f7c64e69880544222abd8d41a9d62990671d8","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        heat_client \u003d self.app.client_manager.orchestration"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        try:"},{"line_number":58,"context_line":"            stack \u003d heat_client.stacks.abandon(stack_id\u003dparsed_args.id)"},{"line_number":59,"context_line":"        except heat_exc.HTTPNotFound:"},{"line_number":60,"context_line":"            raise exc.CommandError(\u0027Stack not found with id: %s\u0027 %"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa7fdbe_7e632fdc","line":57,"updated":"2014-10-22 21:03:33.000000000","message":"use utils.find_resrouces to find the stack initially, then dont worry about try/except, it\u0027ll perform a GET under the covers","commit_id":"f2c08c06e48136508107056bf430bd7408905c21"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8b6d09ec6d83bc5dcaa47e617c0ff2485a835972","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        heat_client \u003d self.app.client_manager.orchestration"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        try:"},{"line_number":58,"context_line":"            stack \u003d heat_client.stacks.abandon(stack_id\u003dparsed_args.id)"},{"line_number":59,"context_line":"        except heat_exc.HTTPNotFound:"},{"line_number":60,"context_line":"            raise exc.CommandError(\u0027Stack not found with id: %s\u0027 %"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa7fdbe_4d761e08","line":57,"in_reply_to":"9aa7fdbe_7e632fdc","updated":"2014-10-29 17:32:26.000000000","message":"Thanks, I didn\u0027t see that it would also raise the correct NotFound.","commit_id":"f2c08c06e48136508107056bf430bd7408905c21"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"167f7c64e69880544222abd8d41a9d62990671d8","unresolved":false,"context_lines":[{"line_number":470,"context_line":"        rollback_group.add_argument("},{"line_number":471,"context_line":"            \"--enable-rollback\","},{"line_number":472,"context_line":"            action\u003d\"store_true\","},{"line_number":473,"context_line":"            help\u003d\"Enable rollback on create/update failure\","},{"line_number":474,"context_line":"        )"},{"line_number":475,"context_line":"        rollback_group.add_argument("},{"line_number":476,"context_line":"            \"--disable-rollback\","}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa7fdbe_69c53b3b","line":473,"updated":"2014-10-22 21:03:33.000000000","message":"should this be update only, not create/update, same with line 478","commit_id":"f2c08c06e48136508107056bf430bd7408905c21"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8b6d09ec6d83bc5dcaa47e617c0ff2485a835972","unresolved":false,"context_lines":[{"line_number":470,"context_line":"        rollback_group.add_argument("},{"line_number":471,"context_line":"            \"--enable-rollback\","},{"line_number":472,"context_line":"            action\u003d\"store_true\","},{"line_number":473,"context_line":"            help\u003d\"Enable rollback on create/update failure\","},{"line_number":474,"context_line":"        )"},{"line_number":475,"context_line":"        rollback_group.add_argument("},{"line_number":476,"context_line":"            \"--disable-rollback\","}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa7fdbe_cd592e90","line":473,"in_reply_to":"9aa7fdbe_69c53b3b","updated":"2014-10-29 17:32:26.000000000","message":"Done","commit_id":"f2c08c06e48136508107056bf430bd7408905c21"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"167f7c64e69880544222abd8d41a9d62990671d8","unresolved":false,"context_lines":[{"line_number":478,"context_line":"            help\u003d\"Disable rollback on create/update failure\","},{"line_number":479,"context_line":"        )"},{"line_number":480,"context_line":"        parser.add_argument("},{"line_number":481,"context_line":"            \u0027id\u0027,"},{"line_number":482,"context_line":"            metavar\u003d\u0027\u003cstack\u003e\u0027,"},{"line_number":483,"context_line":"            help\u003d\u0027Name or ID of stack to update\u0027,"},{"line_number":484,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa7fdbe_89c09f2b","line":481,"updated":"2014-10-22 21:03:33.000000000","message":"name or id, pick one!","commit_id":"f2c08c06e48136508107056bf430bd7408905c21"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"167f7c64e69880544222abd8d41a9d62990671d8","unresolved":false,"context_lines":[{"line_number":523,"context_line":"    parser.add_argument("},{"line_number":524,"context_line":"        \u0027--template\u0027,"},{"line_number":525,"context_line":"        metavar\u003d\u0027\u003cfilename\u003e|\u003curl\u003e\u0027,"},{"line_number":526,"context_line":"        help\u003d\u0027Path to the template\u0027,"},{"line_number":527,"context_line":"    )"},{"line_number":528,"context_line":"    parser.add_argument("},{"line_number":529,"context_line":"        \u0027--environment\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa7fdbe_09b58fcc","line":526,"updated":"2014-10-22 21:03:33.000000000","message":"might want to add \"(filename or URL)\" to the help","commit_id":"f2c08c06e48136508107056bf430bd7408905c21"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"8b6d09ec6d83bc5dcaa47e617c0ff2485a835972","unresolved":false,"context_lines":[{"line_number":523,"context_line":"    parser.add_argument("},{"line_number":524,"context_line":"        \u0027--template\u0027,"},{"line_number":525,"context_line":"        metavar\u003d\u0027\u003cfilename\u003e|\u003curl\u003e\u0027,"},{"line_number":526,"context_line":"        help\u003d\u0027Path to the template\u0027,"},{"line_number":527,"context_line":"    )"},{"line_number":528,"context_line":"    parser.add_argument("},{"line_number":529,"context_line":"        \u0027--environment\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa7fdbe_ad64ea49","line":526,"in_reply_to":"9aa7fdbe_09b58fcc","updated":"2014-10-29 17:32:26.000000000","message":"Done","commit_id":"f2c08c06e48136508107056bf430bd7408905c21"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b4cd822f793ad5f17a23a6b32bc4484aad7b6e82","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from cliff import lister"},{"line_number":19,"context_line":"from cliff import show"},{"line_number":20,"context_line":"from heatclient import exc as heat_exc"},{"line_number":21,"context_line":"from heatclient.common import template_utils as t_utils"},{"line_number":22,"context_line":"from heatclient.common import utils as heat_utils"},{"line_number":23,"context_line":"from heatclient.openstack.common import jsonutils"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aa7fdbe_a030719f","line":20,"updated":"2014-10-29 17:55:50.000000000","message":"hoping that we can remove some of the heatclient imports, explanations below. i think the template_utils and heat_utils will be tough, i\u0027ll have to look into them.","commit_id":"297f57e962ca3ee0b68eeaa9a6a8984a707ab457"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b4cd822f793ad5f17a23a6b32bc4484aad7b6e82","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from heatclient import exc as heat_exc"},{"line_number":21,"context_line":"from heatclient.common import template_utils as t_utils"},{"line_number":22,"context_line":"from heatclient.common import utils as heat_utils"},{"line_number":23,"context_line":"from heatclient.openstack.common import jsonutils"},{"line_number":24,"context_line":"from six import iteritems"},{"line_number":25,"context_line":"from six.moves.urllib import request"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9aa7fdbe_0095bd87","line":23,"updated":"2014-10-29 17:55:50.000000000","message":"i would prefer to import the stdlib json, 1) not gaining that much more, it\u0027s just a loads. 2) if heatclient switches to oslo.serialization and ditches jsonutils we are broken.","commit_id":"297f57e962ca3ee0b68eeaa9a6a8984a707ab457"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b4cd822f793ad5f17a23a6b32bc4484aad7b6e82","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            \u0027--adopt-file\u0027,"},{"line_number":41,"context_line":"            metavar\u003d\u0027\u003cfilename\u003e\u0027,"},{"line_number":42,"context_line":"            default\u003d\"\u003cSTACK_NAME\u003e-abandon-data.json\","},{"line_number":43,"context_line":"            help\u003d\"File to write \u0027stack adopt\u0027 data file to\","},{"line_number":44,"context_line":"        )"},{"line_number":45,"context_line":"        parser.add_argument("},{"line_number":46,"context_line":"            \u0027stack\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aa7fdbe_40f0a5c9","line":43,"updated":"2014-10-29 17:55:50.000000000","message":"can you wrap the help text with _()\n\nfor the whole file","commit_id":"297f57e962ca3ee0b68eeaa9a6a8984a707ab457"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"6c279f4062c614472cc189103df784996df7b488","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        )"},{"line_number":103,"context_line":"        parser.add_argument("},{"line_number":104,"context_line":"            \u0027name\u0027,"},{"line_number":105,"context_line":"            metavar\u003d\u0027\u003cstack name\u003e\u0027,"},{"line_number":106,"context_line":"            help\u003d\u0027Name of stack to adopt\u0027,"},{"line_number":107,"context_line":"        )"},{"line_number":108,"context_line":"        return _add_template_options(parser)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_aefd9070","line":105,"updated":"2014-12-31 00:45:57.000000000","message":"\u003cstack-name\u003e?","commit_id":"297f57e962ca3ee0b68eeaa9a6a8984a707ab457"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1e17e3e8a9799a2581730e438da35474dfb948f3","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            )"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        formatters \u003d ("},{"line_number":232,"context_line":"            (\u0027description\u0027, heat_utils.text_wrap_formatter),"},{"line_number":233,"context_line":"            (\u0027template_description\u0027, heat_utils.text_wrap_formatter),"},{"line_number":234,"context_line":"            (\u0027stack_status_reason\u0027, heat_utils.text_wrap_formatter),"},{"line_number":235,"context_line":"            (\u0027parameters\u0027, heat_utils.json_formatter),"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aa7fdbe_00c93d5a","line":232,"updated":"2014-10-29 18:00:46.000000000","message":"i\u0027m OK with the imports from heat_utils, they seem like stuff that might be handy to have in OSC, so if that\u0027s the case we can merge them now and re-work as needed. \n\nthe template_utils look like they are going to have to be imported.","commit_id":"297f57e962ca3ee0b68eeaa9a6a8984a707ab457"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b4cd822f793ad5f17a23a6b32bc4484aad7b6e82","unresolved":false,"context_lines":[{"line_number":266,"context_line":"            try:"},{"line_number":267,"context_line":"                heat_client.stacks.delete(stack_id\u003dsid)"},{"line_number":268,"context_line":"                data.append(heat_client.stacks.get(sid))"},{"line_number":269,"context_line":"            except heat_exc.HTTPNotFound as e:"},{"line_number":270,"context_line":"                failure_count +\u003d 1"},{"line_number":271,"context_line":"                print(e)"},{"line_number":272,"context_line":"        if failure_count \u003d\u003d len(parsed_args.stacks):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aa7fdbe_e05c39f0","line":269,"updated":"2014-10-29 17:55:50.000000000","message":"are you trying to catch this exception for the case where the user deletes a stack that does not exist? \n\ncan you use stack_id \u003d utils.find_resource(heat_client.stacks, parsed_args.stack).id before hand to check of it\u0027s existence?\n\ntrying to remove the imports from python-heatclient and the exceptions seem like an easy one","commit_id":"297f57e962ca3ee0b68eeaa9a6a8984a707ab457"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"6c279f4062c614472cc189103df784996df7b488","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        delete_group.add_argument("},{"line_number":311,"context_line":"            \u0027--hide-deleted\u0027,"},{"line_number":312,"context_line":"            action\u003d\"store_true\","},{"line_number":313,"context_line":"            help\u003d\u0027Don\\\u0027t include soft-deleted stacks in the stack listing\u0027"},{"line_number":314,"context_line":"        )"},{"line_number":315,"context_line":"        delete_group.add_argument("},{"line_number":316,"context_line":"            \u0027--show-deleted\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_4e434caf","line":313,"updated":"2014-12-31 00:45:57.000000000","message":"What\u0027s the default? Do we display the soft-deleted stack too?","commit_id":"297f57e962ca3ee0b68eeaa9a6a8984a707ab457"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"6c279f4062c614472cc189103df784996df7b488","unresolved":false,"context_lines":[{"line_number":385,"context_line":"        parser.add_argument("},{"line_number":386,"context_line":"            \u0027stack\u0027,"},{"line_number":387,"context_line":"            metavar\u003d\u0027\u003cstack\u003e\u0027,"},{"line_number":388,"context_line":"            help\u003d\u0027Name or ID of stack to update\u0027,"},{"line_number":389,"context_line":"        )"},{"line_number":390,"context_line":"        return parser"},{"line_number":391,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_8e1454a0","line":388,"updated":"2014-12-31 00:45:57.000000000","message":"\".. to resume..\"","commit_id":"297f57e962ca3ee0b68eeaa9a6a8984a707ab457"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b4cd822f793ad5f17a23a6b32bc4484aad7b6e82","unresolved":false,"context_lines":[{"line_number":514,"context_line":"        return _show_stack(heat_client, stack_id\u003dparsed_args.stack)"},{"line_number":515,"context_line":""},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"def _add_template_options(parser):"},{"line_number":518,"context_line":"    parser.add_argument("},{"line_number":519,"context_line":"        \u0027--template\u0027,"},{"line_number":520,"context_line":"        metavar\u003d\u0027\u003cfilename\u003e|\u003curl\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aa7fdbe_20cac16e","line":517,"updated":"2014-10-29 17:55:50.000000000","message":"neat","commit_id":"297f57e962ca3ee0b68eeaa9a6a8984a707ab457"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b4cd822f793ad5f17a23a6b32bc4484aad7b6e82","unresolved":false,"context_lines":[{"line_number":539,"context_line":""},{"line_number":540,"context_line":"def _show_stack(heat_client, **kwargs):"},{"line_number":541,"context_line":"    try:"},{"line_number":542,"context_line":"        data \u003d heat_client.stacks.get(**kwargs)"},{"line_number":543,"context_line":"    except heat_exc.HTTPNotFound:"},{"line_number":544,"context_line":"        raise exc.CommandError(\u0027Stack not found with params: %s\u0027 % kwargs)"},{"line_number":545,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aa7fdbe_60684988","line":542,"updated":"2014-10-29 17:55:50.000000000","message":"same as above, as we use stack_id \u003d utils.find_resource(heat_client.stacks, parsed_args.stack).id here instead? and not rely on heat_exc ?","commit_id":"297f57e962ca3ee0b68eeaa9a6a8984a707ab457"}],"openstackclient/tests/orchestration/v1/fakes.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a6a09f064640897d0592468d466e3ce1612672fe","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#   Copyright 2014 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_93109a5a","line":1,"updated":"2014-09-03 19:42:36.000000000","message":"rm this line","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"192e78a829cc02ad159158d27ff4c8774e9bde2d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#   Copyright 2014 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_cb4882ce","line":1,"in_reply_to":"fa98f980_93109a5a","updated":"2014-10-22 14:09:52.000000000","message":"Done","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"}],"openstackclient/tests/orchestration/v1/test_server.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a6a09f064640897d0592468d466e3ce1612672fe","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#   Copyright 2014 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_f30ac624","line":1,"updated":"2014-09-03 19:42:36.000000000","message":"rm this line","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"192e78a829cc02ad159158d27ff4c8774e9bde2d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#   Copyright 2014 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_9eb8852b","line":1,"in_reply_to":"fa98f980_f30ac624","updated":"2014-10-22 14:09:52.000000000","message":"Done","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"}],"requirements.txt":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a6a09f064640897d0592468d466e3ce1612672fe","unresolved":false,"context_lines":[{"line_number":4,"context_line":"python-cinderclient\u003e\u003d1.0.7"},{"line_number":5,"context_line":"python-glanceclient\u003e\u003d0.13.1"},{"line_number":6,"context_line":"python-heatclient\u003e\u003d0.2.9"},{"line_number":7,"context_line":"python-keystoneclient\u003e\u003d0.10.0"},{"line_number":8,"context_line":"python-neutronclient\u003e\u003d2.3.6,\u003c3"},{"line_number":9,"context_line":"python-novaclient\u003e\u003d2.17.0"},{"line_number":10,"context_line":"requests\u003e\u003d1.2.1"}],"source_content_type":"text/plain","patch_set":9,"id":"fa98f980_132d8aa8","line":7,"updated":"2014-09-03 19:42:36.000000000","message":"don\u0027t reorder all these, just add in heat. \nlet the requirements proposal bot organize the reqs.","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"192e78a829cc02ad159158d27ff4c8774e9bde2d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"python-cinderclient\u003e\u003d1.0.7"},{"line_number":5,"context_line":"python-glanceclient\u003e\u003d0.13.1"},{"line_number":6,"context_line":"python-heatclient\u003e\u003d0.2.9"},{"line_number":7,"context_line":"python-keystoneclient\u003e\u003d0.10.0"},{"line_number":8,"context_line":"python-neutronclient\u003e\u003d2.3.6,\u003c3"},{"line_number":9,"context_line":"python-novaclient\u003e\u003d2.17.0"},{"line_number":10,"context_line":"requests\u003e\u003d1.2.1"}],"source_content_type":"text/plain","patch_set":9,"id":"baa201ad_5eb29d4c","line":7,"in_reply_to":"fa98f980_132d8aa8","updated":"2014-10-22 14:09:52.000000000","message":"Understood, reverted.","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"6c279f4062c614472cc189103df784996df7b488","unresolved":false,"context_lines":[{"line_number":14,"context_line":"python-novaclient\u003e\u003d2.18.0"},{"line_number":15,"context_line":"python-cinderclient\u003e\u003d1.1.0"},{"line_number":16,"context_line":"python-neutronclient\u003e\u003d2.3.6,\u003c3"},{"line_number":17,"context_line":"python-heatclient\u003e\u003d0.2.12"},{"line_number":18,"context_line":"requests\u003e\u003d2.2.0,!\u003d2.4.0"},{"line_number":19,"context_line":"stevedore\u003e\u003d1.0.0  # Apache-2.0"}],"source_content_type":"text/plain","patch_set":11,"id":"3a961159_0ec4e43f","line":17,"updated":"2014-12-31 00:45:57.000000000","message":"In openstack/requirements the version is python-heatclient\u003e\u003d0.2.9\n\nhttps://github.com/openstack/requirements/blob/master/global-requirements.txt#L112\n\nShould we match that version?","commit_id":"297f57e962ca3ee0b68eeaa9a6a8984a707ab457"}],"setup.cfg":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"openstack.orchestration.v1 \u003d"},{"line_number":304,"context_line":"    stack_list \u003d openstackclient.orchestration.v1.stack:ListStack"},{"line_number":305,"context_line":"    stack_preview \u003d openstackclient.orchestration.v1.stack:PreviewStack"},{"line_number":306,"context_line":"    stack_create \u003d openstackclient.orchestration.v1.stack:CreateStack"},{"line_number":307,"context_line":"    stack_show \u003d openstackclient.orchestration.v1.stack:ShowStack"},{"line_number":308,"context_line":"    stack_delete \u003d openstackclient.orchestration.v1.stack:DeleteStack"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"baada198_57fd8d3b","line":305,"updated":"2014-08-06 17:41:29.000000000","message":"I\u0027m going to go look at what this actually does, but I\u0027ll need a bit of convincing to add another verb...","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"558412bd9ce6dc3e7410486fe965f363a43551a4","unresolved":false,"context_lines":[{"line_number":306,"context_line":"    stack_create \u003d openstackclient.orchestration.v1.stack:CreateStack"},{"line_number":307,"context_line":"    stack_show \u003d openstackclient.orchestration.v1.stack:ShowStack"},{"line_number":308,"context_line":"    stack_delete \u003d openstackclient.orchestration.v1.stack:DeleteStack"},{"line_number":309,"context_line":"    stack_update \u003d openstackclient.orchestration.v1.stack:UpdateStack"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"[build_sphinx]"},{"line_number":312,"context_line":"source-dir \u003d doc/source"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"baada198_9749e5ba","line":309,"updated":"2014-08-06 17:41:29.000000000","message":"We use \u0027set\u0027 for the \u0027change an existing thing\u0027 verb.  Also put these in alpha order, both the block in the file and the items in the block.","commit_id":"c1aa7134a9108155355d2042c3cb3cbee37e2092"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a6a09f064640897d0592468d466e3ce1612672fe","unresolved":false,"context_lines":[{"line_number":279,"context_line":"    object_show \u003d openstackclient.object.v1.object:ShowObject"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"openstack.orchestration.v1 \u003d"},{"line_number":282,"context_line":"    stack_abandon \u003d openstackclient.orchestration.v1.stack:AbandonStack"},{"line_number":283,"context_line":"    stack_adopt \u003d openstackclient.orchestration.v1.stack:AdoptStack"},{"line_number":284,"context_line":"    stack_create \u003d openstackclient.orchestration.v1.stack:CreateStack"},{"line_number":285,"context_line":"    stack_delete \u003d openstackclient.orchestration.v1.stack:DeleteStack"}],"source_content_type":"text/x-ttcn-cfg","patch_set":9,"id":"fa98f980_936b3af0","line":282,"updated":"2014-09-03 19:42:36.000000000","message":"in nova, we use suspend and pause, could one of those fit? what about disable, i\u0027m sure we have that somewhere too...","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a6a09f064640897d0592468d466e3ce1612672fe","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"openstack.orchestration.v1 \u003d"},{"line_number":282,"context_line":"    stack_abandon \u003d openstackclient.orchestration.v1.stack:AbandonStack"},{"line_number":283,"context_line":"    stack_adopt \u003d openstackclient.orchestration.v1.stack:AdoptStack"},{"line_number":284,"context_line":"    stack_create \u003d openstackclient.orchestration.v1.stack:CreateStack"},{"line_number":285,"context_line":"    stack_delete \u003d openstackclient.orchestration.v1.stack:DeleteStack"},{"line_number":286,"context_line":"    stack_list \u003d openstackclient.orchestration.v1.stack:ListStack"}],"source_content_type":"text/x-ttcn-cfg","patch_set":9,"id":"fa98f980_137f4aac","line":283,"updated":"2014-09-03 19:42:36.000000000","message":"adopt seems rather strange... is it to undo something being abandoned?\n\nseems like enabled/disabled to me.","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a6a09f064640897d0592468d466e3ce1612672fe","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    stack_list \u003d openstackclient.orchestration.v1.stack:ListStack"},{"line_number":287,"context_line":"    stack_resume \u003d openstackclient.orchestration.v1.stack:ResumeStack"},{"line_number":288,"context_line":"    stack_show \u003d openstackclient.orchestration.v1.stack:ShowStack"},{"line_number":289,"context_line":"    stack_suspend \u003d openstackclient.orchestration.v1.stack:SuspendStack"},{"line_number":290,"context_line":"    stack_update \u003d openstackclient.orchestration.v1.stack:UpdateStack"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"openstack.volume.v1 \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":9,"id":"fa98f980_b3475e76","line":289,"updated":"2014-09-03 19:42:36.000000000","message":"are suspend and resume related?","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f4df19a9c27d9a8b55ccaef442e250a1c5159de3","unresolved":false,"context_lines":[{"line_number":287,"context_line":"    stack_resume \u003d openstackclient.orchestration.v1.stack:ResumeStack"},{"line_number":288,"context_line":"    stack_show \u003d openstackclient.orchestration.v1.stack:ShowStack"},{"line_number":289,"context_line":"    stack_suspend \u003d openstackclient.orchestration.v1.stack:SuspendStack"},{"line_number":290,"context_line":"    stack_update \u003d openstackclient.orchestration.v1.stack:UpdateStack"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"openstack.volume.v1 \u003d"},{"line_number":293,"context_line":"    backup_create \u003d openstackclient.volume.v1.backup:CreateBackup"}],"source_content_type":"text/x-ttcn-cfg","patch_set":9,"id":"1abeadc6_bb8d9dd5","line":290,"updated":"2014-08-29 14:13:00.000000000","message":"Should be stack_set","commit_id":"4cc79307b08849a8a59d75d258b45c9c38841158"}]}
