)]}'
{"openstack/orchestration/v1/stack.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"421101cbc859f24b257642fb0b3c6576d65905f3","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def create_by_id(cls, session, attrs, resource_id\u003dNone, path_args\u003dNone):"},{"line_number":50,"context_line":"        body \u003d attrs.copy()"},{"line_number":51,"context_line":"        body.pop(\u0027id\u0027, None)"},{"line_number":52,"context_line":"        body.pop(\u0027name\u0027, None)"},{"line_number":53,"context_line":"        url \u003d cls.base_path % path_args"},{"line_number":54,"context_line":"        resp \u003d session.post(url, service\u003dcls.service, json\u003dbody).body"},{"line_number":55,"context_line":"        return resp[cls.resource_key]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_7cf5bceb","line":52,"updated":"2015-03-13 14:56:06.000000000","message":"Should get rid of this line, right?  The stack_name should be in the body and there is no name attribute.","commit_id":"a3fd2d99b8106cb1e1293e330a936cc77354583a"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"04f2385fa8e78f8e9a15e1c0453a62326584c064","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def create_by_id(cls, session, attrs, resource_id\u003dNone, path_args\u003dNone):"},{"line_number":50,"context_line":"        body \u003d attrs.copy()"},{"line_number":51,"context_line":"        body.pop(\u0027id\u0027, None)"},{"line_number":52,"context_line":"        body.pop(\u0027name\u0027, None)"},{"line_number":53,"context_line":"        url \u003d cls.base_path % path_args"},{"line_number":54,"context_line":"        resp \u003d session.post(url, service\u003dcls.service, json\u003dbody).body"},{"line_number":55,"context_line":"        return resp[cls.resource_key]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_45f9f84c","line":52,"in_reply_to":"9a80dd14_7cf5bceb","updated":"2015-03-13 15:33:12.000000000","message":"Good catch. I meant to call this out in my initial comment. That\u0027s what I get for a late night patch.\n\n\nWithout that line, this is what the SDK sends in the body\n\n    {\n      \"stack_name\": \"test_stack\",\n      \"template_url\": \"http://git.openstack.org/cgit/openstack/heat-templates/plain/hot/F20/WordPress_Native.yaml\",\n      \"name\": \"test_stack\",\n      \"parameters\": {\n        \"key_name\": \"heat_key\",\n        \"image_id\": \"fedora-20.x86_64\"\n        }\n     }\n\nIt has to do with how the SDK handles the name_attribute. Initially the name attr gets set because it\u0027s part of the dict passed into create_stack. Then stack_name gets set in http://git.openstack.org/cgit/stackforge/python-openstacksdk/tree/openstack/resource.py#n409\n\nSo we wind up with both in the body. I used that pop to eliminate the extraneous name attr. Heat ignores it even if I do send it but I\u0027d rather not do \"garbage in\".\n\nI chose to add \n\n    name_attribute \u003d \u0027stack_name\u0027\n\nso when people are working with Orchestration, it has a consistent \u0027name\u0027 attr like the rest of the services.\n\nIf there\u0027s a better way to handle this, please let me know.","commit_id":"a3fd2d99b8106cb1e1293e330a936cc77354583a"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"421101cbc859f24b257642fb0b3c6576d65905f3","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        body \u003d attrs.copy()"},{"line_number":51,"context_line":"        body.pop(\u0027id\u0027, None)"},{"line_number":52,"context_line":"        body.pop(\u0027name\u0027, None)"},{"line_number":53,"context_line":"        url \u003d cls.base_path % path_args"},{"line_number":54,"context_line":"        resp \u003d session.post(url, service\u003dcls.service, json\u003dbody).body"},{"line_number":55,"context_line":"        return resp[cls.resource_key]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_3c3d0490","line":53,"updated":"2015-03-13 14:56:06.000000000","message":"looks like you could skip path_args here since this isn\u0027t going to have any.","commit_id":"a3fd2d99b8106cb1e1293e330a936cc77354583a"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"d169374672631a60923a5d710f37c8aaf67862bf","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        body \u003d attrs.copy()"},{"line_number":51,"context_line":"        body.pop(\u0027id\u0027, None)"},{"line_number":52,"context_line":"        body.pop(\u0027name\u0027, None)"},{"line_number":53,"context_line":"        url \u003d cls.base_path % path_args"},{"line_number":54,"context_line":"        resp \u003d session.post(url, service\u003dcls.service, json\u003dbody).body"},{"line_number":55,"context_line":"        return resp[cls.resource_key]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_4874adfd","line":53,"in_reply_to":"9a80dd14_08739580","updated":"2015-03-13 16:11:29.000000000","message":"I would think we\u0027d need it in the signature because resource.create","commit_id":"a3fd2d99b8106cb1e1293e330a936cc77354583a"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"04cb30943808a44cc991a8e5912ac50de0d60e2b","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        body \u003d attrs.copy()"},{"line_number":51,"context_line":"        body.pop(\u0027id\u0027, None)"},{"line_number":52,"context_line":"        body.pop(\u0027name\u0027, None)"},{"line_number":53,"context_line":"        url \u003d cls.base_path % path_args"},{"line_number":54,"context_line":"        resp \u003d session.post(url, service\u003dcls.service, json\u003dbody).body"},{"line_number":55,"context_line":"        return resp[cls.resource_key]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_64174855","line":53,"in_reply_to":"9a80dd14_3214b6e8","updated":"2015-03-17 21:04:01.000000000","message":"Also note that if we changed resource.create(self, session) to call \n\n    stack.create_by_id(session, self._attrs, resource_id\u003dself.id, path_args\u003dself) \n\nthen we could just do\n\n    stack.create_by_id(cls, session, attrs, **kwargs)\n\nbut that\u0027s a moot point if resource_id is going away anyway.","commit_id":"a3fd2d99b8106cb1e1293e330a936cc77354583a"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"04f2385fa8e78f8e9a15e1c0453a62326584c064","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        body \u003d attrs.copy()"},{"line_number":51,"context_line":"        body.pop(\u0027id\u0027, None)"},{"line_number":52,"context_line":"        body.pop(\u0027name\u0027, None)"},{"line_number":53,"context_line":"        url \u003d cls.base_path % path_args"},{"line_number":54,"context_line":"        resp \u003d session.post(url, service\u003dcls.service, json\u003dbody).body"},{"line_number":55,"context_line":"        return resp[cls.resource_key]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_08739580","line":53,"in_reply_to":"9a80dd14_3c3d0490","updated":"2015-03-13 15:33:12.000000000","message":"Should I also remove it from the method signature like it\u0027s done in container?\n\nhttp://git.openstack.org/cgit/stackforge/python-openstacksdk/tree/openstack/object_store/v1/container.py#n122","commit_id":"a3fd2d99b8106cb1e1293e330a936cc77354583a"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"91f3390e392bbd80c6798802706195f4e04b6935","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        body \u003d attrs.copy()"},{"line_number":51,"context_line":"        body.pop(\u0027id\u0027, None)"},{"line_number":52,"context_line":"        body.pop(\u0027name\u0027, None)"},{"line_number":53,"context_line":"        url \u003d cls.base_path % path_args"},{"line_number":54,"context_line":"        resp \u003d session.post(url, service\u003dcls.service, json\u003dbody).body"},{"line_number":55,"context_line":"        return resp[cls.resource_key]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_881db311","line":53,"in_reply_to":"9a80dd14_4874adfd","updated":"2015-03-17 16:14:49.000000000","message":"You can just remove resource_id and path_args from the signature and put **kwargs in place since you don\u0027t actually care about what ends up there since it\u0027s just Nones anyway. If you ever do have to care about what named arguments are being sent from Stack.create, you can add them back.\n\n(fwiw eventually resource_id will be out of the create path anyway - I have changes in-flight to take care of that)","commit_id":"a3fd2d99b8106cb1e1293e330a936cc77354583a"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"a34cde06f2bcdd8a27818bf76237cfa76d1ebf97","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        body \u003d attrs.copy()"},{"line_number":51,"context_line":"        body.pop(\u0027id\u0027, None)"},{"line_number":52,"context_line":"        body.pop(\u0027name\u0027, None)"},{"line_number":53,"context_line":"        url \u003d cls.base_path % path_args"},{"line_number":54,"context_line":"        resp \u003d session.post(url, service\u003dcls.service, json\u003dbody).body"},{"line_number":55,"context_line":"        return resp[cls.resource_key]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_3214b6e8","line":53,"in_reply_to":"9a80dd14_881db311","updated":"2015-03-17 20:17:27.000000000","message":"So if I change it to stack.create_by_id(cls, session, attrs, **kwargs) when the method resource.create(self, session) calls stack.create_by_id(session, self._attrs, self.id, path_args\u003dself) the wrong number of args are given.\n\nI can remove id and path_args by doing\n\n    stack.create_by_id(cls, session, attrs, *args, **kwargs)\n\nNormally I\u0027d be inclined to leave the method signature as it is and have the subclass method match the superclass method. Is there a Pythonic reason to use *args and **kwargs that I\u0027m unaware of?","commit_id":"a3fd2d99b8106cb1e1293e330a936cc77354583a"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"628b3f5b376731d0dfe31691785572850ce7de2d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    allow_delete \u003d True"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    # Properties"},{"line_number":32,"context_line":"    stack_name \u003d resource.prop(\u0027stack_name\u0027)"},{"line_number":33,"context_line":"    capabilities \u003d resource.prop(\u0027capabilities\u0027)"},{"line_number":34,"context_line":"    creation_time \u003d resource.prop(\u0027creation_time\u0027)"},{"line_number":35,"context_line":"    description \u003d resource.prop(\u0027description\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aaa499b_7047bf1d","line":32,"updated":"2015-04-14 15:53:49.000000000","message":"Does everyone think stack_name is better than name?","commit_id":"d95c08bb24bc552da275e7ab4569629aa709416a"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"98635b93134b23e927d42c01b31b59b9d43bd715","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    allow_delete \u003d True"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    # Properties"},{"line_number":32,"context_line":"    stack_name \u003d resource.prop(\u0027stack_name\u0027)"},{"line_number":33,"context_line":"    capabilities \u003d resource.prop(\u0027capabilities\u0027)"},{"line_number":34,"context_line":"    creation_time \u003d resource.prop(\u0027creation_time\u0027)"},{"line_number":35,"context_line":"    description \u003d resource.prop(\u0027description\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aa745d1_5258a256","line":32,"in_reply_to":"7aaa499b_4fc77945","updated":"2015-04-15 23:50:45.000000000","message":"Done","commit_id":"d95c08bb24bc552da275e7ab4569629aa709416a"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"98635b93134b23e927d42c01b31b59b9d43bd715","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    allow_delete \u003d True"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    # Properties"},{"line_number":32,"context_line":"    stack_name \u003d resource.prop(\u0027stack_name\u0027)"},{"line_number":33,"context_line":"    capabilities \u003d resource.prop(\u0027capabilities\u0027)"},{"line_number":34,"context_line":"    creation_time \u003d resource.prop(\u0027creation_time\u0027)"},{"line_number":35,"context_line":"    description \u003d resource.prop(\u0027description\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aa745d1_b2480689","line":32,"in_reply_to":"7aaa499b_7047bf1d","updated":"2015-04-15 23:50:45.000000000","message":"Nope. Switching to name.","commit_id":"d95c08bb24bc552da275e7ab4569629aa709416a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"73ea6e9ccc15637c81dc1e2a1aeb4c51407c5170","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    allow_delete \u003d True"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    # Properties"},{"line_number":32,"context_line":"    stack_name \u003d resource.prop(\u0027stack_name\u0027)"},{"line_number":33,"context_line":"    capabilities \u003d resource.prop(\u0027capabilities\u0027)"},{"line_number":34,"context_line":"    creation_time \u003d resource.prop(\u0027creation_time\u0027)"},{"line_number":35,"context_line":"    description \u003d resource.prop(\u0027description\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aaa499b_4fc77945","line":32,"in_reply_to":"7aaa499b_7047bf1d","updated":"2015-04-14 19:32:04.000000000","message":"no, it\u0027s the name attribute of a stack object. stack_name seems redundant.","commit_id":"d95c08bb24bc552da275e7ab4569629aa709416a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"73ea6e9ccc15637c81dc1e2a1aeb4c51407c5170","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    notification_topics \u003d resource.prop(\u0027notification_topics\u0027)"},{"line_number":39,"context_line":"    outputs \u003d resource.prop(\u0027outputs\u0027)"},{"line_number":40,"context_line":"    parameters \u003d resource.prop(\u0027parameters\u0027, type\u003ddict)"},{"line_number":41,"context_line":"    stack_status \u003d resource.prop(\u0027stack_status\u0027)"},{"line_number":42,"context_line":"    stack_status_reason \u003d resource.prop(\u0027stack_status_reason\u0027)"},{"line_number":43,"context_line":"    template_description \u003d resource.prop(\u0027template_description\u0027)"},{"line_number":44,"context_line":"    template_url \u003d resource.prop(\u0027template_url\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aaa499b_cfe149d2","line":41,"updated":"2015-04-14 19:32:04.000000000","message":"as does stack_status","commit_id":"d95c08bb24bc552da275e7ab4569629aa709416a"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"98635b93134b23e927d42c01b31b59b9d43bd715","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    notification_topics \u003d resource.prop(\u0027notification_topics\u0027)"},{"line_number":39,"context_line":"    outputs \u003d resource.prop(\u0027outputs\u0027)"},{"line_number":40,"context_line":"    parameters \u003d resource.prop(\u0027parameters\u0027, type\u003ddict)"},{"line_number":41,"context_line":"    stack_status \u003d resource.prop(\u0027stack_status\u0027)"},{"line_number":42,"context_line":"    stack_status_reason \u003d resource.prop(\u0027stack_status_reason\u0027)"},{"line_number":43,"context_line":"    template_description \u003d resource.prop(\u0027template_description\u0027)"},{"line_number":44,"context_line":"    template_url \u003d resource.prop(\u0027template_url\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aa745d1_925e2a44","line":41,"in_reply_to":"7aaa499b_cfe149d2","updated":"2015-04-15 23:50:45.000000000","message":"Done","commit_id":"d95c08bb24bc552da275e7ab4569629aa709416a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"73ea6e9ccc15637c81dc1e2a1aeb4c51407c5170","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    outputs \u003d resource.prop(\u0027outputs\u0027)"},{"line_number":40,"context_line":"    parameters \u003d resource.prop(\u0027parameters\u0027, type\u003ddict)"},{"line_number":41,"context_line":"    stack_status \u003d resource.prop(\u0027stack_status\u0027)"},{"line_number":42,"context_line":"    stack_status_reason \u003d resource.prop(\u0027stack_status_reason\u0027)"},{"line_number":43,"context_line":"    template_description \u003d resource.prop(\u0027template_description\u0027)"},{"line_number":44,"context_line":"    template_url \u003d resource.prop(\u0027template_url\u0027)"},{"line_number":45,"context_line":"    timeout_mins \u003d resource.prop(\u0027timeout_mins\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aaa499b_6fd35505","line":42,"updated":"2015-04-14 19:32:04.000000000","message":"and stack_status_reason","commit_id":"d95c08bb24bc552da275e7ab4569629aa709416a"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"98635b93134b23e927d42c01b31b59b9d43bd715","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    outputs \u003d resource.prop(\u0027outputs\u0027)"},{"line_number":40,"context_line":"    parameters \u003d resource.prop(\u0027parameters\u0027, type\u003ddict)"},{"line_number":41,"context_line":"    stack_status \u003d resource.prop(\u0027stack_status\u0027)"},{"line_number":42,"context_line":"    stack_status_reason \u003d resource.prop(\u0027stack_status_reason\u0027)"},{"line_number":43,"context_line":"    template_description \u003d resource.prop(\u0027template_description\u0027)"},{"line_number":44,"context_line":"    template_url \u003d resource.prop(\u0027template_url\u0027)"},{"line_number":45,"context_line":"    timeout_mins \u003d resource.prop(\u0027timeout_mins\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aa745d1_725b9e55","line":42,"in_reply_to":"7aaa499b_6fd35505","updated":"2015-04-15 23:50:45.000000000","message":"Done","commit_id":"d95c08bb24bc552da275e7ab4569629aa709416a"}],"openstack/tests/unit/orchestration/v1/test_stack.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"628b3f5b376731d0dfe31691785572850ce7de2d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.assertEqual(EXAMPLE[\u0027template_url\u0027],"},{"line_number":71,"context_line":"                         sot.template_url)"},{"line_number":72,"context_line":"        self.assertEqual(EXAMPLE[\u0027timeout_mins\u0027], sot.timeout_mins)"},{"line_number":73,"context_line":"        self.assertEqual(EXAMPLE[\u0027updated_time\u0027], sot.updated_time)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aaa499b_f0086fdb","line":73,"updated":"2015-04-14 15:53:49.000000000","message":"Needs a test for the create down here.","commit_id":"d95c08bb24bc552da275e7ab4569629aa709416a"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"98635b93134b23e927d42c01b31b59b9d43bd715","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.assertEqual(EXAMPLE[\u0027template_url\u0027],"},{"line_number":71,"context_line":"                         sot.template_url)"},{"line_number":72,"context_line":"        self.assertEqual(EXAMPLE[\u0027timeout_mins\u0027], sot.timeout_mins)"},{"line_number":73,"context_line":"        self.assertEqual(EXAMPLE[\u0027updated_time\u0027], sot.updated_time)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aa745d1_d243926b","line":73,"in_reply_to":"7aaa499b_f0086fdb","updated":"2015-04-15 23:50:45.000000000","message":"Done","commit_id":"d95c08bb24bc552da275e7ab4569629aa709416a"}]}
