)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1a516ace8c5e1839c6ed67a997f2e298c003dacb","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This network driver is designed to work with containers in specific"},{"line_number":10,"context_line":"implementations.  Eventually it can be used with VMs as a single active node"},{"line_number":11,"context_line":"topology, but the flows calling it would require some changes."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I11816fb68296f305a7a5e767a7b9a7a87dc0864e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":37,"id":"9a1a9d01_9e3fddd5","line":11,"updated":"2015-09-28 10:03:25.000000000","message":"This change deserves a DocImpact tag because the octavia.conf is updated and should be associated to a bug/spec ...","commit_id":"27d25c3fbe041e3b046b7f6d22c5778ae2e5715c"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"3b6e91b10bf7e99ed531e173a34635dd58e624cd","unresolved":false,"context_lines":[{"line_number":13,"context_line":"DocImpact"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I11816fb68296f305a7a5e767a7b9a7a87dc0864e"},{"line_number":16,"context_line":"Closes-Bug: #1500593"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":38,"id":"9a1a9d01_06c73b46","line":16,"updated":"2015-10-02 10:02:51.000000000","message":"The bug deserves some detail in LP otherwise it\u0027s impossible to understand what this change does","commit_id":"efa0eb0acd699d06c7c7959eba959f6c42b01e9c"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"372c44a49f14f34275bb6ea4fc51dea9ec2dfa87","unresolved":false,"context_lines":[{"line_number":13,"context_line":"DocImpact"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I11816fb68296f305a7a5e767a7b9a7a87dc0864e"},{"line_number":16,"context_line":"Closes-Bug: #1500593"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":38,"id":"7a2fa921_031b9f73","line":16,"in_reply_to":"9a1a9d01_06c73b46","updated":"2015-10-06 17:17:05.000000000","message":"Done","commit_id":"efa0eb0acd699d06c7c7959eba959f6c42b01e9c"}],"etc/octavia.conf":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"aa2e2440d181612e045e2248313972641b3c6d37","unresolved":false,"context_lines":[{"line_number":127,"context_line":"# amp_ssh_allowed_access \u003d True"},{"line_number":128,"context_line":"# amp_network \u003d"},{"line_number":129,"context_line":"# amp_secgroup_list \u003d"},{"line_number":130,"context_line":"# sec_grp_enabled \u003d True"},{"line_number":131,"context_line":"# client_ca \u003d /etc/octavia/certs/ca_01.pem"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"# Amphora driver options are amphora_noop_driver,"}],"source_content_type":"text/plain","patch_set":63,"id":"7a740942_5de32bd9","line":130,"updated":"2015-12-08 22:13:56.000000000","message":"Could you add a comment documenting this just a little bit? I assume this is ONLY for network_containers_driver? We have a slew of options that are very driver specific and it\u0027d really help new people configuring our service if it were more obvious what is used for/by what.","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"33173555dc19f67f4f9627a47a64cdf166b3b27d","unresolved":false,"context_lines":[{"line_number":127,"context_line":"# amp_ssh_allowed_access \u003d True"},{"line_number":128,"context_line":"# amp_network \u003d"},{"line_number":129,"context_line":"# amp_secgroup_list \u003d"},{"line_number":130,"context_line":"# sec_grp_enabled \u003d True"},{"line_number":131,"context_line":"# client_ca \u003d /etc/octavia/certs/ca_01.pem"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"# Amphora driver options are amphora_noop_driver,"}],"source_content_type":"text/plain","patch_set":63,"id":"7a740942_b185135a","line":130,"in_reply_to":"7a740942_5de32bd9","updated":"2015-12-10 22:25:37.000000000","message":"Done, I mean any driver can utilize the options here, but I agree that this is getting a bit messy. I\u0027m wondering if we should start splitting out configs for individual drivers. not sure how that would look, but maybe something to discuss.","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"cdff7358e4c81ea5b6de1163d3fb4f805bb0dbb2","unresolved":false,"context_lines":[{"line_number":127,"context_line":"# amp_ssh_allowed_access \u003d True"},{"line_number":128,"context_line":"# amp_network \u003d"},{"line_number":129,"context_line":"# amp_secgroup_list \u003d"},{"line_number":130,"context_line":"# sec_grp_enabled \u003d True"},{"line_number":131,"context_line":"# client_ca \u003d /etc/octavia/certs/ca_01.pem"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"# Amphora driver options are amphora_noop_driver,"}],"source_content_type":"text/plain","patch_set":63,"id":"7a740942_ecf975c9","line":130,"in_reply_to":"7a740942_b185135a","updated":"2015-12-11 05:53:34.000000000","message":"sounds familiar...","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"}],"octavia/common/keystone.py":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"8eae700a350f478789cbfe84f03d79bae1a49b32","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        try:"},{"line_number":62,"context_line":"            kc \u003d client.Password(**kwargs)"},{"line_number":63,"context_line":"            _SESSION \u003d session.Session(auth\u003dkc, verify\u003dFalse)"},{"line_number":64,"context_line":"        except Exception:"},{"line_number":65,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":66,"context_line":"                LOG.exception(_LE(\"Error creating Keystone session.\"))"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a41bdd9_f7c804aa","line":63,"updated":"2015-07-16 04:05:29.000000000","message":"shouldn\u0027t that be it\u0027s own patch? Not sure how that relates to containers...","commit_id":"dcac3b3d2ba7d6b97184bb6f12e051483adc7ab6"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"7eed164831606c77420e0ac8acbd338c141b6a96","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        try:"},{"line_number":62,"context_line":"            kc \u003d client.Password(**kwargs)"},{"line_number":63,"context_line":"            _SESSION \u003d session.Session(auth\u003dkc, verify\u003dFalse)"},{"line_number":64,"context_line":"        except Exception:"},{"line_number":65,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":66,"context_line":"                LOG.exception(_LE(\"Error creating Keystone session.\"))"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a41bdd9_ddccff8a","line":63,"in_reply_to":"9a41bdd9_f7c804aa","updated":"2015-07-16 16:04:16.000000000","message":"It relates to containers only because we (RS) needs it. Though, this will probably never make it in and should probably be a patch that we use separately.","commit_id":"dcac3b3d2ba7d6b97184bb6f12e051483adc7ab6"}],"octavia/network/drivers/neutron/base.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"aa2e2440d181612e045e2248313972641b3c6d37","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            return utils.convert_network_dict_to_model(network)"},{"line_number":126,"context_line":"        except (neutron_client_exceptions.NotFound,"},{"line_number":127,"context_line":"                neutron_client_exceptions.NeutronClientException) as exc:"},{"line_number":128,"context_line":"            if exc.status_code !\u003d 404:"},{"line_number":129,"context_line":"                raise exc"},{"line_number":130,"context_line":"            message \u003d _LE(\u0027Network not found \u0027"},{"line_number":131,"context_line":"                          \u0027(network id: {network_id}.\u0027).format("}],"source_content_type":"text/x-python","patch_set":63,"id":"7a740942_1d0e038c","line":128,"updated":"2015-12-08 22:13:56.000000000","message":"Can a NeutronClientException have a status_code of 404?\nIf not, I think it would be better to just do a separate except clause for it, since that\u0027s effectively what you\u0027re setting up.","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"33173555dc19f67f4f9627a47a64cdf166b3b27d","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            return utils.convert_network_dict_to_model(network)"},{"line_number":126,"context_line":"        except (neutron_client_exceptions.NotFound,"},{"line_number":127,"context_line":"                neutron_client_exceptions.NeutronClientException) as exc:"},{"line_number":128,"context_line":"            if exc.status_code !\u003d 404:"},{"line_number":129,"context_line":"                raise exc"},{"line_number":130,"context_line":"            message \u003d _LE(\u0027Network not found \u0027"},{"line_number":131,"context_line":"                          \u0027(network id: {network_id}.\u0027).format("}],"source_content_type":"text/x-python","patch_set":63,"id":"7a740942_11142742","line":128,"in_reply_to":"7a740942_1d0e038c","updated":"2015-12-10 22:25:37.000000000","message":"Need to verify these","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"cdff7358e4c81ea5b6de1163d3fb4f805bb0dbb2","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            return utils.convert_network_dict_to_model(network)"},{"line_number":126,"context_line":"        except (neutron_client_exceptions.NotFound,"},{"line_number":127,"context_line":"                neutron_client_exceptions.NeutronClientException) as exc:"},{"line_number":128,"context_line":"            if exc.status_code !\u003d 404:"},{"line_number":129,"context_line":"                raise exc"},{"line_number":130,"context_line":"            message \u003d _LE(\u0027Network not found \u0027"},{"line_number":131,"context_line":"                          \u0027(network id: {network_id}.\u0027).format("}],"source_content_type":"text/x-python","patch_set":63,"id":"7a740942_2c58ddf9","line":128,"in_reply_to":"7a740942_1d0e038c","updated":"2015-12-11 05:53:34.000000000","message":"yes it can, was surprising to me too bc the client changed in some form i think to where some not founds were retruning NotFound and others were retruning NeutronClientException with status_code of 404, which is why this looks so dumb.\n\nShould verify this though and make a comment, if possible what calls actually cause this weird stuff to happen.","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"aa2e2440d181612e045e2248313972641b3c6d37","unresolved":false,"context_lines":[{"line_number":145,"context_line":"            return utils.convert_subnet_dict_to_model(subnet)"},{"line_number":146,"context_line":"        except (neutron_client_exceptions.NotFound,"},{"line_number":147,"context_line":"                neutron_client_exceptions.NeutronClientException) as exc:"},{"line_number":148,"context_line":"            if exc.status_code !\u003d 404:"},{"line_number":149,"context_line":"                raise exc"},{"line_number":150,"context_line":"            message \u003d _LE(\u0027Subnet not found \u0027"},{"line_number":151,"context_line":"                          \u0027(subnet id: {subnet_id}.\u0027).format("}],"source_content_type":"text/x-python","patch_set":63,"id":"7a740942_dd24fb0d","line":148,"updated":"2015-12-08 22:13:56.000000000","message":"Same question here.","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"aa2e2440d181612e045e2248313972641b3c6d37","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            return utils.convert_port_dict_to_model(port)"},{"line_number":166,"context_line":"        except (neutron_client_exceptions.NotFound,"},{"line_number":167,"context_line":"                neutron_client_exceptions.NeutronClientException) as exc:"},{"line_number":168,"context_line":"            if exc.status_code !\u003d 404:"},{"line_number":169,"context_line":"                raise exc"},{"line_number":170,"context_line":"            message \u003d _LE(\u0027Port not found \u0027"},{"line_number":171,"context_line":"                          \u0027(port id: {port_id}.\u0027).format("}],"source_content_type":"text/x-python","patch_set":63,"id":"7a740942_7d1f07b7","line":168,"updated":"2015-12-08 22:13:56.000000000","message":"And here.","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"}],"octavia/network/drivers/neutron/containers.py":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"15196d1c81c7bc15fe6b274798d05d219b5e25a2","unresolved":false,"context_lines":[{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":"NEUTRON_VERSION \u003d \u00272.0\u0027"},{"line_number":30,"context_line":"NOVA_VERSION \u003d \u00272\u0027"},{"line_number":31,"context_line":"AAP_EXT_ALIAS \u003d \u0027allowed-address-pairs\u0027"},{"line_number":32,"context_line":"SEC_GRP_EXT_ALIAS \u003d \u0027security-group\u0027"},{"line_number":33,"context_line":"VIP_SECURITY_GRP_PREFIX \u003d \u0027lb-\u0027"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_7f81c88e","line":31,"updated":"2015-07-07 02:01:21.000000000","message":"not needed","commit_id":"1017b9682c803ca54628d9bc6ffb545246516fd0"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"15196d1c81c7bc15fe6b274798d05d219b5e25a2","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            raise base.NetworkException("},{"line_number":52,"context_line":"                \u0027The {alias} extension is  enabled in neutron.  This \u0027"},{"line_number":53,"context_line":"                \u0027driver cannot be used with the {alias} extension \u0027"},{"line_number":54,"context_line":"                \u0027enabled.\u0027.format(alias\u003dAAP_EXT_ALIAS))"},{"line_number":55,"context_line":"        if SEC_GRP_EXT_ALIAS not in aliases:"},{"line_number":56,"context_line":"            LOG.info(_LI(\u0027Neutron security groups are disabled.  This driver\u0027"},{"line_number":57,"context_line":"                         \u0027will not manage any security groups.\u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_bf7750d3","line":54,"updated":"2015-07-07 02:01:21.000000000","message":"don\u0027t need this anymore as this isn\u0027t using allowed address pairs.","commit_id":"1017b9682c803ca54628d9bc6ffb545246516fd0"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"15196d1c81c7bc15fe6b274798d05d219b5e25a2","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                net_id\u003dload_balancer.vip.network_id)"},{"line_number":200,"context_line":"            LOG.exception(message)"},{"line_number":201,"context_line":"            raise base.AllocateVIPException(message)"},{"line_number":202,"context_line":"        return self._interface_to_vip(port, load_balancer)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def unplug_vip(self, load_balancer, vip):"},{"line_number":205,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_3fbca06b","line":202,"updated":"2015-07-07 02:01:21.000000000","message":"this shoudl be an issue as this method expect an interface, not a port.","commit_id":"1017b9682c803ca54628d9bc6ffb545246516fd0"},{"author":{"_account_id":10477,"name":"min wang","email":"swiftwangster@gmail.com","username":"minwang"},"change_message_id":"a0eeeb70bdd9c17ec8150ce26a4753a0b3ca7a60","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            msg \u003d (\"No ports were found for compute instance\""},{"line_number":47,"context_line":"                   \"{compute_id}\".format(compute_id\u003dcompute_id))"},{"line_number":48,"context_line":"        else:"},{"line_number":49,"context_line":"            msg \u003d (\"No port was found for compute instance {compute_id} \""},{"line_number":50,"context_line":"                   \"on network {network_id}\".format(compute_id\u003dcompute_id,"},{"line_number":51,"context_line":"                                                    network_id\u003dnetwork_id))"},{"line_number":52,"context_line":"        raise base.PortNotFound(msg)"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_ba80f8f8","line":49,"updated":"2015-08-07 22:09:36.000000000","message":"the if condition means ports does not exist then the else condition should mean the ports exist, then why do we still complain no port was found?","commit_id":"085b334e83240187d06d7b93b5d584ddcfc33efa"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"a2c9c707266f24317900a7cfda7ef8405284c73a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            msg \u003d (\"No ports were found for compute instance\""},{"line_number":47,"context_line":"                   \"{compute_id}\".format(compute_id\u003dcompute_id))"},{"line_number":48,"context_line":"        else:"},{"line_number":49,"context_line":"            msg \u003d (\"No port was found for compute instance {compute_id} \""},{"line_number":50,"context_line":"                   \"on network {network_id}\".format(compute_id\u003dcompute_id,"},{"line_number":51,"context_line":"                                                    network_id\u003dnetwork_id))"},{"line_number":52,"context_line":"        raise base.PortNotFound(msg)"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa1b9901_8877ea01","line":49,"in_reply_to":"1a4dcd0f_ba80f8f8","updated":"2015-08-17 20:22:57.000000000","message":"The logic of this method is slightly tricky, but it is attempting to pull data into \u0027ports\u0027 and do a few checks. If there are ports It will loop through and return the matched/converted port based on checks within the loop. If ports are not returned we error out stating nothing matched for that compute id. If ports are returned but they do not match the check within the loop we error out with a message stating those details.","commit_id":"085b334e83240187d06d7b93b5d584ddcfc33efa"},{"author":{"_account_id":10477,"name":"min wang","email":"swiftwangster@gmail.com","username":"minwang"},"change_message_id":"a0eeeb70bdd9c17ec8150ce26a4753a0b3ca7a60","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    def unplug_network(self, compute_id, network_id, ip_address\u003dNone):"},{"line_number":190,"context_line":"        pass"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def update_vip(self, load_balancer):"},{"line_number":193,"context_line":"        if self.sec_grp_enabled:"},{"line_number":194,"context_line":"            sec_grp \u003d self._get_lb_security_group(load_balancer.id)"},{"line_number":195,"context_line":"            self._update_security_group_rules(load_balancer, sec_grp.get(\u0027id\u0027))"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_ddae1e98","line":192,"updated":"2015-08-07 22:09:36.000000000","message":"i see what it is doing inside of the method is to update security_group, so why the name of this method is update_vip","commit_id":"085b334e83240187d06d7b93b5d584ddcfc33efa"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"a2c9c707266f24317900a7cfda7ef8405284c73a","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    def unplug_network(self, compute_id, network_id, ip_address\u003dNone):"},{"line_number":190,"context_line":"        pass"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def update_vip(self, load_balancer):"},{"line_number":193,"context_line":"        if self.sec_grp_enabled:"},{"line_number":194,"context_line":"            sec_grp \u003d self._get_lb_security_group(load_balancer.id)"},{"line_number":195,"context_line":"            self._update_security_group_rules(load_balancer, sec_grp.get(\u0027id\u0027))"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa1b9901_08d19acd","line":192,"in_reply_to":"1a4dcd0f_ddae1e98","updated":"2015-08-17 20:22:57.000000000","message":"Because it\u0027s an interface. Other consumers of said interface will handle it differently. Some may check for sec groups some may not. In this case it is the only thing that is needed.","commit_id":"085b334e83240187d06d7b93b5d584ddcfc33efa"},{"author":{"_account_id":8157,"name":"Bertrand LALLAU","email":"bertrand.lallau@gmail.com","username":"blallau"},"change_message_id":"71bbf9bf1b49aa8200fb55718f894f0577ddfd9e","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        admin_tenant_id \u003d keystone.get_session().get_project_id()"},{"line_number":109,"context_line":"        if port.tenant_id !\u003d admin_tenant_id:"},{"line_number":110,"context_line":"            LOG.info(_LI(\"Port {0} will not be deleted by Octavia as it was \""},{"line_number":111,"context_line":"                         \"not created by Octavia.\").format(vip.port_id))"},{"line_number":112,"context_line":"            return"},{"line_number":113,"context_line":"        try:"},{"line_number":114,"context_line":"            self.neutron_client.delete_port(vip.port_id)"}],"source_content_type":"text/x-python","patch_set":38,"id":"9a1a9d01_2656ff06","line":111,"updated":"2015-10-02 09:54:31.000000000","message":"Logging enhancement","commit_id":"efa0eb0acd699d06c7c7959eba959f6c42b01e9c"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"372c44a49f14f34275bb6ea4fc51dea9ec2dfa87","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        admin_tenant_id \u003d keystone.get_session().get_project_id()"},{"line_number":109,"context_line":"        if port.tenant_id !\u003d admin_tenant_id:"},{"line_number":110,"context_line":"            LOG.info(_LI(\"Port {0} will not be deleted by Octavia as it was \""},{"line_number":111,"context_line":"                         \"not created by Octavia.\").format(vip.port_id))"},{"line_number":112,"context_line":"            return"},{"line_number":113,"context_line":"        try:"},{"line_number":114,"context_line":"            self.neutron_client.delete_port(vip.port_id)"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a2fa921_e3b9c32f","line":111,"in_reply_to":"9a1a9d01_2656ff06","updated":"2015-10-06 17:17:05.000000000","message":"Done","commit_id":"efa0eb0acd699d06c7c7959eba959f6c42b01e9c"},{"author":{"_account_id":8157,"name":"Bertrand LALLAU","email":"bertrand.lallau@gmail.com","username":"blallau"},"change_message_id":"71bbf9bf1b49aa8200fb55718f894f0577ddfd9e","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        if load_balancer.vip.port_id:"},{"line_number":153,"context_line":"            LOG.info(_LI(\u0027Port {port_id} already exists. Gathering \u0027"},{"line_number":154,"context_line":"                         \u0027information.\u0027).format("},{"line_number":155,"context_line":"                port_id\u003dload_balancer.vip.port_id))"},{"line_number":156,"context_line":"            port \u003d self.get_port(load_balancer.vip.port_id)"},{"line_number":157,"context_line":"            return self._port_to_vip(port, load_balancer)"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"9a1a9d01_a661afd5","line":155,"updated":"2015-10-02 09:54:31.000000000","message":"Logging enhancement","commit_id":"efa0eb0acd699d06c7c7959eba959f6c42b01e9c"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"372c44a49f14f34275bb6ea4fc51dea9ec2dfa87","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        if load_balancer.vip.port_id:"},{"line_number":153,"context_line":"            LOG.info(_LI(\u0027Port {port_id} already exists. Gathering \u0027"},{"line_number":154,"context_line":"                         \u0027information.\u0027).format("},{"line_number":155,"context_line":"                port_id\u003dload_balancer.vip.port_id))"},{"line_number":156,"context_line":"            port \u003d self.get_port(load_balancer.vip.port_id)"},{"line_number":157,"context_line":"            return self._port_to_vip(port, load_balancer)"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"7a2fa921_43ad17e8","line":155,"in_reply_to":"9a1a9d01_a661afd5","updated":"2015-10-06 17:17:05.000000000","message":"Done, please include more information regarding the details of your comments. I had to dig and ask others what this meant.","commit_id":"efa0eb0acd699d06c7c7959eba959f6c42b01e9c"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"aa2e2440d181612e045e2248313972641b3c6d37","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    def _get_lb_security_group(self, load_balancer_id):"},{"line_number":57,"context_line":"        sec_grp_name \u003d VIP_SECURITY_GRP_PREFIX + load_balancer_id"},{"line_number":58,"context_line":"        sec_grps \u003d self.neutron_client.list_security_groups(name\u003dsec_grp_name)"},{"line_number":59,"context_line":"        if len(sec_grps.get(\u0027security_groups\u0027)):"},{"line_number":60,"context_line":"            return sec_grps.get(\u0027security_groups\u0027)[0]"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def _update_security_group_rules(self, load_balancer, sec_grp_id):"}],"source_content_type":"text/x-python","patch_set":63,"id":"7a740942_c075ee63","line":59,"updated":"2015-12-08 22:13:56.000000000","message":"len() is redundant technically, since get() should either return None, or an iterable, and the truth value of an iterable is whether or not it\u0027s empty.","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"33173555dc19f67f4f9627a47a64cdf166b3b27d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    def _get_lb_security_group(self, load_balancer_id):"},{"line_number":57,"context_line":"        sec_grp_name \u003d VIP_SECURITY_GRP_PREFIX + load_balancer_id"},{"line_number":58,"context_line":"        sec_grps \u003d self.neutron_client.list_security_groups(name\u003dsec_grp_name)"},{"line_number":59,"context_line":"        if len(sec_grps.get(\u0027security_groups\u0027)):"},{"line_number":60,"context_line":"            return sec_grps.get(\u0027security_groups\u0027)[0]"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def _update_security_group_rules(self, load_balancer, sec_grp_id):"}],"source_content_type":"text/x-python","patch_set":63,"id":"7a740942_7f3bf7eb","line":59,"in_reply_to":"7a740942_c075ee63","updated":"2015-12-10 22:25:37.000000000","message":"Done","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"aa2e2440d181612e045e2248313972641b3c6d37","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        add_ports \u003d set(updated_ports) - set(old_ports)"},{"line_number":75,"context_line":"        del_ports \u003d set(old_ports) - set(updated_ports)"},{"line_number":76,"context_line":"        for rule in rules.get(\u0027security_group_rules\u0027, []):"},{"line_number":77,"context_line":"            if rule.get(\u0027port_range_max\u0027) in del_ports:"},{"line_number":78,"context_line":"                self.neutron_client.delete_security_group_rule(rule.get(\u0027id\u0027))"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        for port in add_ports:"}],"source_content_type":"text/x-python","patch_set":63,"id":"7a740942_c3d17824","line":77,"updated":"2015-12-08 22:13:56.000000000","message":"Is there actually a way this could be False, since del_ports is built directly from this same data, right?","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"33173555dc19f67f4f9627a47a64cdf166b3b27d","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        add_ports \u003d set(updated_ports) - set(old_ports)"},{"line_number":75,"context_line":"        del_ports \u003d set(old_ports) - set(updated_ports)"},{"line_number":76,"context_line":"        for rule in rules.get(\u0027security_group_rules\u0027, []):"},{"line_number":77,"context_line":"            if rule.get(\u0027port_range_max\u0027) in del_ports:"},{"line_number":78,"context_line":"                self.neutron_client.delete_security_group_rule(rule.get(\u0027id\u0027))"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        for port in add_ports:"}],"source_content_type":"text/x-python","patch_set":63,"id":"7a740942_ff2fe79e","line":77,"in_reply_to":"7a740942_c3d17824","updated":"2015-12-10 22:25:37.000000000","message":"Need to verify this, i\u0027m utilizing a lot of the work blogan did.","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"cdff7358e4c81ea5b6de1163d3fb4f805bb0dbb2","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        add_ports \u003d set(updated_ports) - set(old_ports)"},{"line_number":75,"context_line":"        del_ports \u003d set(old_ports) - set(updated_ports)"},{"line_number":76,"context_line":"        for rule in rules.get(\u0027security_group_rules\u0027, []):"},{"line_number":77,"context_line":"            if rule.get(\u0027port_range_max\u0027) in del_ports:"},{"line_number":78,"context_line":"                self.neutron_client.delete_security_group_rule(rule.get(\u0027id\u0027))"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        for port in add_ports:"}],"source_content_type":"text/x-python","patch_set":63,"id":"7a740942_e720ae4b","line":77,"in_reply_to":"7a740942_ff2fe79e","updated":"2015-12-11 05:53:34.000000000","message":"yes because del ports will be a subset of rule ports.","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"aa2e2440d181612e045e2248313972641b3c6d37","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                                            \u0027without a port_id or \u0027"},{"line_number":151,"context_line":"                                            \u0027a subnet_id.\u0027)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        amp \u003d load_balancer.amphorae[0]"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        if load_balancer.vip.port_id:"},{"line_number":156,"context_line":"            LOG.info(_LI(\u0027Port %s already exists. Gathering \u0027"}],"source_content_type":"text/x-python","patch_set":63,"id":"7a740942_83e4d0ab","line":153,"updated":"2015-12-08 22:13:56.000000000","message":"If you\u0027re making other changes, would you mind moving this down closer to where it\u0027s actually used?","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"33173555dc19f67f4f9627a47a64cdf166b3b27d","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                                            \u0027without a port_id or \u0027"},{"line_number":151,"context_line":"                                            \u0027a subnet_id.\u0027)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        amp \u003d load_balancer.amphorae[0]"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        if load_balancer.vip.port_id:"},{"line_number":156,"context_line":"            LOG.info(_LI(\u0027Port %s already exists. Gathering \u0027"}],"source_content_type":"text/x-python","patch_set":63,"id":"7a740942_bf187f85","line":153,"in_reply_to":"7a740942_83e4d0ab","updated":"2015-12-10 22:25:37.000000000","message":"Done","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"aa2e2440d181612e045e2248313972641b3c6d37","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            LOG.exception(message)"},{"line_number":172,"context_line":"            raise base.NetworkNotFound(message)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        return vip"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def unplug_vip(self, load_balancer, vip):"},{"line_number":177,"context_line":"        pu \u003d {\u0027port\u0027: {\u0027device_id\u0027: \"\"}}"}],"source_content_type":"text/x-python","patch_set":63,"id":"7a740942_a3a46c4a","line":174,"updated":"2015-12-08 22:13:56.000000000","message":"I prefer to see this live inside the `try` above, because if it doesn\u0027t make it to the end of the `try`, this won\u0027t be set or reached anyway -- but that\u0027s probably just personal preference and I wouldn\u0027t -1 for it.","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"33173555dc19f67f4f9627a47a64cdf166b3b27d","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            LOG.exception(message)"},{"line_number":172,"context_line":"            raise base.NetworkNotFound(message)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        return vip"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def unplug_vip(self, load_balancer, vip):"},{"line_number":177,"context_line":"        pu \u003d {\u0027port\u0027: {\u0027device_id\u0027: \"\"}}"}],"source_content_type":"text/x-python","patch_set":63,"id":"7a740942_91ffb700","line":174,"in_reply_to":"7a740942_a3a46c4a","updated":"2015-12-10 22:25:37.000000000","message":"Done","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"aa2e2440d181612e045e2248313972641b3c6d37","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    def update_vip(self, load_balancer):"},{"line_number":198,"context_line":"        if self.sec_grp_enabled:"},{"line_number":199,"context_line":"            sec_grp \u003d self._get_lb_security_group(load_balancer.id)"},{"line_number":200,"context_line":"            self._update_security_group_rules(load_balancer, sec_grp.get(\u0027id\u0027))"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def failover_preparation(self, amphora):"},{"line_number":203,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":63,"id":"7a740942_6ea18bf7","line":200,"updated":"2015-12-08 22:13:56.000000000","message":"Nothing needs to happen here at all if we don\u0027t use security groups?","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"33173555dc19f67f4f9627a47a64cdf166b3b27d","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    def update_vip(self, load_balancer):"},{"line_number":198,"context_line":"        if self.sec_grp_enabled:"},{"line_number":199,"context_line":"            sec_grp \u003d self._get_lb_security_group(load_balancer.id)"},{"line_number":200,"context_line":"            self._update_security_group_rules(load_balancer, sec_grp.get(\u0027id\u0027))"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def failover_preparation(self, amphora):"},{"line_number":203,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":63,"id":"7a740942_df154b9b","line":200,"in_reply_to":"7a740942_6ea18bf7","updated":"2015-12-10 22:25:37.000000000","message":"Not at the moment for this point in the workflow. Same as allowed address pairs with a check.","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"cdff7358e4c81ea5b6de1163d3fb4f805bb0dbb2","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    def update_vip(self, load_balancer):"},{"line_number":198,"context_line":"        if self.sec_grp_enabled:"},{"line_number":199,"context_line":"            sec_grp \u003d self._get_lb_security_group(load_balancer.id)"},{"line_number":200,"context_line":"            self._update_security_group_rules(load_balancer, sec_grp.get(\u0027id\u0027))"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def failover_preparation(self, amphora):"},{"line_number":203,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":63,"id":"7a740942_47e0a2fa","line":200,"in_reply_to":"7a740942_df154b9b","updated":"2015-12-11 05:53:34.000000000","message":"no, and the confusion is probably from the poor naming which is my fault.  this method was specifically added because of security groups needing to be updated for when listeners are removed and added.","commit_id":"7ad122fa0a4e4556ff85313b7ce3c379f8b1c174"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"a5bd423212f9f4a4e33e1e27442a3595ae56b5bd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Copyright 2014 Rackspace"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":67,"id":"9a68dd71_f1234556","line":1,"range":{"start_line":1,"start_character":20,"end_line":1,"end_character":29},"updated":"2016-01-24 08:36:29.000000000","message":"Have y\u0027all really been working on this since 2014?","commit_id":"83d2564bd91b30926ffaf8c047cea69dd56e78b8"}],"setup.cfg":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"8eae700a350f478789cbfe84f03d79bae1a49b32","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    barbican_cert_generator \u003d octavia.certificates.generator.barbican:BarbicanCertGenerator"},{"line_number":62,"context_line":"octavia.cert_manager \u003d"},{"line_number":63,"context_line":"    local_cert_manager \u003d octavia.certificates.manager.local:LocalCertManager"},{"line_number":64,"context_line":"    barbican_cert_manager \u003d octavia.certificates.manager.barbican:BarbicanCertManager"},{"line_number":65,"context_line":"octavia.controller.workers \u003d"},{"line_number":66,"context_line":"    controller_worker \u003d octavia.controller.worker.controller_worker:ControllerWorker"},{"line_number":67,"context_line":"    containers_controller_worker \u003d octavia.controller.worker.containers_controller_worker:ControllerWorker"}],"source_content_type":"text/x-ttcn-cfg","patch_set":12,"id":"9a41bdd9_570bf0d5","line":64,"updated":"2015-07-16 04:05:29.000000000","message":"saw that in the other patch...","commit_id":"dcac3b3d2ba7d6b97184bb6f12e051483adc7ab6"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"7eed164831606c77420e0ac8acbd338c141b6a96","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    barbican_cert_generator \u003d octavia.certificates.generator.barbican:BarbicanCertGenerator"},{"line_number":62,"context_line":"octavia.cert_manager \u003d"},{"line_number":63,"context_line":"    local_cert_manager \u003d octavia.certificates.manager.local:LocalCertManager"},{"line_number":64,"context_line":"    barbican_cert_manager \u003d octavia.certificates.manager.barbican:BarbicanCertManager"},{"line_number":65,"context_line":"octavia.controller.workers \u003d"},{"line_number":66,"context_line":"    controller_worker \u003d octavia.controller.worker.controller_worker:ControllerWorker"},{"line_number":67,"context_line":"    containers_controller_worker \u003d octavia.controller.worker.containers_controller_worker:ControllerWorker"}],"source_content_type":"text/x-ttcn-cfg","patch_set":12,"id":"9a41bdd9_5da78fbc","line":64,"in_reply_to":"9a41bdd9_570bf0d5","updated":"2015-07-16 16:04:16.000000000","message":"Yea, good catch though. We did some migrating of code and things got a bit messed up.","commit_id":"dcac3b3d2ba7d6b97184bb6f12e051483adc7ab6"}]}
