)]}'
{"README.rst":[{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"e2da341ff2f0c85022ddad6fffc94a21d2187b48","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    class Cloud:"},{"line_number":69,"context_line":"      ResourceManager\u003cServer\u003e server"},{"line_number":70,"context_line":"      servers \u003d server"},{"line_number":71,"context_line":"      ResourceManager\u003cFloatingIp\u003e floating_ip"},{"line_number":72,"context_line":"      floating_ips \u003d floating_ip"},{"line_number":73,"context_line":"      ResourceManager\u003cImage\u003e image"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_d021e44d","line":70,"updated":"2015-03-16 13:09:00.000000000","message":"Confusing. Did you mean:\n\nservers \u003d server.get_all() ?","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"b1caa9670621312cffd61e739778be547ceb7d36","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    class Cloud:"},{"line_number":69,"context_line":"      ResourceManager\u003cServer\u003e server"},{"line_number":70,"context_line":"      servers \u003d server"},{"line_number":71,"context_line":"      ResourceManager\u003cFloatingIp\u003e floating_ip"},{"line_number":72,"context_line":"      floating_ips \u003d floating_ip"},{"line_number":73,"context_line":"      ResourceManager\u003cImage\u003e image"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_dfde8d3d","line":70,"in_reply_to":"9a80dd14_769af014","updated":"2015-03-19 19:26:34.000000000","message":"Gotcha. Thanks for the clarification.","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"df174083e420a481f02ff0ca7b758dadcfae9172","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    class Cloud:"},{"line_number":69,"context_line":"      ResourceManager\u003cServer\u003e server"},{"line_number":70,"context_line":"      servers \u003d server"},{"line_number":71,"context_line":"      ResourceManager\u003cFloatingIp\u003e floating_ip"},{"line_number":72,"context_line":"      floating_ips \u003d floating_ip"},{"line_number":73,"context_line":"      ResourceManager\u003cImage\u003e image"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_769af014","line":70,"in_reply_to":"9a80dd14_d021e44d","updated":"2015-03-16 17:08:56.000000000","message":"Nope - I meant that there should be an alias - because otherwise we could bikeshed for WEEKS on whether it feels better to have the manager be called \"server\" or \"servers\"","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"e2da341ff2f0c85022ddad6fffc94a21d2187b48","unresolved":false,"context_lines":[{"line_number":82,"context_line":"should be returned. For plural verbs, all matched resources will be operated"},{"line_number":83,"context_line":"on. For instance: cloud.server.get(name_or_id\u003d\u0027foo\u0027) will return a server named"},{"line_number":84,"context_line":"foo and error if there are more than one. cloud.server.get_all(name\u003d\"foo\") will"},{"line_number":85,"context_line":"return a list of servers named foo."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"In addition to \"get\" and \"create\" - every resource should also have a"},{"line_number":88,"context_line":"get_or_create method and a get_or_request_create method, which will either"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_ed92939d","line":85,"updated":"2015-03-16 13:09:00.000000000","message":"This is similar to sqlalchemy. It might also be useful to have a get_one() alternative to return a single resource where many are expected (e.g., get one free floating IP from a pool).","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"df174083e420a481f02ff0ca7b758dadcfae9172","unresolved":false,"context_lines":[{"line_number":82,"context_line":"should be returned. For plural verbs, all matched resources will be operated"},{"line_number":83,"context_line":"on. For instance: cloud.server.get(name_or_id\u003d\u0027foo\u0027) will return a server named"},{"line_number":84,"context_line":"foo and error if there are more than one. cloud.server.get_all(name\u003d\"foo\") will"},{"line_number":85,"context_line":"return a list of servers named foo."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"In addition to \"get\" and \"create\" - every resource should also have a"},{"line_number":88,"context_line":"get_or_create method and a get_or_request_create method, which will either"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_f68500ad","line":85,"in_reply_to":"9a80dd14_ed92939d","updated":"2015-03-16 17:08:56.000000000","message":"I agree","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"e2da341ff2f0c85022ddad6fffc94a21d2187b48","unresolved":false,"context_lines":[{"line_number":89,"context_line":"get the existing single resource that matches the input parameters, or will"},{"line_number":90,"context_line":"create one or submit a request for creation. The return value will be"},{"line_number":91,"context_line":"a Resource or a ResourceRequest as is appropriate. Either will have a property"},{"line_number":92,"context_line":"indicating if it was created."},{"line_number":93,"context_line":"::"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    class ResourceManager\u003cResource\u003e:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_adb17be1","line":92,"updated":"2015-03-16 13:09:00.000000000","message":"Personally, I\u0027m not crazy about combining the \"get\" with the \"create\". It\u0027s trying to do too much for the dev, IMO, and duplicates what the \"get\" and \"get_all\" methods are supposed to do. I\u0027d rather the dev try the \"get\", see it doesn\u0027t exist, then call \"create\" themselves. But maybe I\u0027m stupid.","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"b1caa9670621312cffd61e739778be547ceb7d36","unresolved":false,"context_lines":[{"line_number":89,"context_line":"get the existing single resource that matches the input parameters, or will"},{"line_number":90,"context_line":"create one or submit a request for creation. The return value will be"},{"line_number":91,"context_line":"a Resource or a ResourceRequest as is appropriate. Either will have a property"},{"line_number":92,"context_line":"indicating if it was created."},{"line_number":93,"context_line":"::"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    class ResourceManager\u003cResource\u003e:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_bfb0f9fd","line":92,"in_reply_to":"9a80dd14_5665ec1b","updated":"2015-03-19 19:26:34.000000000","message":"After giving this some more thought, I can see the usefulness of it.","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"54ee57cf843d06b0e619d7c73195785fb412e2ce","unresolved":false,"context_lines":[{"line_number":89,"context_line":"get the existing single resource that matches the input parameters, or will"},{"line_number":90,"context_line":"create one or submit a request for creation. The return value will be"},{"line_number":91,"context_line":"a Resource or a ResourceRequest as is appropriate. Either will have a property"},{"line_number":92,"context_line":"indicating if it was created."},{"line_number":93,"context_line":"::"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    class ResourceManager\u003cResource\u003e:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_d49401ea","line":92,"in_reply_to":"9a80dd14_5665ec1b","updated":"2015-03-18 14:11:02.000000000","message":"Given the common nature and use case with Ansible modules, I think it would be good to try for a first pass since the end result should be simpler Ansible modules which could also serve as simple use examples.","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ea2f62613056853adc12a414dc89b4fca2fdf862","unresolved":false,"context_lines":[{"line_number":89,"context_line":"get the existing single resource that matches the input parameters, or will"},{"line_number":90,"context_line":"create one or submit a request for creation. The return value will be"},{"line_number":91,"context_line":"a Resource or a ResourceRequest as is appropriate. Either will have a property"},{"line_number":92,"context_line":"indicating if it was created."},{"line_number":93,"context_line":"::"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    class ResourceManager\u003cResource\u003e:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_5c1d0b72","line":92,"in_reply_to":"9a80dd14_adb17be1","updated":"2015-03-16 15:03:46.000000000","message":"I would tend to agree that it is doing quite a bit for the user, however it would simplify use for Ansible modules as we would have the desired information regarding success/failure and it would provide simplified logic to detect differences in the resources from the request, or provide the ability to assert new configuration in one step.","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"df174083e420a481f02ff0ca7b758dadcfae9172","unresolved":false,"context_lines":[{"line_number":89,"context_line":"get the existing single resource that matches the input parameters, or will"},{"line_number":90,"context_line":"create one or submit a request for creation. The return value will be"},{"line_number":91,"context_line":"a Resource or a ResourceRequest as is appropriate. Either will have a property"},{"line_number":92,"context_line":"indicating if it was created."},{"line_number":93,"context_line":"::"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    class ResourceManager\u003cResource\u003e:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_5665ec1b","line":92,"in_reply_to":"9a80dd14_adb17be1","updated":"2015-03-16 17:08:56.000000000","message":"Well - mainly it\u0027s such a common pattern and we copy it everywhere in the ansible modules, it seemed like a thing to maybe try and encode. However, we could leave it out for pass #1 and add it in pass #2 if we want","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"e2da341ff2f0c85022ddad6fffc94a21d2187b48","unresolved":false,"context_lines":[{"line_number":110,"context_line":"All ResourceManagers should accept a cache object passed in to their constructor"},{"line_number":111,"context_line":"and should additionally pass that cache object to all Resource constructors."},{"line_number":112,"context_line":"The top-level cloud should create the cache object, then pass it to each of"},{"line_number":113,"context_line":"the ResourceManagers when it creates them."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Client connection objects should exist and be managed at the Cloud level. A"},{"line_number":116,"context_line":"backreference to the OpenStack cloud should be passed to every resource manager"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_ad45fb6f","line":113,"updated":"2015-03-16 13:09:00.000000000","message":"Alternatively, the ResourceManagers could derive from a CacheManager class, and the top-level cloud can pass the parameters to initialize the cache (if any are needed) when creating the ResourceManager. The cache can then be abstracted and managed through the CacheManager methods (cache_find, cache_insert, cache_delete, etc). Not sure how useful this thought is, but throwing it out there.","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"b1caa9670621312cffd61e739778be547ceb7d36","unresolved":false,"context_lines":[{"line_number":110,"context_line":"All ResourceManagers should accept a cache object passed in to their constructor"},{"line_number":111,"context_line":"and should additionally pass that cache object to all Resource constructors."},{"line_number":112,"context_line":"The top-level cloud should create the cache object, then pass it to each of"},{"line_number":113,"context_line":"the ResourceManagers when it creates them."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Client connection objects should exist and be managed at the Cloud level. A"},{"line_number":116,"context_line":"backreference to the OpenStack cloud should be passed to every resource manager"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_bfa719bb","line":113,"in_reply_to":"9a80dd14_36515830","updated":"2015-03-19 19:26:34.000000000","message":"s/interesting/scary/","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"df174083e420a481f02ff0ca7b758dadcfae9172","unresolved":false,"context_lines":[{"line_number":110,"context_line":"All ResourceManagers should accept a cache object passed in to their constructor"},{"line_number":111,"context_line":"and should additionally pass that cache object to all Resource constructors."},{"line_number":112,"context_line":"The top-level cloud should create the cache object, then pass it to each of"},{"line_number":113,"context_line":"the ResourceManagers when it creates them."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Client connection objects should exist and be managed at the Cloud level. A"},{"line_number":116,"context_line":"backreference to the OpenStack cloud should be passed to every resource manager"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_36515830","line":113,"in_reply_to":"9a80dd14_ad45fb6f","updated":"2015-03-16 17:08:56.000000000","message":"You have an interesting brain ...","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ea2f62613056853adc12a414dc89b4fca2fdf862","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Client connection objects should exist and be managed at the Cloud level. A"},{"line_number":116,"context_line":"backreference to the OpenStack cloud should be passed to every resource manager"},{"line_number":117,"context_line":"so that ResourceManagers can get hold of the ones they need. For instance,"},{"line_number":118,"context_line":"an Image ResourceManager would potentially need access to both the glance_client"},{"line_number":119,"context_line":"and the swift_client."},{"line_number":120,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_67631cb1","line":117,"updated":"2015-03-16 15:03:46.000000000","message":"For clarity:\n\ns/the ones they need./client connections they need./","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"e2da341ff2f0c85022ddad6fffc94a21d2187b48","unresolved":false,"context_lines":[{"line_number":126,"context_line":"      def __init__(self):"},{"line_number":127,"context_line":"        self.cache \u003d dogpile.cache()"},{"line_number":128,"context_line":"        self.server \u003d ServerManager(self.cache, self)"},{"line_number":129,"context_line":"        self.servers \u003d self.server"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Any resources that have an association action - such as servers and"},{"line_number":132,"context_line":"floating_ips, should carry reciprocal methods on each resource with absolutely"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_30ea40d8","line":129,"updated":"2015-03-16 13:09:00.000000000","message":"self.servers \u003d self.server.get_all() ???","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"df174083e420a481f02ff0ca7b758dadcfae9172","unresolved":false,"context_lines":[{"line_number":126,"context_line":"      def __init__(self):"},{"line_number":127,"context_line":"        self.cache \u003d dogpile.cache()"},{"line_number":128,"context_line":"        self.server \u003d ServerManager(self.cache, self)"},{"line_number":129,"context_line":"        self.servers \u003d self.server"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Any resources that have an association action - such as servers and"},{"line_number":132,"context_line":"floating_ips, should carry reciprocal methods on each resource with absolutely"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_167ff4ab","line":129,"in_reply_to":"9a80dd14_30ea40d8","updated":"2015-03-16 17:08:56.000000000","message":"Nope. Same as above.","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ea2f62613056853adc12a414dc89b4fca2fdf862","unresolved":false,"context_lines":[{"line_number":145,"context_line":"immediately operate the necessary REST apis. However, if you need to make 80"},{"line_number":146,"context_line":"changes to a Resource, 80 REST calls may or may not be silly, so there should"},{"line_number":147,"context_line":"also be a generic update() method which can be used to request the minimal"},{"line_number":148,"context_line":"amount of REST calls needed to update the attributes to the requested values."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Resource objects should all have a to_dict method which will return a plain"},{"line_number":151,"context_line":"flat dictionary of their attributes."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_027faeab","line":148,"updated":"2015-03-16 15:03:46.000000000","message":"The update method, would it be the expectation that the caller of the method should passing in a properly formatted patch to apply to the api?","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"df174083e420a481f02ff0ca7b758dadcfae9172","unresolved":false,"context_lines":[{"line_number":145,"context_line":"immediately operate the necessary REST apis. However, if you need to make 80"},{"line_number":146,"context_line":"changes to a Resource, 80 REST calls may or may not be silly, so there should"},{"line_number":147,"context_line":"also be a generic update() method which can be used to request the minimal"},{"line_number":148,"context_line":"amount of REST calls needed to update the attributes to the requested values."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Resource objects should all have a to_dict method which will return a plain"},{"line_number":151,"context_line":"flat dictionary of their attributes."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_271bda81","line":148,"in_reply_to":"9a80dd14_027faeab","updated":"2015-03-16 17:08:56.000000000","message":"No - I expect the user to never understand anything about the REST APIs. What I mean here is that one could do:\n\nimage.update(some_value\u003d3, some_other_value\u003d5, a_third\u003d6) and that would have shade to the appropriate thing on the back end.","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"54ee57cf843d06b0e619d7c73195785fb412e2ce","unresolved":false,"context_lines":[{"line_number":145,"context_line":"immediately operate the necessary REST apis. However, if you need to make 80"},{"line_number":146,"context_line":"changes to a Resource, 80 REST calls may or may not be silly, so there should"},{"line_number":147,"context_line":"also be a generic update() method which can be used to request the minimal"},{"line_number":148,"context_line":"amount of REST calls needed to update the attributes to the requested values."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Resource objects should all have a to_dict method which will return a plain"},{"line_number":151,"context_line":"flat dictionary of their attributes."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_d7308309","line":148,"in_reply_to":"9a80dd14_271bda81","updated":"2015-03-18 14:11:02.000000000","message":"Okay, that makes sense.  For the sake of codifying behavior up front, what would be the expectation of the update method if a user passed None as a value for one of the attributes in the update request?","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"e2da341ff2f0c85022ddad6fffc94a21d2187b48","unresolved":false,"context_lines":[{"line_number":148,"context_line":"amount of REST calls needed to update the attributes to the requested values."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Resource objects should all have a to_dict method which will return a plain"},{"line_number":151,"context_line":"flat dictionary of their attributes."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Optional Behavior"},{"line_number":154,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_502df4fc","line":151,"updated":"2015-03-16 13:09:00.000000000","message":"One thing that sort of bugs me is that we don\u0027t really define the the dictionary that will be returned from methods. We pretty much depend on whatever the current openstack clients return. If they change, it could break shade. If and when we replace them, we\u0027ll have to define them ourselves anyway.\n\nNot saying this has to address that, but something to consider.","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"df174083e420a481f02ff0ca7b758dadcfae9172","unresolved":false,"context_lines":[{"line_number":148,"context_line":"amount of REST calls needed to update the attributes to the requested values."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Resource objects should all have a to_dict method which will return a plain"},{"line_number":151,"context_line":"flat dictionary of their attributes."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Optional Behavior"},{"line_number":154,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_d65f1c3f","line":151,"in_reply_to":"9a80dd14_502df4fc","updated":"2015-03-16 17:08:56.000000000","message":"Nod.","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"e2da341ff2f0c85022ddad6fffc94a21d2187b48","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    class OpenStackCloud:"},{"line_number":197,"context_line":"      def create_server(self, \\*args, \\*\\*kwargs):"},{"line_number":198,"context_line":"        self.server.create(\\*args, \\*\\*kwargs)"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_f0ac2837","line":198,"updated":"2015-03-16 13:09:00.000000000","message":"I would recommend, in order to help with code organization, to put these current methods in a separate class (DeprecatedAPI or something) and have OpenStackCloud derive from that to inherit the methods. That way, the new OpenStackCloud class is much cleaner, and it is clear where the older API methods live.","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ea2f62613056853adc12a414dc89b4fca2fdf862","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    class OpenStackCloud:"},{"line_number":197,"context_line":"      def create_server(self, \\*args, \\*\\*kwargs):"},{"line_number":198,"context_line":"        self.server.create(\\*args, \\*\\*kwargs)"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_56524713","line":198,"in_reply_to":"9a80dd14_f0ac2837","updated":"2015-03-16 15:03:46.000000000","message":"+1","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"df174083e420a481f02ff0ca7b758dadcfae9172","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    class OpenStackCloud:"},{"line_number":197,"context_line":"      def create_server(self, \\*args, \\*\\*kwargs):"},{"line_number":198,"context_line":"        self.server.create(\\*args, \\*\\*kwargs)"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_f62180b4","line":198,"in_reply_to":"9a80dd14_f0ac2837","updated":"2015-03-16 17:08:56.000000000","message":"Ooh. I likey.","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"b1caa9670621312cffd61e739778be547ceb7d36","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    class OpenStackCloud:"},{"line_number":197,"context_line":"      def create_server(self, \\*args, \\*\\*kwargs):"},{"line_number":198,"context_line":"        self.server.create(\\*args, \\*\\*kwargs)"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a80dd14_df83ed00","line":198,"in_reply_to":"9a80dd14_f62180b4","updated":"2015-03-19 19:26:34.000000000","message":"After considering this some more, I still like the idea, but maybe it should be done in a separate review (to keep the patch set size down to something actually reviewable).","commit_id":"c260e1ae76a3398af9ff9f7cf721084f968a8536"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"2c62925f7a5ed843eb192240123498a9de7a66bb","unresolved":false,"context_lines":[{"line_number":75,"context_line":"      ResourceManager\u003cRole\u003e role"},{"line_number":76,"context_line":"      roles \u003d role"},{"line_number":77,"context_line":"      ResourceManager\u003cVolume\u003e volume"},{"line_number":78,"context_line":"      volumes \u003d volume"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"getting, listing and searching"},{"line_number":81,"context_line":"------------------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_d517d0a1","line":78,"updated":"2015-04-17 22:03:05.000000000","message":"I\u0027m somewhat confused by the use of \u003c\u003e above.","commit_id":"79de89d5daf78da6e337ce1d0a1c1aaa48e8dd58"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"fee9adce80b684163cdb4d5faed4980c34682b5d","unresolved":false,"context_lines":[{"line_number":147,"context_line":"also be a generic update() method which can be used to request the minimal"},{"line_number":148,"context_line":"amount of REST calls needed to update the attributes to the requested values."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Resource objects should all have a to_dict method which will return a plain"},{"line_number":151,"context_line":"flat dictionary of their attributes."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a016987_2084e8d0","line":150,"updated":"2015-06-01 09:58:15.000000000","message":"Currently, in the functional interface we are using bunch.\nShall we mention it or that is just a workaround to provide backward compatibility?","commit_id":"c6db7998f5a71d654a59d18e07d046d139699471"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"fee9adce80b684163cdb4d5faed4980c34682b5d","unresolved":false,"context_lines":[{"line_number":206,"context_line":"--------------------"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"shade should also provide a functional mapping to the object interface that"},{"line_number":209,"context_line":"does not expse the object interface at all. For instance, fora  resource type"},{"line_number":210,"context_line":"`server`, one could expect the following."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a016987_a019f8d2","line":209,"updated":"2015-06-01 09:58:15.000000000","message":"typo","commit_id":"c6db7998f5a71d654a59d18e07d046d139699471"}]}
