)]}'
{"openstack/orchestration/v1/_proxy.py":[{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"af64716d635ad5fef60dd29db81cc985c76bd8c0","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                                        failures, interval, wait)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def list_resources(self, name_or_id):"},{"line_number":55,"context_line":"        stk \u003d stack.Stack.find(self.session, name_or_id)"},{"line_number":56,"context_line":"        if stk is None:"},{"line_number":57,"context_line":"            return None"},{"line_number":58,"context_line":"        path_args \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_93782ac6","line":55,"updated":"2015-05-07 16:38:53.000000000","message":"There\u0027s an in-progress review at https://review.openstack.org/#/c/178302/1 that is going to make some changes to the list area, so it\u0027s eventually going to change. find may or may not continue to exist as a result of that.\n\nOne thing this has to do is always return a generator. Right now this should remain just calling list instead of involving other methods.","commit_id":"136c6855858caab71d855af0f0d60c2bef080096"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"dd72bc1245e465c8bb936361e88c0a088f3da783","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                                        failures, interval, wait)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def list_resources(self, name_or_id):"},{"line_number":55,"context_line":"        stk \u003d stack.Stack.find(self.session, name_or_id)"},{"line_number":56,"context_line":"        if stk is None:"},{"line_number":57,"context_line":"            return None"},{"line_number":58,"context_line":"        path_args \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_ab44bb73","line":55,"in_reply_to":"1aca2d91_93782ac6","updated":"2015-05-15 22:05:15.000000000","message":"The problem here is that stack resources are a nested resource of stacks. So the path to them is\n\n    /v1/​{tenant_id}​/stacks/​{stack_name}​/​{stack_id}​/resources\n\nYou need to know the stack in order to list the resources. Ultimately that means we\u0027ll have to override openstack.orchestration.v1.resource.Resource.list and do something like server_ip.ServerIP.list\n\nBut Heat is weird in that both stack name and id are unique (and name redirects to id). Also, stack name and stack id are not properties on a openstack.orchestration.v1.resource.Resource. :/\n\nI think both of those points will require a bit of work when it comes to listing stack resources with BaseProxy._list().","commit_id":"136c6855858caab71d855af0f0d60c2bef080096"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"e56c914ba78d06d951c7d3c4decb52d9f70d3ca9","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                                        failures, interval, wait)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def list_resources(self, name_or_id):"},{"line_number":55,"context_line":"        stk \u003d stack.Stack.find(self.session, name_or_id)"},{"line_number":56,"context_line":"        if stk is None:"},{"line_number":57,"context_line":"            return None"},{"line_number":58,"context_line":"        path_args \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_e6f30509","line":55,"in_reply_to":"7a016987_ab44bb73","updated":"2015-05-16 01:27:43.000000000","message":"Yes, I agree that Heat\u0027s API is weird. So the way to work around could be that we do a stack_list() to find out the stack first, then use the stack_name and stack_id to retrieve and list resources.\n\nThe same problem exists for Event, IIUC.","commit_id":"136c6855858caab71d855af0f0d60c2bef080096"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"8fcb0b9611b33a9860f5533d4aba804a1236169e","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        return resource.wait_for_status(self.session, value, status,"},{"line_number":80,"context_line":"                                        failures, interval, wait)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def list_resources(self, name_or_id):"},{"line_number":83,"context_line":"        stk \u003d self.find_stack(name_or_id)"},{"line_number":84,"context_line":"        if stk is None:"},{"line_number":85,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_71411439","line":82,"updated":"2015-05-27 18:07:03.000000000","message":"This should be called resources instead of list_resources to match how other similar methods are called.\n\nIf stk is None this should return an empty generator so that it doesn\u0027t break a typical calling scenario that should be expecting a generator like everywhere else.","commit_id":"9770be43d5a20fa5abb46c7d9e2f3374dd2f996a"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"5c573316a5a5b7abec68ac4b5243fd66904f4551","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        return resource.wait_for_status(self.session, value, status,"},{"line_number":80,"context_line":"                                        failures, interval, wait)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def list_resources(self, name_or_id):"},{"line_number":83,"context_line":"        stk \u003d self.find_stack(name_or_id)"},{"line_number":84,"context_line":"        if stk is None:"},{"line_number":85,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_f544c6b7","line":82,"in_reply_to":"7a016987_527850c4","updated":"2015-05-27 23:29:21.000000000","message":"Yep, we have a similar thing elsewhere, like server_ips and server_interfaces in compute belong to a server.","commit_id":"9770be43d5a20fa5abb46c7d9e2f3374dd2f996a"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"a8c5ebd5bc4e122a02abccee5f2de58247643219","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        return resource.wait_for_status(self.session, value, status,"},{"line_number":80,"context_line":"                                        failures, interval, wait)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def list_resources(self, name_or_id):"},{"line_number":83,"context_line":"        stk \u003d self.find_stack(name_or_id)"},{"line_number":84,"context_line":"        if stk is None:"},{"line_number":85,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_527850c4","line":82,"in_reply_to":"7a016987_71411439","updated":"2015-05-27 23:02:47.000000000","message":"Brian, I once thought about naming this function \u0027resources\u0027. The reason I kept it as is was that resources in Heat are not first class citizens, i.e. they always belong to a certain stack.\n\nHowever, I understand the desire to achieve interface consistency in SDK. So I\u0027ll follow your suggestion in next patch.","commit_id":"9770be43d5a20fa5abb46c7d9e2f3374dd2f996a"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"0ca3aec7d58c9eceeb428f0fce654901b814cd03","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        return resource.wait_for_status(self.session, value, status,"},{"line_number":80,"context_line":"                                        failures, interval, wait)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def resources(self, name_or_id):"},{"line_number":83,"context_line":"        stk \u003d self.find_stack(name_or_id)"},{"line_number":84,"context_line":"        if stk is None:"},{"line_number":85,"context_line":"            return []"}],"source_content_type":"text/x-python","patch_set":4,"id":"5afe65bd_34e51ea8","line":82,"updated":"2015-06-01 17:41:06.000000000","message":"Sorry I didn\u0027t mention this earlier, but this should have a docstring similar to the other proxy methods, and should also explain how and when it\u0027ll return [] as opposed to make the list call that returns the generator.","commit_id":"3e218db42d26d5f4cb70d1a89bb4024d2c83456e"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"73f327441087d52dd92b446582ef08db53b7a866","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        return resource.wait_for_status(self.session, value, status,"},{"line_number":80,"context_line":"                                        failures, interval, wait)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def resources(self, name_or_id):"},{"line_number":83,"context_line":"        stk \u003d self.find_stack(name_or_id)"},{"line_number":84,"context_line":"        if stk is None:"},{"line_number":85,"context_line":"            return []"}],"source_content_type":"text/x-python","patch_set":4,"id":"5afe65bd_071784a4","line":82,"in_reply_to":"5afe65bd_34e51ea8","updated":"2015-06-03 01:15:55.000000000","message":"Done","commit_id":"3e218db42d26d5f4cb70d1a89bb4024d2c83456e"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"0f5647526882f388b978fdd34636486db8394268","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    def resources(self, name_or_id):"},{"line_number":83,"context_line":"        \"\"\"Return a generator of resources"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        :param name_or_id: The ID or name of a stack for which the resources"},{"line_number":86,"context_line":"                           are to be listed."},{"line_number":87,"context_line":"        :returns: A generator of resource objects if the stack exists and"},{"line_number":88,"context_line":"                  there are resources in it. If the stack cannot be found,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5afe65bd_439e7e57","line":85,"updated":"2015-06-02 13:09:56.000000000","message":"I think this would be more clear if the parameter was named stack_name_or_id","commit_id":"d161dbd9c7dd0643a22b253ca67b1337edd573b9"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"27e3b745872cbb22a1631d1465552d1e03a5ef1e","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    def resources(self, name_or_id):"},{"line_number":83,"context_line":"        \"\"\"Return a generator of resources"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        :param name_or_id: The ID or name of a stack for which the resources"},{"line_number":86,"context_line":"                           are to be listed."},{"line_number":87,"context_line":"        :returns: A generator of resource objects if the stack exists and"},{"line_number":88,"context_line":"                  there are resources in it. If the stack cannot be found,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5afe65bd_e22304a6","line":85,"in_reply_to":"5afe65bd_439e7e57","updated":"2015-06-03 02:55:33.000000000","message":"Done","commit_id":"d161dbd9c7dd0643a22b253ca67b1337edd573b9"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"0f5647526882f388b978fdd34636486db8394268","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        \"\"\""},{"line_number":92,"context_line":"        stk \u003d self.find_stack(name_or_id)"},{"line_number":93,"context_line":"        if stk is None:"},{"line_number":94,"context_line":"            return []"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        path_args \u003d {"},{"line_number":97,"context_line":"            \u0027stack_name\u0027: stk.name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5afe65bd_83bb56c4","line":94,"updated":"2015-06-02 13:09:56.000000000","message":"Everyone cool with this returning nothing rather than throwing an exception.","commit_id":"d161dbd9c7dd0643a22b253ca67b1337edd573b9"},{"author":{"_account_id":12807,"name":"Steve Lewis (stevelle)","email":"stevelle@gmail.com","username":"stevelle"},"change_message_id":"5b1ecc34deee84598b06faaa120faeabd97da277","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        \"\"\""},{"line_number":92,"context_line":"        stk \u003d self.find_stack(name_or_id)"},{"line_number":93,"context_line":"        if stk is None:"},{"line_number":94,"context_line":"            return []"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        path_args \u003d {"},{"line_number":97,"context_line":"            \u0027stack_name\u0027: stk.name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5afe65bd_160d4590","line":94,"in_reply_to":"5afe65bd_823570db","updated":"2015-06-03 03:42:04.000000000","message":"I completely misplaced that comment. Apologies.\n\nI feel like find_stack probably should be raising an exception rather than returning None when performing a get by id, which isn\u0027t really a concern for this review anyway.","commit_id":"d161dbd9c7dd0643a22b253ca67b1337edd573b9"},{"author":{"_account_id":12807,"name":"Steve Lewis (stevelle)","email":"stevelle@gmail.com","username":"stevelle"},"change_message_id":"c874bb45363e7ea420a28b34faac68677ea09691","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        \"\"\""},{"line_number":92,"context_line":"        stk \u003d self.find_stack(name_or_id)"},{"line_number":93,"context_line":"        if stk is None:"},{"line_number":94,"context_line":"            return []"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        path_args \u003d {"},{"line_number":97,"context_line":"            \u0027stack_name\u0027: stk.name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5afe65bd_e04b0daf","line":94,"in_reply_to":"5afe65bd_83bb56c4","updated":"2015-06-02 18:38:09.000000000","message":"I feel like this should be exceptions.ResourceNotFound","commit_id":"d161dbd9c7dd0643a22b253ca67b1337edd573b9"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"27e3b745872cbb22a1631d1465552d1e03a5ef1e","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        \"\"\""},{"line_number":92,"context_line":"        stk \u003d self.find_stack(name_or_id)"},{"line_number":93,"context_line":"        if stk is None:"},{"line_number":94,"context_line":"            return []"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        path_args \u003d {"},{"line_number":97,"context_line":"            \u0027stack_name\u0027: stk.name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5afe65bd_823570db","line":94,"in_reply_to":"5afe65bd_e04b0daf","updated":"2015-06-03 02:55:33.000000000","message":"Partially agreed.\n\nI\u0027m not sure whether such an (NotFound) exception should be thrown from \u0027find_stack\u0027. The \u0027resources()\u0027 method is only meant to return a generator of objects. It sounds a little weird that it is throwing a resource not found exception, and the resource is not the owning stack...\n\n\nWill try this way and see what others think.","commit_id":"d161dbd9c7dd0643a22b253ca67b1337edd573b9"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"71d49b904ca64224655894e3f4715525f973edc4","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                 resources are to be listed."},{"line_number":88,"context_line":"        :returns: A generator of resource objects if the stack exists and"},{"line_number":89,"context_line":"                  there are resources in it. If the stack cannot be found,"},{"line_number":90,"context_line":"                  this returns an empty list []."},{"line_number":91,"context_line":"        :rtype: :class:`~openstack.orchestration.v1.resource.Resource`"},{"line_number":92,"context_line":"        \"\"\""},{"line_number":93,"context_line":"        stk \u003d self.find_stack(stack_name_or_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_c5591390","line":90,"updated":"2015-06-22 18:32:11.000000000","message":"This returns comment conflicts with the code below. The code says, if the stack cannot be found, raise an exception. Which one is right?","commit_id":"8e1b88870bcf4526b2208d00c4a66c6f866863f5"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"bfbb5e2c631d68841e9912177ae7022c6447dc66","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                  there are resources in it. If the stack cannot be found,"},{"line_number":90,"context_line":"                  this returns an empty list []."},{"line_number":91,"context_line":"        :rtype: :class:`~openstack.orchestration.v1.resource.Resource`"},{"line_number":92,"context_line":"        \"\"\""},{"line_number":93,"context_line":"        stk \u003d self.find_stack(stack_name_or_id)"},{"line_number":94,"context_line":"        if stk is None:"},{"line_number":95,"context_line":"            raise exceptions.ResourceNotFound("}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_b676d2d6","line":92,"updated":"2015-06-19 14:57:34.000000000","message":"I see this is a little different since we need the stack name here.  I\u0027d like to bring up for discussion the possibility that we follow this pattern:\n\nhttps://github.com/stackforge/python-openstacksdk/blob/master/openstack/object_store/v1/_proxy.py#L124\n\nAnd take a stack or stack id.  How about the find_stack only gets called if the resulting stk.name \u003d\u003d None.\n\nWhat do you guys think?","commit_id":"8e1b88870bcf4526b2208d00c4a66c6f866863f5"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"71d49b904ca64224655894e3f4715525f973edc4","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                  there are resources in it. If the stack cannot be found,"},{"line_number":90,"context_line":"                  this returns an empty list []."},{"line_number":91,"context_line":"        :rtype: :class:`~openstack.orchestration.v1.resource.Resource`"},{"line_number":92,"context_line":"        \"\"\""},{"line_number":93,"context_line":"        stk \u003d self.find_stack(stack_name_or_id)"},{"line_number":94,"context_line":"        if stk is None:"},{"line_number":95,"context_line":"            raise exceptions.ResourceNotFound("}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_a5216ffe","line":92,"in_reply_to":"fa32b979_b676d2d6","updated":"2015-06-22 18:32:11.000000000","message":"Agreed. They should definitely work the same. I think the method signature looks like \n\n    def resources(self, value)\n\nIf value has name and id, we can use it as path_args.\n\nIf value has only name, we can use it to find the id.\n\nIf value has only id, ??? I\u0027m not sure, raise something.\n\nIf value has nothing, raise exceptions.","commit_id":"8e1b88870bcf4526b2208d00c4a66c6f866863f5"}],"openstack/orchestration/v1/resource.py":[{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"0ca3aec7d58c9eceeb428f0fce654901b814cd03","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    allow_update \u003d False"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    # Properties"},{"line_number":32,"context_line":"    name \u003d resource.prop(\u0027resource_name\u0027)"},{"line_number":33,"context_line":"    links \u003d resource.prop(\u0027links\u0027)"},{"line_number":34,"context_line":"    logical_resource_id \u003d resource.prop(\u0027logical_resource_id\u0027)"},{"line_number":35,"context_line":"    physical_resource_id \u003d resource.prop(\u0027physical_resource_id\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5afe65bd_94ecd290","line":32,"updated":"2015-06-01 17:41:06.000000000","message":"Can you document these properties so we get them in the API docs?","commit_id":"3e218db42d26d5f4cb70d1a89bb4024d2c83456e"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"73f327441087d52dd92b446582ef08db53b7a866","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    allow_update \u003d False"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    # Properties"},{"line_number":32,"context_line":"    name \u003d resource.prop(\u0027resource_name\u0027)"},{"line_number":33,"context_line":"    links \u003d resource.prop(\u0027links\u0027)"},{"line_number":34,"context_line":"    logical_resource_id \u003d resource.prop(\u0027logical_resource_id\u0027)"},{"line_number":35,"context_line":"    physical_resource_id \u003d resource.prop(\u0027physical_resource_id\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5afe65bd_271280b5","line":32,"in_reply_to":"5afe65bd_94ecd290","updated":"2015-06-03 01:15:55.000000000","message":"Done","commit_id":"3e218db42d26d5f4cb70d1a89bb4024d2c83456e"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"0f5647526882f388b978fdd34636486db8394268","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    allow_delete \u003d False"},{"line_number":29,"context_line":"    allow_update \u003d False"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    # Properties"},{"line_number":32,"context_line":"    name \u003d resource.prop(\u0027resource_name\u0027)"},{"line_number":33,"context_line":"    #: A list of dictionaries containing links relevant to the resource."},{"line_number":34,"context_line":"    links \u003d resource.prop(\u0027links\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5afe65bd_e31a0a17","line":31,"updated":"2015-06-02 13:09:56.000000000","message":"In theory, the resource should have stack_name and stack_id.  I think that is what we do in the other have-a type resources.  Maybe it should have one property type\u003dstack.Stack?  What does everyone think?\n\nThis reminds me why I added the _get_url method to Resource, it was so the base_path in these kind of situations could be:\n\n    base_path \u003d \u0027/stacks/%(stack.name)s/%(stack.id)s/resources\u0027\n\ninstead of\n\n    base_path \u003d \u0027/stacks/%(stack_name)s/%(stack_id)s/resources\u0027","commit_id":"d161dbd9c7dd0643a22b253ca67b1337edd573b9"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"27e3b745872cbb22a1631d1465552d1e03a5ef1e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    allow_delete \u003d False"},{"line_number":29,"context_line":"    allow_update \u003d False"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    # Properties"},{"line_number":32,"context_line":"    name \u003d resource.prop(\u0027resource_name\u0027)"},{"line_number":33,"context_line":"    #: A list of dictionaries containing links relevant to the resource."},{"line_number":34,"context_line":"    links \u003d resource.prop(\u0027links\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5afe65bd_e29c245f","line":31,"in_reply_to":"5afe65bd_e31a0a17","updated":"2015-06-03 02:55:33.000000000","message":"I can understand the intent to add a property of type stack.Stack, but I\u0027m not a big fan of that. The reason is that it makes using the API a little difficult than it has to. My experience was based on using Nova server along with Image and Flavor.\n\nLet me know if this is believed to be the right way to go. I\u0027ll propose a patch for this if needed.","commit_id":"d161dbd9c7dd0643a22b253ca67b1337edd573b9"},{"author":{"_account_id":12807,"name":"Steve Lewis (stevelle)","email":"stevelle@gmail.com","username":"stevelle"},"change_message_id":"c874bb45363e7ea420a28b34faac68677ea09691","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    allow_delete \u003d False"},{"line_number":29,"context_line":"    allow_update \u003d False"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    # Properties"},{"line_number":32,"context_line":"    name \u003d resource.prop(\u0027resource_name\u0027)"},{"line_number":33,"context_line":"    #: A list of dictionaries containing links relevant to the resource."},{"line_number":34,"context_line":"    links \u003d resource.prop(\u0027links\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5afe65bd_80b69988","line":31,"in_reply_to":"5afe65bd_e31a0a17","updated":"2015-06-02 18:38:09.000000000","message":"I slightly prefer seeing stack_name and stack_id properties.","commit_id":"d161dbd9c7dd0643a22b253ca67b1337edd573b9"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"bfbb5e2c631d68841e9912177ae7022c6447dc66","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    required_by \u003d resource.prop(\u0027required_by\u0027)"},{"line_number":45,"context_line":"    #: A string representation of the resource type."},{"line_number":46,"context_line":"    resource_type \u003d resource.prop(\u0027resource_type\u0027)"},{"line_number":47,"context_line":"    #: A string the resource is currently in."},{"line_number":48,"context_line":"    status \u003d resource.prop(\u0027resource_status\u0027)"},{"line_number":49,"context_line":"    #: A string that explains why the resource is in its current status."},{"line_number":50,"context_line":"    status_reason \u003d resource.prop(\u0027resource_status_reason\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_d6c6f648","line":47,"updated":"2015-06-19 14:57:34.000000000","message":"\u0027the *state* the resources is currently in\u0027 maybe?","commit_id":"8e1b88870bcf4526b2208d00c4a66c6f866863f5"}],"openstack/tests/functional/orchestration/v1/test_stack.py":[{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"a4fd7be4878cb40ac47f35b57f5fbec5599166ff","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        cls.conn.compute.delete_keypair(cls.NAME)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_list(self):"},{"line_number":47,"context_line":"        names \u003d [o.name for o in self.conn.orchestration.list_stacks()]"},{"line_number":48,"context_line":"        self.assertIn(self.NAME, names)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_list_resources(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5afe65bd_1d4a3e84","line":47,"updated":"2015-06-01 21:42:45.000000000","message":"The functional test is failing because list_stacks() was renamed to stacks() but the functional test got missed being updated. I realize this isn\u0027t your fault but can you please fix it? Did you see this in your functional test run?","commit_id":"3e218db42d26d5f4cb70d1a89bb4024d2c83456e"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"73f327441087d52dd92b446582ef08db53b7a866","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        cls.conn.compute.delete_keypair(cls.NAME)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_list(self):"},{"line_number":47,"context_line":"        names \u003d [o.name for o in self.conn.orchestration.list_stacks()]"},{"line_number":48,"context_line":"        self.assertIn(self.NAME, names)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_list_resources(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5afe65bd_bc03f541","line":47,"in_reply_to":"5afe65bd_1d4a3e84","updated":"2015-06-03 01:15:55.000000000","message":"Done","commit_id":"3e218db42d26d5f4cb70d1a89bb4024d2c83456e"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"f652088dff0b9084a94794dcac1f58bd67b35bc4","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        cls.conn.compute.delete_keypair(cls.NAME)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_list(self):"},{"line_number":47,"context_line":"        names \u003d [o.name for o in self.conn.orchestration.list_stacks()]"},{"line_number":48,"context_line":"        self.assertIn(self.NAME, names)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_list_resources(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5afe65bd_33188a84","line":47,"in_reply_to":"5afe65bd_1d4a3e84","updated":"2015-06-01 23:11:55.000000000","message":"I think a rebase should fix that.  i put in a change for that.","commit_id":"3e218db42d26d5f4cb70d1a89bb4024d2c83456e"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"73f327441087d52dd92b446582ef08db53b7a866","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        cls.conn.compute.delete_keypair(cls.NAME)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_list(self):"},{"line_number":47,"context_line":"        names \u003d [o.name for o in self.conn.orchestration.list_stacks()]"},{"line_number":48,"context_line":"        self.assertIn(self.NAME, names)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_list_resources(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5afe65bd_9cfef936","line":47,"in_reply_to":"5afe65bd_33188a84","updated":"2015-06-03 01:15:55.000000000","message":"Done","commit_id":"3e218db42d26d5f4cb70d1a89bb4024d2c83456e"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"a4fd7be4878cb40ac47f35b57f5fbec5599166ff","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        names \u003d [o.name for o in self.conn.orchestration.list_stacks()]"},{"line_number":48,"context_line":"        self.assertIn(self.NAME, names)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_list_resources(self):"},{"line_number":51,"context_line":"        resources \u003d self.conn.orchestration.resources(self.NAME)"},{"line_number":52,"context_line":"        names \u003d [o.name for o in resources]"},{"line_number":53,"context_line":"        self.assertIn(\u0027wordpress_instance\u0027, names)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5afe65bd_58b9e42d","line":50,"updated":"2015-06-01 21:42:45.000000000","message":"I\u0027m getting some errors when I run this test, see the end of  http://paste.openstack.org/show/254004/\n\nIt seems the replacement on resources path isn\u0027t happening properly\n\n    GET /v1/7a65d6d97c7948949d9f1da078cfa146/stacks/%(stack_name)s/%(stack_id)s/resources","commit_id":"3e218db42d26d5f4cb70d1a89bb4024d2c83456e"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"73f327441087d52dd92b446582ef08db53b7a866","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        names \u003d [o.name for o in self.conn.orchestration.list_stacks()]"},{"line_number":48,"context_line":"        self.assertIn(self.NAME, names)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_list_resources(self):"},{"line_number":51,"context_line":"        resources \u003d self.conn.orchestration.resources(self.NAME)"},{"line_number":52,"context_line":"        names \u003d [o.name for o in resources]"},{"line_number":53,"context_line":"        self.assertIn(\u0027wordpress_instance\u0027, names)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5afe65bd_1cf20970","line":50,"in_reply_to":"5afe65bd_58b9e42d","updated":"2015-06-03 01:15:55.000000000","message":"Thanks.\nJust checked the paste you provided, cannot find the errors you mentioned. As for the uri replacement, I think it happened because I was able to get the resources list somehow.","commit_id":"3e218db42d26d5f4cb70d1a89bb4024d2c83456e"}],"openstack/tests/unit/orchestration/v1/test_proxy.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"bfbb5e2c631d68841e9912177ae7022c6447dc66","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @mock.patch.object(stack.Stack, \u0027find\u0027)"},{"line_number":75,"context_line":"    @mock.patch.object(resource.Resource, \u0027list\u0027)"},{"line_number":76,"context_line":"    def test_stack_resources_stack_not_found(self, mock_list, mock_find):"},{"line_number":77,"context_line":"        stack_name \u003d \u0027test_stack\u0027"},{"line_number":78,"context_line":"        mock_find.side_effect \u003d exceptions.ResourceNotFound("},{"line_number":79,"context_line":"            \u0027No stack found for test_stack\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_36872214","line":76,"updated":"2015-06-19 14:57:34.000000000","message":"test_resources_stack_not_found","commit_id":"8e1b88870bcf4526b2208d00c4a66c6f866863f5"}],"openstack/tests/unit/orchestration/v1/test_resource.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"bfbb5e2c631d68841e9912177ae7022c6447dc66","unresolved":false,"context_lines":[{"line_number":36,"context_line":"}"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class TestStack(testtools.TestCase):"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_basic(self):"},{"line_number":42,"context_line":"        sot \u003d resource.Resource()"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_c9176c43","line":39,"updated":"2015-06-19 14:57:34.000000000","message":"TestResource","commit_id":"8e1b88870bcf4526b2208d00c4a66c6f866863f5"}]}
