)]}'
{"octavia/amphorae/backends/health_daemon/health_sender.py":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"23bc656418b6127af7d0671fb058735442ddf8a6","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            LOG.error(\u0027No controller addresses found. Unable to send broadcast\u0027"},{"line_number":85,"context_line":"                      \u0027message.\u0027)"},{"line_number":86,"context_line":"            return"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        threads \u003d []"},{"line_number":89,"context_line":"        for addrinfo in self.dests:"},{"line_number":90,"context_line":"            t \u003d threading.Thread(target\u003dself._send_msg,"}],"source_content_type":"text/x-python","patch_set":40,"id":"9f436f4f_eca12b48","line":87,"updated":"2017-08-22 04:08:40.000000000","message":"Can save a few lines if you just do the following:\n\n   from concurrent import futures\n\n   with futures.ThreadPoolExecutor(max_workers\u003dlen(self.dests)) as ex:\n      for addrinfo in self.dests:\n         ex.submit(self._send_msg, addrinfo, obj)\n\nThe executor handles making the threads, starting them up, and joining them (on context manager exit) so that you don\u0027t have to.","commit_id":"25fa4d01174c06380f9e1f3882b215b67339742b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"b0600bffe61d19ea803a07549b76d001d308b5bf","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            LOG.error(\u0027No controller addresses found. Unable to send broadcast\u0027"},{"line_number":85,"context_line":"                      \u0027message.\u0027)"},{"line_number":86,"context_line":"            return"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        threads \u003d []"},{"line_number":89,"context_line":"        for addrinfo in self.dests:"},{"line_number":90,"context_line":"            t \u003d threading.Thread(target\u003dself._send_msg,"}],"source_content_type":"text/x-python","patch_set":40,"id":"7f287b81_16cdee5c","line":87,"in_reply_to":"9f436f4f_eca12b48","updated":"2017-08-22 21:31:07.000000000","message":"Ah yeah I should switch to that probably. We use it elsewhere. Actually, we use it here -- THIS is executed inside one of those executors... Hopefully nesting them is not problematic. :P","commit_id":"25fa4d01174c06380f9e1f3882b215b67339742b"}],"octavia/amphorae/drivers/health/heartbeat_udp.py":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"2abd7a1f9412a7b0326ccdd250138440de616d79","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        try:"},{"line_number":174,"context_line":"            obj, srcaddr \u003d self.dorecv()"},{"line_number":175,"context_line":"            if obj.get(\u0027type\u0027) \u003d\u003d \u0027notify_master\u0027:"},{"line_number":176,"context_line":"                self.executor.submit("},{"line_number":177,"context_line":"                    flip_utils.trigger_vip_reassociation, obj, srcaddr)"},{"line_number":178,"context_line":"            else:"},{"line_number":179,"context_line":"                if self.health_update:"}],"source_content_type":"text/x-python","patch_set":40,"id":"9f436f4f_574d6070","line":176,"updated":"2017-08-22 04:32:20.000000000","message":"Not directly related to your patch but these submit calls all return future objects, and I\u0027m not quite sure where those future objects are being waited on (are they)? Should they be?\n\nI got reminded of this from https://news.ycombinator.com/item?id\u003d15068090 (since javascript now has the same types of problems, ha); full article @ https://news.ycombinator.com/item?id\u003d15062364","commit_id":"25fa4d01174c06380f9e1f3882b215b67339742b"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"7a1e993977282beaa11ea7058fe031b80d48c027","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        try:"},{"line_number":174,"context_line":"            obj, srcaddr \u003d self.dorecv()"},{"line_number":175,"context_line":"            if obj.get(\u0027type\u0027) \u003d\u003d \u0027notify_master\u0027:"},{"line_number":176,"context_line":"                self.executor.submit("},{"line_number":177,"context_line":"                    flip_utils.trigger_vip_reassociation, obj, srcaddr)"},{"line_number":178,"context_line":"            else:"},{"line_number":179,"context_line":"                if self.health_update:"}],"source_content_type":"text/x-python","patch_set":40,"id":"7f287b81_798782d9","line":176,"in_reply_to":"7f287b81_7912e2b3","updated":"2017-08-23 01:03:21.000000000","message":"And don\u0027t use \u0027LOG.warn(\"Something broke\")\u0027 (just an example, haha).","commit_id":"25fa4d01174c06380f9e1f3882b215b67339742b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"70298e483eca88ca91879613ce1c1d1679548391","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        try:"},{"line_number":174,"context_line":"            obj, srcaddr \u003d self.dorecv()"},{"line_number":175,"context_line":"            if obj.get(\u0027type\u0027) \u003d\u003d \u0027notify_master\u0027:"},{"line_number":176,"context_line":"                self.executor.submit("},{"line_number":177,"context_line":"                    flip_utils.trigger_vip_reassociation, obj, srcaddr)"},{"line_number":178,"context_line":"            else:"},{"line_number":179,"context_line":"                if self.health_update:"}],"source_content_type":"text/x-python","patch_set":40,"id":"7f287b81_fe92f89e","line":176,"in_reply_to":"7f287b81_798782d9","updated":"2017-08-24 18:52:18.000000000","message":"OK, I\u0027ll look at doing that for all of these, though this is on the Amphora so 99% chance they would get lost / never looked at anyway","commit_id":"25fa4d01174c06380f9e1f3882b215b67339742b"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"ae79b66dc127d3ca22e2689e641c4d5dd710ac55","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        try:"},{"line_number":174,"context_line":"            obj, srcaddr \u003d self.dorecv()"},{"line_number":175,"context_line":"            if obj.get(\u0027type\u0027) \u003d\u003d \u0027notify_master\u0027:"},{"line_number":176,"context_line":"                self.executor.submit("},{"line_number":177,"context_line":"                    flip_utils.trigger_vip_reassociation, obj, srcaddr)"},{"line_number":178,"context_line":"            else:"},{"line_number":179,"context_line":"                if self.health_update:"}],"source_content_type":"text/x-python","patch_set":40,"id":"7f287b81_7912e2b3","line":176,"in_reply_to":"7f287b81_960afe87","updated":"2017-08-23 01:02:29.000000000","message":"Ok, just an idea but the following would prob be a nice thing, just so that exceptions that may have happened don\u0027t get lost into the ether as well...\n\n  fut \u003d self.executor.submit(flip_utils.trigger_vip_reassociation, obj, srcaddr)\n  fut.add_done_callback(some_utils.log_on_failure)\n\n\n   in some_utils.py\n\n   LOG \u003d logging.getLogger()\n\n   def log_on_failure(fut):\n      try:\n        fut.result()\n      except Exception:\n         LOG.warn(\"Something broke\")\n\nThat way you know that these won\u0027t (and shouldn\u0027t) just slightly drop exceptions on the floor.","commit_id":"25fa4d01174c06380f9e1f3882b215b67339742b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"b0600bffe61d19ea803a07549b76d001d308b5bf","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        try:"},{"line_number":174,"context_line":"            obj, srcaddr \u003d self.dorecv()"},{"line_number":175,"context_line":"            if obj.get(\u0027type\u0027) \u003d\u003d \u0027notify_master\u0027:"},{"line_number":176,"context_line":"                self.executor.submit("},{"line_number":177,"context_line":"                    flip_utils.trigger_vip_reassociation, obj, srcaddr)"},{"line_number":178,"context_line":"            else:"},{"line_number":179,"context_line":"                if self.health_update:"}],"source_content_type":"text/x-python","patch_set":40,"id":"7f287b81_960afe87","line":176,"in_reply_to":"9f436f4f_574d6070","updated":"2017-08-22 21:31:07.000000000","message":"Yeah we really don\u0027t care -- what\u0027s happening is that it\u0027s shooting off a UDP packet, so ... what would we even get back? \"Yes, I fired this data into the ether\" is not so useful.","commit_id":"25fa4d01174c06380f9e1f3882b215b67339742b"}],"octavia/controller/worker/tasks/compute_tasks.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"5af7e3f06662218923918db910695635e58a818d","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def execute(self, loadbalancer):"},{"line_number":156,"context_line":"        for amp in six.moves.filter("},{"line_number":157,"context_line":"            lambda amp: amp.status \u003d\u003d constants.DELETED,"},{"line_number":158,"context_line":"                loadbalancer.amphorae):"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":121,"id":"bf659307_85070c1d","line":157,"updated":"2018-04-10 01:02:36.000000000","message":"Should pop out this change","commit_id":"43a118e7d47523eaa0c70f84ba4745b26f2e33f1"}],"octavia/controller/worker/tasks/network_tasks.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"8ac2d0f8c4135041a2d0d2019638fb0e797b8591","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        # Figure out what networks we want"},{"line_number":50,"context_line":"        # seed with lb network(s)"},{"line_number":51,"context_line":"        vrrp_port \u003d self.network_driver.get_port(amphora.vrrp_port_id)"},{"line_number":52,"context_line":"        desired_network_ids \u003d {vrrp_port.network_id}.union("},{"line_number":53,"context_line":"            CONF.controller_worker.amp_boot_network_list)"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_3d10c74e","line":51,"updated":"2017-02-17 22:01:05.000000000","message":"This should honestly be a noop change, since the vrrp_port *is* on the vip network, so we can get the network_id from here just as well.","commit_id":"8aafc4bbbc909953afc56dab491bcca1f93d9069"}],"octavia/db/repositories.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"5af7e3f06662218923918db910695635e58a818d","unresolved":false,"context_lines":[{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    def test_and_set_provisioning_status(self, session, id, status,"},{"line_number":653,"context_line":"                                         raise_exception\u003dFalse,"},{"line_number":654,"context_line":"                                         failover\u003dFalse):"},{"line_number":655,"context_line":"        \"\"\"Tests and sets a load balancer and provisioning status."},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"        Puts a lock on the load balancer table to check the status of a"}],"source_content_type":"text/x-python","patch_set":121,"id":"bf659307_653438fc","line":654,"updated":"2018-04-10 01:02:36.000000000","message":"Should pop out this change","commit_id":"43a118e7d47523eaa0c70f84ba4745b26f2e33f1"}],"octavia/network/drivers/neutron/floatingip.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"8ac2d0f8c4135041a2d0d2019638fb0e797b8591","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    def _flip_to_vip(self, flip, load_balancer):"},{"line_number":55,"context_line":"        return data_models.Vip(ip_address\u003dflip.floating_ip_address,"},{"line_number":56,"context_line":"                               network_id\u003dflip.floating_network_id,"},{"line_number":57,"context_line":"                               port_id\u003dflip.id,"},{"line_number":58,"context_line":"                               load_balancer\u003dload_balancer,"},{"line_number":59,"context_line":"                               load_balancer_id\u003dload_balancer.id)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_fd246fb0","line":57,"updated":"2017-02-17 22:01:05.000000000","message":"Reusing vip.port_id to hold the flip_id... Could make a new column, but seems like overkill since in many cases it is actually very nearly the same kind of object.","commit_id":"8aafc4bbbc909953afc56dab491bcca1f93d9069"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"01fbed95f4764a1b70a37db668f5556ddebba123","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            flip \u003d self.get_floatingip(load_balancer.vip.port_id)"},{"line_number":164,"context_line":"            return self._flip_to_vip(flip, load_balancer)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        # It can be assumed that network_id exists"},{"line_number":167,"context_line":"        flip \u003d {\u0027floatingip\u0027: {"},{"line_number":168,"context_line":"            # \u0027description\u0027: \u0027octavia-lb-\u0027 + load_balancer.id,"},{"line_number":169,"context_line":"            \u0027floating_network_id\u0027: load_balancer.vip.network_id}}"}],"source_content_type":"text/x-python","patch_set":148,"id":"3f79a3b5_46be3401","line":166,"updated":"2018-09-24 07:45:34.000000000","message":"When create a loadbalancer I specified --vip-net parameter like:\n\nopenstack loadbalancer create --vip-net Ext-Net --name lb1\n\nAfter all the vip port has been created and here it tries to allocate the the floating_ip on the same network_id as Ext-Net.\n\nI would like to have possibility to specify on which network I want  create a VIP port (afair named \u0027octavia-lb-vrrp-%nova_inst_id%) and after all to specify from which subnet I want to add floating ip for this vrrp port.\n\nFor now it creates FIP from the same net and I faced two issues because of that:\n1) My neutron doesn\u0027t like it, due:\n\nNotFound: External network 6ed4d34f-0b07-43c7-a1f9-14a0c7e9c8d7 is not reachable from subnet 0d39ebc9-bde6-41b3-af1f-796e967eb3c1.  Therefore, cannot associate Port 8bb5294f-531c-4d2a-944e-a6eff4b2 with a Floating IP.\nBut the network and the subnet basically is the same. \n\n2) By using it I allocate 2 IP addresses for 1 purpose. \n\n\nCan\u0027t we try to add possibility to distinguish networks, like:\n\nopenstack loadbalancer create --vip-subnet Priv-Net --fip-subnet Ext-Net --name lb1?\n\n\nYes, I can achieve the goal using:\n\nopenstack loadbalancer create --vip-subnet Priv-Net --name lb1\n\nand then allocate the FIP on octavia-lb-vrrp, but if this driver is intend to do the same, why not to make it working like this?","commit_id":"a8d28daf1a3bf7eaeab9ab8bf2d495ddf072d1c6"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"b8fc4b12d46ed5e5ed2335df9590332fb776a325","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            flip \u003d self.get_floatingip(load_balancer.vip.port_id)"},{"line_number":164,"context_line":"            return self._flip_to_vip(flip, load_balancer)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        # It can be assumed that network_id exists"},{"line_number":167,"context_line":"        flip \u003d {\u0027floatingip\u0027: {"},{"line_number":168,"context_line":"            # \u0027description\u0027: \u0027octavia-lb-\u0027 + load_balancer.id,"},{"line_number":169,"context_line":"            \u0027floating_network_id\u0027: load_balancer.vip.network_id}}"}],"source_content_type":"text/x-python","patch_set":148,"id":"3f79a3b5_82f2df9a","line":166,"in_reply_to":"3f79a3b5_373c75bf","updated":"2018-09-25 08:10:50.000000000","message":"Hey,\nYes, when you specify the FLIP driver loadbalancer shows the FLIP as the loadbalancer IP, thats right. There is no other entry as you said.\nBut on the bottom there is another port created (VRRP port in service tenant) with allocated IP address (for example Public IP address) that is unused.\n\nYea, I know that adding new parameter like --flip-network id of --flip-subnet-id requires API changes :(\n\nLets talk about it on Meeting.","commit_id":"a8d28daf1a3bf7eaeab9ab8bf2d495ddf072d1c6"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"602e9e4c0adf366730da398d9975c3bcaf5f12a2","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            flip \u003d self.get_floatingip(load_balancer.vip.port_id)"},{"line_number":164,"context_line":"            return self._flip_to_vip(flip, load_balancer)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        # It can be assumed that network_id exists"},{"line_number":167,"context_line":"        flip \u003d {\u0027floatingip\u0027: {"},{"line_number":168,"context_line":"            # \u0027description\u0027: \u0027octavia-lb-\u0027 + load_balancer.id,"},{"line_number":169,"context_line":"            \u0027floating_network_id\u0027: load_balancer.vip.network_id}}"}],"source_content_type":"text/x-python","patch_set":148,"id":"3f79a3b5_373c75bf","line":166,"in_reply_to":"3f79a3b5_46be3401","updated":"2018-09-24 18:17:46.000000000","message":"The point of the FLIP driver is that the FLIP *is* the VIP, there is no other entry into the LB... so when you specify Ext-Net as the VIP network, that is saying \"I want the FLIP to be on Ext-Network\". If you want the flip to be on a different network, specify that network instead. There is no other vip-port. VIP port \u003d\u003d FLIP. I could see adding the ability to select a subnet using `--vip-subnet-id` and that would work fine, my users would just skip providing that. I can make that change.","commit_id":"a8d28daf1a3bf7eaeab9ab8bf2d495ddf072d1c6"}]}
