)]}'
{"neutron/db/l3_db.py":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"7c3276c9d028bd5902bbe9a68419ed97b4f3fa69","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    @property"},{"line_number":102,"context_line":"    def _is_dns_integration_supported(self):"},{"line_number":103,"context_line":"        if self._dns_integration is None:"},{"line_number":104,"context_line":"            self._dns_integration \u003d ("},{"line_number":105,"context_line":"                utils.is_extension_supported(self._core_plugin,"},{"line_number":106,"context_line":"                    \u0027dns-integration\u0027) or"},{"line_number":107,"context_line":"                utils.is_extension_supported(self._core_plugin,"},{"line_number":108,"context_line":"                    \u0027dns-domain-ports\u0027))"},{"line_number":109,"context_line":"        return self._dns_integration"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_a9e6c915","line":108,"range":{"start_line":104,"start_character":12,"end_line":108,"end_character":40},"updated":"2017-05-30 04:16:41.000000000","message":"Does this mean that there may be a plugin which doesn\u0027t support \"dns-integration\" but supports \"dns-domain-ports\"? I guess that \"dns-domain-ports\" extension needs \"dns-integration\" support.","commit_id":"d501fee902d7a2ea967e3f1cbe1e4f2e64f24074"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"4df3db9b171db97a0c092cf39283a8db24245181","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    @property"},{"line_number":102,"context_line":"    def _is_dns_integration_supported(self):"},{"line_number":103,"context_line":"        if self._dns_integration is None:"},{"line_number":104,"context_line":"            self._dns_integration \u003d ("},{"line_number":105,"context_line":"                utils.is_extension_supported(self._core_plugin,"},{"line_number":106,"context_line":"                    \u0027dns-integration\u0027) or"},{"line_number":107,"context_line":"                utils.is_extension_supported(self._core_plugin,"},{"line_number":108,"context_line":"                    \u0027dns-domain-ports\u0027))"},{"line_number":109,"context_line":"        return self._dns_integration"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_c42684b8","line":108,"range":{"start_line":104,"start_character":12,"end_line":108,"end_character":40},"in_reply_to":"df140735_a9e6c915","updated":"2017-05-30 05:00:41.000000000","message":"As per https://review.openstack.org/#/c/457101/7/neutron/extensions/dnsdomainport.py@52 , dns-domain-ports require dns-integration extension.","commit_id":"d501fee902d7a2ea967e3f1cbe1e4f2e64f24074"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"f68aa7fd3e375b8ec87b2045dd2118cf2a55f29c","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    @property"},{"line_number":102,"context_line":"    def _is_dns_integration_supported(self):"},{"line_number":103,"context_line":"        if self._dns_integration is None:"},{"line_number":104,"context_line":"            self._dns_integration \u003d ("},{"line_number":105,"context_line":"                utils.is_extension_supported(self._core_plugin,"},{"line_number":106,"context_line":"                    \u0027dns-integration\u0027) or"},{"line_number":107,"context_line":"                utils.is_extension_supported(self._core_plugin,"},{"line_number":108,"context_line":"                    \u0027dns-domain-ports\u0027))"},{"line_number":109,"context_line":"        return self._dns_integration"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_c5d0abfa","line":108,"range":{"start_line":104,"start_character":12,"end_line":108,"end_character":40},"in_reply_to":"df140735_c42684b8","updated":"2017-05-30 20:02:53.000000000","message":"As reedip points out, dns-domain-ports requires dns-integration: https://review.openstack.org/#/c/457101/7/neutron/extensions/dnsdomainport.py@52. So if the former is loaded also the latter is. However, if dns-integration is loaded as a result of configuring dns-domain-ports, utils.is_extension_supported(self._core_plugin, \u0027dns-integration\u0027) will return False, even though you have all the functionality of dns-integration. That is why I added the second check here.\n\nFrom the point of the user, it will only be required to configure one of the two extensions. For further explanation, please see here: https://review.openstack.org/#/c/457101/5/neutron/plugins/ml2/extensions/dns_integration.py","commit_id":"d501fee902d7a2ea967e3f1cbe1e4f2e64f24074"}],"neutron/extensions/dnsdomainport.py":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"04882a730de62442913c852490f0585e9cb9dca4","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.extensions import dns"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"EXTENDED_ATTRIBUTES_2_0 \u003d {"},{"line_number":22,"context_line":"    \u0027ports\u0027: {"},{"line_number":23,"context_line":"        dns.DNSDOMAIN: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_5eed9189","line":20,"updated":"2017-04-25 12:54:45.000000000","message":"I think that new extension should be discussed in API definition of neutron-lib first. Do you have any reason to except this extension?","commit_id":"1d6fa0aefc7eb7b4eb81af7518e497de7d81ed3a"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"d4d9a6d3210e5900671124dd0dbe1610b54f7895","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.extensions import dns"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"EXTENDED_ATTRIBUTES_2_0 \u003d {"},{"line_number":22,"context_line":"    \u0027ports\u0027: {"},{"line_number":23,"context_line":"        dns.DNSDOMAIN: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_7e2189b4","line":20,"in_reply_to":"5ff73747_5eed9189","updated":"2017-05-30 03:08:07.000000000","message":"+1","commit_id":"1d6fa0aefc7eb7b4eb81af7518e497de7d81ed3a"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"3b9edb2887f675497fcac599337915ae0a3d0940","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.extensions import dns"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"EXTENDED_ATTRIBUTES_2_0 \u003d {"},{"line_number":22,"context_line":"    \u0027ports\u0027: {"},{"line_number":23,"context_line":"        dns.DNSDOMAIN: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_4f494689","line":20,"in_reply_to":"5ff73747_5eed9189","updated":"2017-04-25 22:41:40.000000000","message":"You are right. I will add an API definition in neutron_lib.","commit_id":"1d6fa0aefc7eb7b4eb81af7518e497de7d81ed3a"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"4df3db9b171db97a0c092cf39283a8db24245181","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    \u0027ports\u0027: {"},{"line_number":23,"context_line":"        dns.DNSDOMAIN: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":24,"context_line":"                        \u0027default\u0027: \u0027\u0027,"},{"line_number":25,"context_line":"                        \u0027convert_to\u0027: dns.convert_to_lowercase,"},{"line_number":26,"context_line":"                        \u0027validate\u0027: {\u0027type:dns_domain\u0027: dns.FQDN_MAX_LEN},"},{"line_number":27,"context_line":"                        \u0027is_visible\u0027: True},"},{"line_number":28,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_c45b242c","line":25,"range":{"start_line":25,"start_character":38,"end_line":25,"end_character":41},"updated":"2017-05-30 05:00:41.000000000","message":"dont we have a converter for this in neutron-lib?\nhttps://github.com/openstack/neutron-lib/blob/f94fc16980e7fdc24c6a9421d411ffbd033ac469/neutron_lib/api/converters.py#L206","commit_id":"d501fee902d7a2ea967e3f1cbe1e4f2e64f24074"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"f68aa7fd3e375b8ec87b2045dd2118cf2a55f29c","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    \u0027ports\u0027: {"},{"line_number":23,"context_line":"        dns.DNSDOMAIN: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":24,"context_line":"                        \u0027default\u0027: \u0027\u0027,"},{"line_number":25,"context_line":"                        \u0027convert_to\u0027: dns.convert_to_lowercase,"},{"line_number":26,"context_line":"                        \u0027validate\u0027: {\u0027type:dns_domain\u0027: dns.FQDN_MAX_LEN},"},{"line_number":27,"context_line":"                        \u0027is_visible\u0027: True},"},{"line_number":28,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_257e47e4","line":25,"range":{"start_line":25,"start_character":38,"end_line":25,"end_character":41},"in_reply_to":"df140735_c45b242c","updated":"2017-05-30 20:02:53.000000000","message":"I don\u0027t remember whether the function you indicate existed when I originally wrote dns-integration. So when creating this new extension I was simply re-using what I had in place in dns-integration.\n\nBut now, it exists in neutron-lib. So I will use that one. Thanks","commit_id":"d501fee902d7a2ea967e3f1cbe1e4f2e64f24074"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"af1f3359fdb310e2e3df5c29dc0d4c540f86f270","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @classmethod"},{"line_number":50,"context_line":"    def get_updated(cls):"},{"line_number":51,"context_line":"        return \"2017-21-15T18:00:00-00:00\""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def get_required_extensions(self):"},{"line_number":54,"context_line":"        return [\"dns-integration\"]"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f201791_e8496e60","line":51,"updated":"2017-06-20 20:12:56.000000000","message":"This is supposed to be YYYY-MM-DD but something is wrong","commit_id":"e84610248971e0176f05c3b740d2459df89bb511"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"2790473b10ecc04b4676e43c177f42759fec8ce8","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @classmethod"},{"line_number":50,"context_line":"    def get_updated(cls):"},{"line_number":51,"context_line":"        return \"2017-21-15T18:00:00-00:00\""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def get_required_extensions(self):"},{"line_number":54,"context_line":"        return [\"dns-integration\"]"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f201791_718713b7","line":51,"in_reply_to":"5f201791_e8496e60","updated":"2017-06-25 21:40:54.000000000","message":"Done","commit_id":"e84610248971e0176f05c3b740d2459df89bb511"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"85a829f29007c953ca8c924496a57e7d1b3a445b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 IBM"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f1d235d_726f1f92","line":1,"updated":"2017-07-04 06:56:49.000000000","message":"This file name is \"dnsdomainport\" but the name of api definition is \"dns_domain_ports\". I think that it\u0027s better to make them same.","commit_id":"13b0d9d4255c91c30a74369d26c121d14d6f5cc6"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b2467af4f7893c92990edef8581d5c419f87c96c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 IBM"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_a70feddf","line":1,"in_reply_to":"3f1d235d_726f1f92","updated":"2017-07-13 21:26:24.000000000","message":"Done","commit_id":"13b0d9d4255c91c30a74369d26c121d14d6f5cc6"}],"neutron/plugins/ml2/extensions/dns_integration.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"b8ccfbd086281290171ffbff0a500e3849a28bcd","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        return True"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"class DNSDomainPortsExtensionDriver(api.ExtensionDriver):"},{"line_number":325,"context_line":"    _supported_extension_alias \u003d \u0027dns-domain-ports\u0027"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_75f2e308","line":324,"updated":"2017-04-23 19:41:41.000000000","message":"can we make the changes required to the Ml2 extension driver code to allow the DNSExtensionDriverML2 to provide both extension aliases? It\u0027s a little much to add another entry point and make users load it as well when it\u0027s basically the same functionality.","commit_id":"5dd99fb958e714d5c013e194cf51621a8a899bd4"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b3dfb70b9bb67b67911621907eebd5344d49f9c2","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        return True"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"class DNSDomainPortsExtensionDriver(api.ExtensionDriver):"},{"line_number":325,"context_line":"    _supported_extension_alias \u003d \u0027dns-domain-ports\u0027"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_15527f68","line":324,"in_reply_to":"5ff73747_75f2e308","updated":"2017-04-23 22:32:53.000000000","message":"Darn! Today in church, in the middle of the sermon, I thought of this. You beat to the review LOL\n\nHere\u0027s how it is going to work. We are adding a new extension named \u0027dns-domain-ports\u0027. When it is loaded, if the user does a GET /v2.0/extensions, she will see this new extension along with the previous extension \u0027dns-integration\u0027, because it is listed as required. So the new extension is discoverable from GET /v2.0/extensions.\n\nFrom the point of view of configuring these two extensions in the ML2 extensions manager, nothing changes. The user only has to add the current \u0027dns\u0027 entry point to the \u0027extension_drivers\u0027 parameter in /etc/neutron/plugins/ml2/ml2_conf.ini. That is the same as the currently released implementation.","commit_id":"5dd99fb958e714d5c013e194cf51621a8a899bd4"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d0299aa40cd45b857ebd31df14ce4134cc46dc22","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class DNSExtensionDriver(api.ExtensionDriver):"},{"line_number":39,"context_line":"    _supported_extension_alias \u003d \u0027dns-domain-ports\u0027"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @property"},{"line_number":42,"context_line":"    def extension_alias(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_05c5a43c","line":39,"updated":"2017-04-24 09:33:36.000000000","message":"this breaks the api - today people may be querying the \u0027dns-integration\u0027 setting","commit_id":"a4634eeb67cadc14adf22957033c6aa6bfe0a304"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"d2f943e4ceb1683c8609bf5e0d1def8d28c591ec","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class DNSExtensionDriver(api.ExtensionDriver):"},{"line_number":39,"context_line":"    _supported_extension_alias \u003d \u0027dns-domain-ports\u0027"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @property"},{"line_number":42,"context_line":"    def extension_alias(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_b8027bb3","line":39,"in_reply_to":"5ff73747_05c5a43c","updated":"2017-04-25 02:58:11.000000000","message":"Since the new extension, dns-domain-ports, requires dns-integration, I assumed that a GET /v2.0/extensions would return dns-integration in the returned list. But it doesn\u0027t. So yeah, this breaks the API. Thanks :-)","commit_id":"a4634eeb67cadc14adf22957033c6aa6bfe0a304"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"0012c0513b432eee508fca9ca397c04ac8528f46","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        return True"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"class DNSDomainPortsExtensionDriver(DNSExtensionDriverML2):"},{"line_number":325,"context_line":"    _supported_extension_alias \u003d \u0027dns-domain-ports\u0027"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_d89f874e","line":324,"updated":"2017-04-25 03:10:40.000000000","message":"@Kevin,\n\nAll the code to handle the logic of the port dns_domain attribute will go in DNSExtensionDriver (L38). This driver will only be used to load the dns-domain-ports extension, whose functionality will be a proper superset of dns-integration. This is how it will work from the point of view of the user:\n\n1) Users who currently use dns-integration will see absolutely no change and will continue loading the DNSExtensionDriver driver / entry point\n\n2) Users who want to adopt the new dns-domain-ports extension will only have to load this driver / entry point. They will get all the functionality of the new extension and the functionality of the dns-integration extension\n\n3) The new dns-domain-ports is discoverable through the API\n\n4) Users who don\u0027t want to move to the new extension will continue seeing dns-integration in the list of extensions","commit_id":"1d6fa0aefc7eb7b4eb81af7518e497de7d81ed3a"}],"neutron/tests/unit/plugins/ml2/extensions/test_dns_integration.py":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"85a829f29007c953ca8c924496a57e7d1b3a445b","unresolved":false,"context_lines":[{"line_number":537,"context_line":"    \u0027neutron.services.externaldns.drivers.designate.driver.get_clients\u0027,"},{"line_number":538,"context_line":"    **mock_config)"},{"line_number":539,"context_line":"class DNSDomainPortsTestCase(DNSIntegrationTestCase):"},{"line_number":540,"context_line":"    _extension_drivers \u003d [\u0027dns_domain_ports\u0027]"},{"line_number":541,"context_line":"    _domain \u003d \u0027domain.com.\u0027"},{"line_number":542,"context_line":"    _port_domain \u003d \u0027portdomain.com.\u0027"},{"line_number":543,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f1d235d_92af5be2","line":540,"range":{"start_line":540,"start_character":25,"end_line":540,"end_character":45},"updated":"2017-07-04 06:56:49.000000000","message":"Question: Don\u0027t this need \u0027dns\u0027 as well?","commit_id":"13b0d9d4255c91c30a74369d26c121d14d6f5cc6"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b2467af4f7893c92990edef8581d5c419f87c96c","unresolved":false,"context_lines":[{"line_number":537,"context_line":"    \u0027neutron.services.externaldns.drivers.designate.driver.get_clients\u0027,"},{"line_number":538,"context_line":"    **mock_config)"},{"line_number":539,"context_line":"class DNSDomainPortsTestCase(DNSIntegrationTestCase):"},{"line_number":540,"context_line":"    _extension_drivers \u003d [\u0027dns_domain_ports\u0027]"},{"line_number":541,"context_line":"    _domain \u003d \u0027domain.com.\u0027"},{"line_number":542,"context_line":"    _port_domain \u003d \u0027portdomain.com.\u0027"},{"line_number":543,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_c7878961","line":540,"range":{"start_line":540,"start_character":25,"end_line":540,"end_character":45},"in_reply_to":"3f1d235d_92af5be2","updated":"2017-07-13 21:26:24.000000000","message":"No, it doesn\u0027t because dns_domain_ports is a super-set of dns","commit_id":"13b0d9d4255c91c30a74369d26c121d14d6f5cc6"}]}
