)]}'
{"neutron_lib/api/definitions/subnet_onboard.py":[{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"7fb31e471cc8d3884eb0d9dcd2b959307c938599","unresolved":false,"context_lines":[{"line_number":37,"context_line":"}"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"EXTENDED_ATTRIBUTES_2_0 \u003d {"},{"line_number":41,"context_line":"    subnetpool_def.RESOURCE_NAME: {"},{"line_number":42,"context_line":"        subnet_def.COLLECTION_NAME: {"},{"line_number":43,"context_line":"            \u0027validate\u0027: {"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_16aae76f","line":40,"updated":"2017-07-27 19:11:13.000000000","message":"We aren\u0027t using EXTENDED_ATTRIBUTES_2_0 in neutron-lib. For an example of resource attr extensions have a peek at the data_plane_status api def.","commit_id":"9650d8ff306342623dc2a6d44c81858ab42de358"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"ddde8b1772abc5a2559c7f025edc18ddc39798a3","unresolved":false,"context_lines":[{"line_number":37,"context_line":"}"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"EXTENDED_ATTRIBUTES_2_0 \u003d {"},{"line_number":41,"context_line":"    subnetpool_def.RESOURCE_NAME: {"},{"line_number":42,"context_line":"        subnet_def.COLLECTION_NAME: {"},{"line_number":43,"context_line":"            \u0027validate\u0027: {"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_72f23f9c","line":40,"in_reply_to":"ff346bd7_16aae76f","updated":"2017-08-03 20:11:23.000000000","message":"Done","commit_id":"9650d8ff306342623dc2a6d44c81858ab42de358"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"7fb31e471cc8d3884eb0d9dcd2b959307c938599","unresolved":false,"context_lines":[{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"# The list of required extensions."},{"line_number":63,"context_line":"REQUIRED_EXTENSIONS \u003d [\u0027subnetpool\u0027]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"# The list of optional extensions."},{"line_number":66,"context_line":"OPTIONAL_EXTENSIONS \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_d6a21fae","line":63,"range":{"start_line":63,"start_character":24,"end_line":63,"end_character":34},"updated":"2017-07-27 19:11:13.000000000","message":"is it possible to use the ALIAS from the subnetpool API def?","commit_id":"9650d8ff306342623dc2a6d44c81858ab42de358"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"ddde8b1772abc5a2559c7f025edc18ddc39798a3","unresolved":false,"context_lines":[{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"# The list of required extensions."},{"line_number":63,"context_line":"REQUIRED_EXTENSIONS \u003d [\u0027subnetpool\u0027]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"# The list of optional extensions."},{"line_number":66,"context_line":"OPTIONAL_EXTENSIONS \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_3250370b","line":63,"range":{"start_line":63,"start_character":24,"end_line":63,"end_character":34},"in_reply_to":"ff346bd7_d6a21fae","updated":"2017-08-03 20:11:23.000000000","message":"Done, this was actually not apart of the api def. The extension name is different than the name in the api def.","commit_id":"9650d8ff306342623dc2a6d44c81858ab42de358"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"450033772d4b078eeb11e3a6cd49d5e4f47f74a7","unresolved":false,"context_lines":[{"line_number":23,"context_line":"IS_STANDARD_ATTR_EXTENSION \u003d False"},{"line_number":24,"context_line":"NAME \u003d \"Subnet Onboard\""},{"line_number":25,"context_line":"DESCRIPTION \u003d \"Provides support for onboarding subnets into subnet pools\""},{"line_number":26,"context_line":"UPDATED_TIMESTAMP \u003d \"2016-07-26T10:00:00-00:00\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"ONBOARD_SUBNETS \u003d \u0027onboard_network_subnets\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f436f4f_7cf072ca","line":26,"range":{"start_line":26,"start_character":21,"end_line":26,"end_character":25},"updated":"2017-08-09 17:26:50.000000000","message":"Isn\u0027t this a new extension and should thus use a more recent date?","commit_id":"86ef9be31824abb3e45f04eeb8ccb72c2d0120b7"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"9360d17d4dacf82b064b8ac6b2ac4b4ba7633d69","unresolved":false,"context_lines":[{"line_number":23,"context_line":"IS_STANDARD_ATTR_EXTENSION \u003d False"},{"line_number":24,"context_line":"NAME \u003d \"Subnet Onboard\""},{"line_number":25,"context_line":"DESCRIPTION \u003d \"Provides support for onboarding subnets into subnet pools\""},{"line_number":26,"context_line":"UPDATED_TIMESTAMP \u003d \"2016-07-26T10:00:00-00:00\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"ONBOARD_SUBNETS \u003d \u0027onboard_network_subnets\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f436f4f_5cea41ac","line":26,"range":{"start_line":26,"start_character":21,"end_line":26,"end_character":25},"in_reply_to":"9f436f4f_7cf072ca","updated":"2017-08-10 04:12:29.000000000","message":"I had the opinion of taking it from the first time Ryan proposed it.\nBut ok","commit_id":"86ef9be31824abb3e45f04eeb8ccb72c2d0120b7"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"450033772d4b078eeb11e3a6cd49d5e4f47f74a7","unresolved":false,"context_lines":[{"line_number":64,"context_line":"}"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"# The list of required extensions."},{"line_number":67,"context_line":"REQUIRED_EXTENSIONS \u003d [\u0027subnet_allocation\u0027]"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"# The list of optional extensions."},{"line_number":70,"context_line":"OPTIONAL_EXTENSIONS \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"9f436f4f_9ccc368a","line":67,"range":{"start_line":67,"start_character":24,"end_line":67,"end_character":41},"updated":"2017-08-09 17:26:50.000000000","message":"For this I think we can use neutron_lib.constants.SUBNET_ALLOCATION_EXT_ALIAS","commit_id":"86ef9be31824abb3e45f04eeb8ccb72c2d0120b7"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"c0be97998a40a3237dc8ac6c4204cbc9f59e9ac5","unresolved":false,"context_lines":[{"line_number":64,"context_line":"}"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"# The list of required extensions."},{"line_number":67,"context_line":"REQUIRED_EXTENSIONS \u003d [\u0027subnet_allocation\u0027]"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"# The list of optional extensions."},{"line_number":70,"context_line":"OPTIONAL_EXTENSIONS \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"9f436f4f_7c5ce57d","line":67,"range":{"start_line":67,"start_character":24,"end_line":67,"end_character":41},"in_reply_to":"9f436f4f_9ccc368a","updated":"2017-08-10 04:50:47.000000000","message":"Done","commit_id":"86ef9be31824abb3e45f04eeb8ccb72c2d0120b7"}],"neutron_lib/api/validators/__init__.py":[{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"7fb31e471cc8d3884eb0d9dcd2b959307c938599","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ff346bd7_69a7140d","updated":"2017-07-27 19:11:13.000000000","message":"IF we do need a new validator; it should also have a UT.","commit_id":"9650d8ff306342623dc2a6d44c81858ab42de358"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"7fb31e471cc8d3884eb0d9dcd2b959307c938599","unresolved":false,"context_lines":[{"line_number":1015,"context_line":"            segmentations[segmentation_type].add(segmentation_id)"},{"line_number":1016,"context_line":""},{"line_number":1017,"context_line":""},{"line_number":1018,"context_line":"def validate_onboard_subnet(data, key_specs\u003dNone):"},{"line_number":1019,"context_line":"    if data is not None:"},{"line_number":1020,"context_line":"        if isinstance(data, list):"},{"line_number":1021,"context_line":"            message \u003d _(\"Invalid data format for subnet_onboard: \""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_b620bbad","line":1018,"range":{"start_line":1018,"start_character":4,"end_line":1018,"end_character":27},"updated":"2017-07-27 19:11:13.000000000","message":"No existing validators work for this?\nWhat about validate_any_key_specs_or_none; IIUC it does the same thing, no?","commit_id":"9650d8ff306342623dc2a6d44c81858ab42de358"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"ddde8b1772abc5a2559c7f025edc18ddc39798a3","unresolved":false,"context_lines":[{"line_number":1015,"context_line":"            segmentations[segmentation_type].add(segmentation_id)"},{"line_number":1016,"context_line":""},{"line_number":1017,"context_line":""},{"line_number":1018,"context_line":"def validate_onboard_subnet(data, key_specs\u003dNone):"},{"line_number":1019,"context_line":"    if data is not None:"},{"line_number":1020,"context_line":"        if isinstance(data, list):"},{"line_number":1021,"context_line":"            message \u003d _(\"Invalid data format for subnet_onboard: \""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_af104058","line":1018,"range":{"start_line":1018,"start_character":4,"end_line":1018,"end_character":27},"in_reply_to":"ff346bd7_b620bbad","updated":"2017-08-03 20:11:23.000000000","message":"yeah it looks identical.","commit_id":"9650d8ff306342623dc2a6d44c81858ab42de358"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"7fb31e471cc8d3884eb0d9dcd2b959307c938599","unresolved":false,"context_lines":[{"line_number":1023,"context_line":"            raise n_exc.BadRequest(message)"},{"line_number":1024,"context_line":"        for d in data:"},{"line_number":1025,"context_line":"            msg \u003d validators.validate_dict(d, key_specs)"},{"line_number":1026,"context_line":"        if msg:"},{"line_number":1027,"context_line":"            message \u003d _(\"Invalid data format for subnet_onboard: \""},{"line_number":1028,"context_line":"                        \"%(data)s\") % {\"data\": msg}"},{"line_number":1029,"context_line":"            raise n_exc.BadRequest(message)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_a953bc16","line":1026,"updated":"2017-07-27 19:11:13.000000000","message":"IF we did need this validator, doesn\u0027t this if need to be in the for loop; otherwise msg is just the last return value from validate_dict() IIUC.","commit_id":"9650d8ff306342623dc2a6d44c81858ab42de358"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"ddde8b1772abc5a2559c7f025edc18ddc39798a3","unresolved":false,"context_lines":[{"line_number":1023,"context_line":"            raise n_exc.BadRequest(message)"},{"line_number":1024,"context_line":"        for d in data:"},{"line_number":1025,"context_line":"            msg \u003d validators.validate_dict(d, key_specs)"},{"line_number":1026,"context_line":"        if msg:"},{"line_number":1027,"context_line":"            message \u003d _(\"Invalid data format for subnet_onboard: \""},{"line_number":1028,"context_line":"                        \"%(data)s\") % {\"data\": msg}"},{"line_number":1029,"context_line":"            raise n_exc.BadRequest(message)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_923923d8","line":1026,"in_reply_to":"ff346bd7_a953bc16","updated":"2017-08-03 20:11:23.000000000","message":"yeah.. I\u0027ll use the validator.","commit_id":"9650d8ff306342623dc2a6d44c81858ab42de358"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"295f4a01a45e5d73eff5fc93aa6fb998e264c74f","unresolved":false,"context_lines":[{"line_number":1041,"context_line":"              \u0027type:not_empty_string\u0027: validate_not_empty_string,"},{"line_number":1042,"context_line":"              \u0027type:not_empty_string_or_none\u0027:"},{"line_number":1043,"context_line":"              validate_not_empty_string_or_none,"},{"line_number":1044,"context_line":"              \u0027type:subnet_onboard\u0027: validate_any_key_specs_or_none,"},{"line_number":1045,"context_line":"              \u0027type:subnet\u0027: validate_subnet,"},{"line_number":1046,"context_line":"              \u0027type:subnet_list\u0027: validate_subnet_list,"},{"line_number":1047,"context_line":"              \u0027type:subnet_or_none\u0027: validate_subnet_or_none,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_fcefe7e6","line":1044,"range":{"start_line":1044,"start_character":14,"end_line":1044,"end_character":68},"updated":"2017-08-07 04:57:09.000000000","message":"Why don\u0027t use \u0027type:list_of_any_key_specs_or_none\u0027?","commit_id":"c9a5f6ff8dd7329a3be6a3c34eaee5408e56833b"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"553584991f0720bd29992d78e85e3751d5d442d3","unresolved":false,"context_lines":[{"line_number":1041,"context_line":"              \u0027type:not_empty_string\u0027: validate_not_empty_string,"},{"line_number":1042,"context_line":"              \u0027type:not_empty_string_or_none\u0027:"},{"line_number":1043,"context_line":"              validate_not_empty_string_or_none,"},{"line_number":1044,"context_line":"              \u0027type:subnet_onboard\u0027: validate_any_key_specs_or_none,"},{"line_number":1045,"context_line":"              \u0027type:subnet\u0027: validate_subnet,"},{"line_number":1046,"context_line":"              \u0027type:subnet_list\u0027: validate_subnet_list,"},{"line_number":1047,"context_line":"              \u0027type:subnet_or_none\u0027: validate_subnet_or_none,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_b5d5e6bb","line":1044,"range":{"start_line":1044,"start_character":14,"end_line":1044,"end_character":68},"in_reply_to":"bf3e73b7_72f67492","updated":"2017-08-07 14:59:24.000000000","message":"Done","commit_id":"c9a5f6ff8dd7329a3be6a3c34eaee5408e56833b"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"eff6cefa3163eb9dfdefb6f0fb8a7d973436acfd","unresolved":false,"context_lines":[{"line_number":1041,"context_line":"              \u0027type:not_empty_string\u0027: validate_not_empty_string,"},{"line_number":1042,"context_line":"              \u0027type:not_empty_string_or_none\u0027:"},{"line_number":1043,"context_line":"              validate_not_empty_string_or_none,"},{"line_number":1044,"context_line":"              \u0027type:subnet_onboard\u0027: validate_any_key_specs_or_none,"},{"line_number":1045,"context_line":"              \u0027type:subnet\u0027: validate_subnet,"},{"line_number":1046,"context_line":"              \u0027type:subnet_list\u0027: validate_subnet_list,"},{"line_number":1047,"context_line":"              \u0027type:subnet_or_none\u0027: validate_subnet_or_none,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_72f67492","line":1044,"range":{"start_line":1044,"start_character":14,"end_line":1044,"end_character":68},"in_reply_to":"bf3e73b7_fcefe7e6","updated":"2017-08-07 13:44:57.000000000","message":"+1.. seems we should just reuse the existing type IMHO.","commit_id":"c9a5f6ff8dd7329a3be6a3c34eaee5408e56833b"}],"neutron_lib/exceptions/subnet_onboard.py":[{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"450033772d4b078eeb11e3a6cd49d5e4f47f74a7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9f436f4f_dcaf5e92","updated":"2017-08-09 17:26:50.000000000","message":"Do we even need these exceptions anymore? Since we\u0027re reusing an existing validator I don\u0027t see them used in this patch, but maybe we expect them to be used by consumers??","commit_id":"86ef9be31824abb3e45f04eeb8ccb72c2d0120b7"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"e58e0d04823c01a2b4b766916d54bf4264b83df4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9f436f4f_ee880dc7","in_reply_to":"9f436f4f_9c7c29ec","updated":"2017-08-10 15:13:11.000000000","message":"https://review.openstack.org/#/c/348080/17/neutron/db/db_base_plugin_v2.py@1216 I guess we can replace with invalid_input exception.","commit_id":"86ef9be31824abb3e45f04eeb8ccb72c2d0120b7"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"9360d17d4dacf82b064b8ac6b2ac4b4ba7633d69","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9f436f4f_9c7c29ec","in_reply_to":"9f436f4f_dcaf5e92","updated":"2017-08-10 04:12:29.000000000","message":"I think we can skip it for now","commit_id":"86ef9be31824abb3e45f04eeb8ccb72c2d0120b7"}],"neutron_lib/tests/unit/api/definitions/test_subnet_onboard.py":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"295f4a01a45e5d73eff5fc93aa6fb998e264c74f","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class OnboardSubnetDefinitionTestCase(base.DefinitionBaseTestCase):"},{"line_number":19,"context_line":"    extension_module \u003d subnet_onboard"},{"line_number":20,"context_line":"    extension_resources \u003d (subnetpool.COLLECTION_NAME,)"},{"line_number":21,"context_line":"    extension_attributes \u003d (subnet_onboard.ONBOARD_SUBNETS,)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_dcec23f5","line":20,"range":{"start_line":20,"start_character":27,"end_line":20,"end_character":54},"updated":"2017-08-07 04:57:09.000000000","message":"The \"subnetpools\" is not extension resource.","commit_id":"c9a5f6ff8dd7329a3be6a3c34eaee5408e56833b"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"553584991f0720bd29992d78e85e3751d5d442d3","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class OnboardSubnetDefinitionTestCase(base.DefinitionBaseTestCase):"},{"line_number":19,"context_line":"    extension_module \u003d subnet_onboard"},{"line_number":20,"context_line":"    extension_resources \u003d (subnetpool.COLLECTION_NAME,)"},{"line_number":21,"context_line":"    extension_attributes \u003d (subnet_onboard.ONBOARD_SUBNETS,)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_354c56c6","line":20,"range":{"start_line":20,"start_character":27,"end_line":20,"end_character":54},"in_reply_to":"bf3e73b7_dcec23f5","updated":"2017-08-07 14:59:24.000000000","message":"Done","commit_id":"c9a5f6ff8dd7329a3be6a3c34eaee5408e56833b"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"450033772d4b078eeb11e3a6cd49d5e4f47f74a7","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class OnboardSubnetDefinitionTestCase(base.DefinitionBaseTestCase):"},{"line_number":18,"context_line":"    extension_module \u003d subnet_onboard"},{"line_number":19,"context_line":"    extension_resources \u003d tuple(subnet_onboard.REQUIRED_EXTENSIONS)"},{"line_number":20,"context_line":"    extension_attributes \u003d (subnet_onboard.ONBOARD_SUBNETS,)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f436f4f_7c77523c","line":19,"range":{"start_line":19,"start_character":47,"end_line":19,"end_character":66},"updated":"2017-08-09 17:26:50.000000000","message":"Is this what you intended? Seems odd to ref the REQUIRED_EXTENSIONS here.","commit_id":"86ef9be31824abb3e45f04eeb8ccb72c2d0120b7"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"fb82ba2205a78f0e9067156cd7224789ebe0c594","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class OnboardSubnetDefinitionTestCase(base.DefinitionBaseTestCase):"},{"line_number":18,"context_line":"    extension_module \u003d subnet_onboard"},{"line_number":19,"context_line":"    extension_resources \u003d tuple(subnet_onboard.REQUIRED_EXTENSIONS)"},{"line_number":20,"context_line":"    extension_attributes \u003d (subnet_onboard.ONBOARD_SUBNETS,)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f436f4f_275ab329","line":19,"range":{"start_line":19,"start_character":26,"end_line":19,"end_character":67},"updated":"2017-08-10 19:17:05.000000000","message":"This still looks off to me. This extension doesn\u0027t add any resources so I think this should just be an empty tuple.","commit_id":"f4ddadebdc7d3071538fc3dc45fcca124a93274b"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"60fb284b801bff0df7c49ed1ce25cef1d9b081b5","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class OnboardSubnetDefinitionTestCase(base.DefinitionBaseTestCase):"},{"line_number":18,"context_line":"    extension_module \u003d subnet_onboard"},{"line_number":19,"context_line":"    extension_resources \u003d tuple(subnet_onboard.REQUIRED_EXTENSIONS)"},{"line_number":20,"context_line":"    extension_attributes \u003d (subnet_onboard.ONBOARD_SUBNETS,)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f436f4f_e9a23d4b","line":19,"range":{"start_line":19,"start_character":26,"end_line":19,"end_character":67},"in_reply_to":"9f436f4f_275ab329","updated":"2017-08-10 21:22:41.000000000","message":"I thought this was just listing extension resources that the current extension needed. I\u0027ll remove it.","commit_id":"f4ddadebdc7d3071538fc3dc45fcca124a93274b"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"0c8be5c94cd7c550eaa908dc03a669be57c54027","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class OnboardSubnetDefinitionTestCase(base.DefinitionBaseTestCase):"},{"line_number":18,"context_line":"    extension_module \u003d subnet_onboard"},{"line_number":19,"context_line":"    extension_attributes \u003d (subnet_onboard.ONBOARD_SUBNETS,)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_af64f522","line":19,"range":{"start_line":19,"start_character":28,"end_line":19,"end_character":58},"updated":"2017-08-14 13:47:47.000000000","message":"I don\u0027t think this is needed either is it?\nI don\u0027t see the api def adding this attribute to a resource.","commit_id":"0a88ef50f13e0ebfd7220a9fb46f0a10f1768ded"}],"releasenotes/notes/subnet-onboard-api-definition-f4918ff1f1d12c97.yaml":[{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"7fb31e471cc8d3884eb0d9dcd2b959307c938599","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"    - Adds subnet-onboard API definition to neutron-lib."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"ff346bd7_897b5879","line":3,"range":{"start_line":3,"start_character":11,"end_line":3,"end_character":25},"updated":"2017-07-27 19:11:13.000000000","message":"Nit: use ``subnet-onboard``","commit_id":"9650d8ff306342623dc2a6d44c81858ab42de358"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"ddde8b1772abc5a2559c7f025edc18ddc39798a3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"    - Adds subnet-onboard API definition to neutron-lib."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"df3967d1_1fce8ab3","line":3,"range":{"start_line":3,"start_character":11,"end_line":3,"end_character":25},"in_reply_to":"ff346bd7_897b5879","updated":"2017-08-03 20:11:23.000000000","message":"Done","commit_id":"9650d8ff306342623dc2a6d44c81858ab42de358"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"450033772d4b078eeb11e3a6cd49d5e4f47f74a7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"    - Adds ``subnet-onboard`` API definition to neutron-lib."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9f436f4f_9c9f964f","line":3,"range":{"start_line":3,"start_character":13,"end_line":3,"end_character":27},"updated":"2017-08-09 17:26:50.000000000","message":"Would it be clearer to ref the actual alias here (subnet_onboard)?","commit_id":"86ef9be31824abb3e45f04eeb8ccb72c2d0120b7"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"c0be97998a40a3237dc8ac6c4204cbc9f59e9ac5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"    - Adds ``subnet-onboard`` API definition to neutron-lib."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9f436f4f_3c565d5e","line":3,"range":{"start_line":3,"start_character":13,"end_line":3,"end_character":27},"in_reply_to":"9f436f4f_9c9f964f","updated":"2017-08-10 04:50:47.000000000","message":"Done","commit_id":"86ef9be31824abb3e45f04eeb8ccb72c2d0120b7"}]}
