)]}'
{"neutron_lib/api/definitions/_dummy.py":[{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"6a3223f1e28521418d57195cb6aed952c755529f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3a71b18c_f1e65faf","updated":"2016-12-07 15:22:09.000000000","message":"I\u0027d probably opt to name this file _template.py or _sample.py, but I won\u0027t loose much sleep if we stick with _dummy.py","commit_id":"5242836e01896a37f98c71dd4b384a058af05c1e"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"6a3223f1e28521418d57195cb6aed952c755529f","unresolved":false,"context_lines":[{"line_number":42,"context_line":"DESCRIPTION \u003d \"Provides support for foo\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"# A timestamp of when the extension was introduced."},{"line_number":45,"context_line":"UPDATED_TIMESTAMP \u003d \"2000-00-01T00:00:00-00:00\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# The name of the resource."},{"line_number":48,"context_line":"RESOURCE_NAME \u003d \u0027foo\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_9e8ffacb","line":45,"range":{"start_line":45,"start_character":21,"end_line":45,"end_character":25},"updated":"2016-12-07 15:22:09.000000000","message":"boy this is an old one! ;)","commit_id":"5242836e01896a37f98c71dd4b384a058af05c1e"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"6a3223f1e28521418d57195cb6aed952c755529f","unresolved":false,"context_lines":[{"line_number":48,"context_line":"RESOURCE_NAME \u003d \u0027foo\u0027"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"# The plural for the resource."},{"line_number":51,"context_line":"COLLECTION_NAME \u003d \u0027fooes\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"# The resource attribute map for the extension. It is effectively the"},{"line_number":54,"context_line":"# bulk of the API contract alongside ACTION_MAP"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_11a3db50","line":51,"range":{"start_line":51,"start_character":19,"end_line":51,"end_character":24},"updated":"2016-12-07 15:22:09.000000000","message":"Nit: isn\u0027t it \u0027foos\u0027 as per: https://en.wiktionary.org/wiki/foos#English","commit_id":"5242836e01896a37f98c71dd4b384a058af05c1e"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"5e2eac467f37998293779c0514c0754a69efa841","unresolved":false,"context_lines":[{"line_number":59,"context_line":"               \u0027is_visible\u0027: True, \u0027primary_key\u0027: True},"},{"line_number":60,"context_line":"    }"},{"line_number":61,"context_line":"}"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# The action map: it associates verbs with methods to be performed on"},{"line_number":64,"context_line":"# the API resource."},{"line_number":65,"context_line":"ACTION_MAP \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_e4c7b861","line":62,"updated":"2016-12-06 14:48:01.000000000","message":"How about a sub-resource attribute map? I don\u0027t know how common it is, but networking-bgpvpn is using sub-resources for network or router associations with a BGPVPN resource.\n\nI\u0027m not sure I\u0027ve got it correct yet, but here\u0027s what I have so far https://review.openstack.org/#/c/390196/10/neutron_lib/api/definitions/bgpvpn.py@112","commit_id":"5242836e01896a37f98c71dd4b384a058af05c1e"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"6a3223f1e28521418d57195cb6aed952c755529f","unresolved":false,"context_lines":[{"line_number":59,"context_line":"               \u0027is_visible\u0027: True, \u0027primary_key\u0027: True},"},{"line_number":60,"context_line":"    }"},{"line_number":61,"context_line":"}"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# The action map: it associates verbs with methods to be performed on"},{"line_number":64,"context_line":"# the API resource."},{"line_number":65,"context_line":"ACTION_MAP \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_7efbfe47","line":62,"in_reply_to":"3a71b18c_9cfb9e46","updated":"2016-12-07 15:22:09.000000000","message":"Here\u0027s one that\u0027s using the sub attr map [1]. I -1\u0027d it because I wasn\u0027t sure how SUB_RESOURCE_ATTRIBUTE_MAP gets used given [2].\n\n\n[1] https://review.openstack.org/#/c/407974/2/neutron_lib/api/definitions/logging_resource.py@97\n[2] https://review.openstack.org/#/c/394244/","commit_id":"5242836e01896a37f98c71dd4b384a058af05c1e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a7f62cb05cc338f04d8d821756aa3b403e81c162","unresolved":false,"context_lines":[{"line_number":59,"context_line":"               \u0027is_visible\u0027: True, \u0027primary_key\u0027: True},"},{"line_number":60,"context_line":"    }"},{"line_number":61,"context_line":"}"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# The action map: it associates verbs with methods to be performed on"},{"line_number":64,"context_line":"# the API resource."},{"line_number":65,"context_line":"ACTION_MAP \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_9cfb9e46","line":62,"in_reply_to":"3a71b18c_e4c7b861","updated":"2016-12-07 03:54:09.000000000","message":"Let me review it, it\u0027s on my backlog for a while. I started with this one, but we can add to it over time.","commit_id":"5242836e01896a37f98c71dd4b384a058af05c1e"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"5e2eac467f37998293779c0514c0754a69efa841","unresolved":false,"context_lines":[{"line_number":63,"context_line":"# The action map: it associates verbs with methods to be performed on"},{"line_number":64,"context_line":"# the API resource."},{"line_number":65,"context_line":"ACTION_MAP \u003d {"},{"line_number":66,"context_line":"}"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"# The list of required extensions."},{"line_number":69,"context_line":"REQUIRED_EXTENSIONS \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_04711444","line":66,"updated":"2016-12-06 14:48:01.000000000","message":"You should probably add a comment inside the braces with more example information, or else a URL to documentation elsewhere if there\u0027s something that explains how to construct an action map.","commit_id":"5242836e01896a37f98c71dd4b384a058af05c1e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a7f62cb05cc338f04d8d821756aa3b403e81c162","unresolved":false,"context_lines":[{"line_number":63,"context_line":"# The action map: it associates verbs with methods to be performed on"},{"line_number":64,"context_line":"# the API resource."},{"line_number":65,"context_line":"ACTION_MAP \u003d {"},{"line_number":66,"context_line":"}"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"# The list of required extensions."},{"line_number":69,"context_line":"REQUIRED_EXTENSIONS \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_fcc1f2e4","line":66,"in_reply_to":"3a71b18c_04711444","updated":"2016-12-07 03:54:09.000000000","message":"I can elaborate in the comment but hopefully other extensions will provide examples on how this looks like, e.g trunk.","commit_id":"5242836e01896a37f98c71dd4b384a058af05c1e"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"6a3223f1e28521418d57195cb6aed952c755529f","unresolved":false,"context_lines":[{"line_number":70,"context_line":"]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"# The list of optional extensions."},{"line_number":73,"context_line":"OPTIONAL_EXTENSIONS \u003d ["},{"line_number":74,"context_line":"]"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"# TODO(armax): add support for modeling custom queries"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_1e712ae1","line":73,"updated":"2016-12-07 15:22:09.000000000","message":"Should these be None or empty list? I see we used None here: https://github.com/openstack/neutron-lib/blob/master/neutron_lib/api/definitions/trunk.py#L95","commit_id":"5242836e01896a37f98c71dd4b384a058af05c1e"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"2450a73b26185bdfe9b4f6374e68dafa7fe3c142","unresolved":false,"context_lines":[{"line_number":20,"context_line":"LABEL \u003d \u0027DUMMY\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# Whether or not this extension is simply signaling behavior to the user"},{"line_number":23,"context_line":"# or it actively modifies the attribute map."},{"line_number":24,"context_line":"IS_SHIM_EXTENSION \u003d False"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# Whether the extension is marking the adoption of standardattr model for"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_05ec4028","line":23,"range":{"start_line":23,"start_character":8,"end_line":23,"end_character":16},"updated":"2016-12-08 15:51:29.000000000","message":"actually?","commit_id":"a3b5e867d7afed7dd8b27276a699a98a8a05d84f"}]}
