)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f93f18e11eb5b91871900332d4369b5615332d22","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Do not perform port update in case of baremetal instance."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In case of a baremetal instance, the instance\u0027s port binding:host_id"},{"line_number":10,"context_line":"gets updated during instance reboot to the nova compute host id by"},{"line_number":11,"context_line":"the periodic task: _heal_instance_info_cache."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This is an un-desirable change as ironic did the original port binding"},{"line_number":14,"context_line":"nova MUST not update the value."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5fc1f717_ba6ec3c6","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":45},"updated":"2019-04-04 18:30:51.000000000","message":"So, just to clarify,\nwhile this is a desired behaviour (updating the port\u0027s binding:host_id) for virtualization where the node nova compute runs on acts as a Hypervisor (thus all the ports that are asscoiated with instances running on that host are indeed bound to that host).\nIn the case where nova compute manages baremetal instances this behaviour is not desired.","commit_id":"5a0c2291f5c76eac5df29200d9aaa8fa9c3ed8d1"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f93f18e11eb5b91871900332d4369b5615332d22","unresolved":false,"context_lines":[{"line_number":15,"context_line":"In case of a baremetal port, the binding:host_id represents the ironic"},{"line_number":16,"context_line":"node_uuid. In case of a SmartNIC(baremetal) port[1] the binding:host_id"},{"line_number":17,"context_line":"represent the SmartNIC hostname and it MUST not change since ironic"},{"line_number":18,"context_line":"relies on that information as well as Neutron agent on the SmartNIC."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"In case the compute manager manages baremetal instances"},{"line_number":21,"context_line":"(compute_driver \u003d \u0027ironic.IronicDriver\u0027) _heal_instance_info_cache()"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5fc1f717_f74a2681","line":18,"range":{"start_line":18,"start_character":38,"end_line":18,"end_character":67},"updated":"2019-04-04 18:30:51.000000000","message":"nit: the Neutron agent that runs on the SmartNIC","commit_id":"5a0c2291f5c76eac5df29200d9aaa8fa9c3ed8d1"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"a5c16e57c2c7991df8b65d8bf5b52be88b090634","unresolved":false,"context_lines":[{"line_number":15,"context_line":"In case of a baremetal port, the binding:host_id represents the ironic"},{"line_number":16,"context_line":"node_uuid. In case of a SmartNIC(baremetal) port[1] the binding:host_id"},{"line_number":17,"context_line":"represent the SmartNIC hostname and it MUST not change since ironic"},{"line_number":18,"context_line":"relies on that information as well as Neutron agent on the SmartNIC."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"In case the compute manager manages baremetal instances"},{"line_number":21,"context_line":"(compute_driver \u003d \u0027ironic.IronicDriver\u0027) _heal_instance_info_cache()"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5fc1f717_94413ca9","line":18,"range":{"start_line":18,"start_character":38,"end_line":18,"end_character":67},"in_reply_to":"5fc1f717_f74a2681","updated":"2019-04-07 09:50:13.000000000","message":"Done","commit_id":"5a0c2291f5c76eac5df29200d9aaa8fa9c3ed8d1"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f93f18e11eb5b91871900332d4369b5615332d22","unresolved":false,"context_lines":[{"line_number":18,"context_line":"relies on that information as well as Neutron agent on the SmartNIC."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"In case the compute manager manages baremetal instances"},{"line_number":21,"context_line":"(compute_driver \u003d \u0027ironic.IronicDriver\u0027) _heal_instance_info_cache()"},{"line_number":22,"context_line":"results in a no-op."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"[1] I658754f7f8c74087b0aabfdef222a2c0b5698541"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5fc1f717_f761c612","line":21,"range":{"start_line":21,"start_character":16,"end_line":21,"end_character":17},"updated":"2019-04-04 18:30:51.000000000","message":"nit: \u003d\u003d","commit_id":"5a0c2291f5c76eac5df29200d9aaa8fa9c3ed8d1"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"a5c16e57c2c7991df8b65d8bf5b52be88b090634","unresolved":false,"context_lines":[{"line_number":18,"context_line":"relies on that information as well as Neutron agent on the SmartNIC."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"In case the compute manager manages baremetal instances"},{"line_number":21,"context_line":"(compute_driver \u003d \u0027ironic.IronicDriver\u0027) _heal_instance_info_cache()"},{"line_number":22,"context_line":"results in a no-op."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"[1] I658754f7f8c74087b0aabfdef222a2c0b5698541"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5fc1f717_341408a0","line":21,"range":{"start_line":21,"start_character":16,"end_line":21,"end_character":17},"in_reply_to":"5fc1f717_f761c612","updated":"2019-04-07 09:50:13.000000000","message":"Done","commit_id":"5a0c2291f5c76eac5df29200d9aaa8fa9c3ed8d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9676d3b687dd5429404b6d9d7ade1a6c6572731f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Adrian Chiris \u003cadrianc@mellanox.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-04-14 06:33:52 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Do not perform port update in case of baremetal instance."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In case of a baremetal instance, the instance\u0027s port binding:host_id"},{"line_number":10,"context_line":"gets updated during instance reboot to the nova compute host id by"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fce034c_ee0278b4","line":7,"updated":"2019-04-15 15:40:57.000000000","message":"This is a regression as a result of https://review.openstack.org/#/c/603844/ in Stein correct? Before that change the periodic task wouldn\u0027t mess with port bindings.","commit_id":"2b5bcc6bb2a64ccc062909a94f68423895993d6b"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"aba4e3aed4d3f9aec54929a454ff604dc3303c96","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Adrian Chiris \u003cadrianc@mellanox.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-04-14 06:33:52 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Do not perform port update in case of baremetal instance."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In case of a baremetal instance, the instance\u0027s port binding:host_id"},{"line_number":10,"context_line":"gets updated during instance reboot to the nova compute host id by"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fce034c_b45c927e","line":7,"in_reply_to":"3fce034c_a1d2415b","updated":"2019-04-17 11:26:31.000000000","message":"Done","commit_id":"2b5bcc6bb2a64ccc062909a94f68423895993d6b"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"a382d61f0ff2399a76555bd61f705a733cb71bff","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Adrian Chiris \u003cadrianc@mellanox.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-04-14 06:33:52 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Do not perform port update in case of baremetal instance."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In case of a baremetal instance, the instance\u0027s port binding:host_id"},{"line_number":10,"context_line":"gets updated during instance reboot to the nova compute host id by"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fce034c_a1d2415b","line":7,"in_reply_to":"3fce034c_ee0278b4","updated":"2019-04-15 16:09:33.000000000","message":"yes indeed,\nwill reference it in the commit message as well.","commit_id":"2b5bcc6bb2a64ccc062909a94f68423895993d6b"}],"nova/compute/manager.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"683cae94d71f0c398d4a46ddfa1b51bb626c42af","unresolved":false,"context_lines":[{"line_number":7225,"context_line":"    @periodic_task.periodic_task("},{"line_number":7226,"context_line":"        spacing\u003dCONF.heal_instance_info_cache_interval)"},{"line_number":7227,"context_line":"    def _heal_instance_info_cache(self, context):"},{"line_number":7228,"context_line":"        \"\"\"Called periodically.  On every call, try to update the"},{"line_number":7229,"context_line":"        info_cache\u0027s network information for another instance by"},{"line_number":7230,"context_line":"        calling to the network manager."},{"line_number":7231,"context_line":""},{"line_number":7232,"context_line":"        This is implemented by keeping a cache of uuids of instances"},{"line_number":7233,"context_line":"        that live on this host.  On each call, we pop one off of a"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fce034c_216df131","line":7230,"range":{"start_line":7228,"start_character":11,"end_line":7230,"end_character":39},"updated":"2019-04-15 16:29:35.000000000","message":"this gets called once every 15 mins by default.\n\nso if i have 16 instance on a host it will update each every 4 hours  it is documented i guess but i for one \nhad always tought this updated all instance in the cache on every invocation. im not sure if this is a proablem or not.\n\nit certenly makes the interval untill an instnace i healed much longer tehn i expected but changin the behavior coudl significaily increase the neutron api queries so maybe this is what we want...","commit_id":"2b5bcc6bb2a64ccc062909a94f68423895993d6b"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"49314598ed243b97fdbbdc62575dcec48aa32ded","unresolved":false,"context_lines":[{"line_number":7225,"context_line":"    @periodic_task.periodic_task("},{"line_number":7226,"context_line":"        spacing\u003dCONF.heal_instance_info_cache_interval)"},{"line_number":7227,"context_line":"    def _heal_instance_info_cache(self, context):"},{"line_number":7228,"context_line":"        \"\"\"Called periodically.  On every call, try to update the"},{"line_number":7229,"context_line":"        info_cache\u0027s network information for another instance by"},{"line_number":7230,"context_line":"        calling to the network manager."},{"line_number":7231,"context_line":""},{"line_number":7232,"context_line":"        This is implemented by keeping a cache of uuids of instances"},{"line_number":7233,"context_line":"        that live on this host.  On each call, we pop one off of a"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fce034c_8bab971b","line":7230,"range":{"start_line":7228,"start_character":11,"end_line":7230,"end_character":39},"in_reply_to":"3fce034c_216df131","updated":"2019-04-16 07:54:18.000000000","message":"in the commit message that introduced the healing of the port [1] it states:\n\n\"During recovery of failed hosts, neutron could get overwhelmed and lose\nmessages, for example when active controller was powered-off in the\nmiddle of instance evacuations.\"\n\nSo, if we choose to iterate over all instances in every call we may cause the very thing we try to avoid ?\n\n[1] https://review.openstack.org/#/c/603844/\n\nJust a thought ... its offtopic for this commit :)","commit_id":"2b5bcc6bb2a64ccc062909a94f68423895993d6b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c3174136a41485122fea5b07c22d44827ac3fb03","unresolved":false,"context_lines":[{"line_number":7225,"context_line":"    @periodic_task.periodic_task("},{"line_number":7226,"context_line":"        spacing\u003dCONF.heal_instance_info_cache_interval)"},{"line_number":7227,"context_line":"    def _heal_instance_info_cache(self, context):"},{"line_number":7228,"context_line":"        \"\"\"Called periodically.  On every call, try to update the"},{"line_number":7229,"context_line":"        info_cache\u0027s network information for another instance by"},{"line_number":7230,"context_line":"        calling to the network manager."},{"line_number":7231,"context_line":""},{"line_number":7232,"context_line":"        This is implemented by keeping a cache of uuids of instances"},{"line_number":7233,"context_line":"        that live on this host.  On each call, we pop one off of a"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fce034c_2c5ab6f2","line":7230,"range":{"start_line":7228,"start_character":11,"end_line":7230,"end_character":39},"in_reply_to":"3fce034c_8bab971b","updated":"2019-04-24 18:21:02.000000000","message":"yes it is i just had the old behavior in my head so the code looked worng to me.","commit_id":"2b5bcc6bb2a64ccc062909a94f68423895993d6b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9676d3b687dd5429404b6d9d7ade1a6c6572731f","unresolved":false,"context_lines":[{"line_number":7236,"context_line":"        has been deleted, etc."},{"line_number":7237,"context_line":"        \"\"\""},{"line_number":7238,"context_line":"        heal_interval \u003d CONF.heal_instance_info_cache_interval"},{"line_number":7239,"context_line":"        is_baremetal_driver \u003d (CONF.compute_driver \u003d\u003d \u0027ironic.IronicDriver\u0027)"},{"line_number":7240,"context_line":"        if not heal_interval or is_baremetal_driver:"},{"line_number":7241,"context_line":"            return"},{"line_number":7242,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fce034c_4e906c4f","line":7239,"updated":"2019-04-15 15:40:57.000000000","message":"This is a bit gross if there are other drivers that need to avoid this kind of behavior - a new method on the driver interface might be better, but I\u0027m not sure what you\u0027d call it.\n\nAlso, this will completely side-step the heal task for baremetal instances which I don\u0027t think is what you want, what you really want to avoid is the call to self.network_api.setup_instance_network_on_host on L7311 which is the regression with https://review.openstack.org/#/c/603844/ so why not just restrict the check to that conditional? And add a comment about why baremetal instances are special here.","commit_id":"2b5bcc6bb2a64ccc062909a94f68423895993d6b"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"aba4e3aed4d3f9aec54929a454ff604dc3303c96","unresolved":false,"context_lines":[{"line_number":7236,"context_line":"        has been deleted, etc."},{"line_number":7237,"context_line":"        \"\"\""},{"line_number":7238,"context_line":"        heal_interval \u003d CONF.heal_instance_info_cache_interval"},{"line_number":7239,"context_line":"        is_baremetal_driver \u003d (CONF.compute_driver \u003d\u003d \u0027ironic.IronicDriver\u0027)"},{"line_number":7240,"context_line":"        if not heal_interval or is_baremetal_driver:"},{"line_number":7241,"context_line":"            return"},{"line_number":7242,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fce034c_94687621","line":7239,"in_reply_to":"3fce034c_0b46c77d","updated":"2019-04-17 11:26:31.000000000","message":"Done","commit_id":"2b5bcc6bb2a64ccc062909a94f68423895993d6b"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"49314598ed243b97fdbbdc62575dcec48aa32ded","unresolved":false,"context_lines":[{"line_number":7236,"context_line":"        has been deleted, etc."},{"line_number":7237,"context_line":"        \"\"\""},{"line_number":7238,"context_line":"        heal_interval \u003d CONF.heal_instance_info_cache_interval"},{"line_number":7239,"context_line":"        is_baremetal_driver \u003d (CONF.compute_driver \u003d\u003d \u0027ironic.IronicDriver\u0027)"},{"line_number":7240,"context_line":"        if not heal_interval or is_baremetal_driver:"},{"line_number":7241,"context_line":"            return"},{"line_number":7242,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fce034c_0b46c77d","line":7239,"in_reply_to":"3fce034c_2ed160fc","updated":"2019-04-16 07:54:18.000000000","message":"I like it.","commit_id":"2b5bcc6bb2a64ccc062909a94f68423895993d6b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7d2ea95be7839333a03995d8b3f59d331bafd41c","unresolved":false,"context_lines":[{"line_number":7236,"context_line":"        has been deleted, etc."},{"line_number":7237,"context_line":"        \"\"\""},{"line_number":7238,"context_line":"        heal_interval \u003d CONF.heal_instance_info_cache_interval"},{"line_number":7239,"context_line":"        is_baremetal_driver \u003d (CONF.compute_driver \u003d\u003d \u0027ironic.IronicDriver\u0027)"},{"line_number":7240,"context_line":"        if not heal_interval or is_baremetal_driver:"},{"line_number":7241,"context_line":"            return"},{"line_number":7242,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fce034c_2ed160fc","line":7239,"in_reply_to":"3fce034c_4e906c4f","updated":"2019-04-15 15:45:17.000000000","message":"\u003e This is a bit gross if there are other drivers that need to avoid this kind of behavior - a new method on the driver interface might be better, but I\u0027m not sure what you\u0027d call it.\n\nMaybe you could call the new ComputeDriver interface \"manages_port_bindings\" which would default to return False and the IronicDriver would return True? Meaning the driver/backing hypervisor manages the port bindings out of band so compute should not touch them.","commit_id":"2b5bcc6bb2a64ccc062909a94f68423895993d6b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f1a05ecefa64f34e77c8f3cba22af76496e757a1","unresolved":false,"context_lines":[{"line_number":7264,"context_line":"                              \u0027because it is being deleted.\u0027, instance\u003dinst)"},{"line_number":7265,"context_line":"                    continue"},{"line_number":7266,"context_line":""},{"line_number":7267,"context_line":"                if not instance:"},{"line_number":7268,"context_line":"                    # Save the first one we find so we don\u0027t"},{"line_number":7269,"context_line":"                    # have to get it again"},{"line_number":7270,"context_line":"                    instance \u003d inst"},{"line_number":7271,"context_line":"                else:"},{"line_number":7272,"context_line":"                    instance_uuids.append(inst[\u0027uuid\u0027])"},{"line_number":7273,"context_line":""},{"line_number":7274,"context_line":"            self._instance_uuids_to_heal \u003d instance_uuids"},{"line_number":7275,"context_line":"        else:"},{"line_number":7276,"context_line":"            # Find the next valid instance on the list"},{"line_number":7277,"context_line":"            while instance_uuids:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fce034c_21f971c7","line":7274,"range":{"start_line":7267,"start_character":16,"end_line":7274,"end_character":57},"updated":"2019-04-15 16:23:12.000000000","message":"Note:\n\nthe control flow of this is honestly terrible.\n\nthe first time through this fuction \ninstance_uuids will be []\nso we enter this branch and recored the first instance on the hosts as instance\nthen add the rest that are not building or deleteing to \nself._instance_uuids_to_heal","commit_id":"2b5bcc6bb2a64ccc062909a94f68423895993d6b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f1a05ecefa64f34e77c8f3cba22af76496e757a1","unresolved":false,"context_lines":[{"line_number":7277,"context_line":"            while instance_uuids:"},{"line_number":7278,"context_line":"                try:"},{"line_number":7279,"context_line":"                    inst \u003d objects.Instance.get_by_uuid("},{"line_number":7280,"context_line":"                            context, instance_uuids.pop(0),"},{"line_number":7281,"context_line":"                            expected_attrs\u003d[\u0027system_metadata\u0027, \u0027info_cache\u0027,"},{"line_number":7282,"context_line":"                                            \u0027flavor\u0027],"},{"line_number":7283,"context_line":"                            use_slave\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fce034c_c1a42dbc","line":7280,"range":{"start_line":7280,"start_character":37,"end_line":7280,"end_character":58},"updated":"2019-04-15 16:23:12.000000000","message":"note:\n\ndoing the pop of the instace here is really hard to follow.\n\nthis only works because instance_uuids is effectivly an alias of self._instance_uuids_to_heal so when we pop\ninstance from the instance_uuids it modifies self._instance_uuids_to_heal","commit_id":"2b5bcc6bb2a64ccc062909a94f68423895993d6b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f1a05ecefa64f34e77c8f3cba22af76496e757a1","unresolved":false,"context_lines":[{"line_number":7298,"context_line":"                    instance \u003d inst"},{"line_number":7299,"context_line":"                    break"},{"line_number":7300,"context_line":""},{"line_number":7301,"context_line":"        if instance:"},{"line_number":7302,"context_line":"            # We have an instance now to refresh"},{"line_number":7303,"context_line":"            try:"},{"line_number":7304,"context_line":"                # Fix potential mismatch in port binding if evacuation failed"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fce034c_21e73115","line":7301,"range":{"start_line":7301,"start_character":11,"end_line":7301,"end_character":19},"updated":"2019-04-15 16:23:12.000000000","message":"note:\nthen we update one instace.\n\non subsequet invocations of this function we enter the else block  and select the first insstance that is not migration or deleting then break and we update the network info cache for that instance.","commit_id":"2b5bcc6bb2a64ccc062909a94f68423895993d6b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f1a05ecefa64f34e77c8f3cba22af76496e757a1","unresolved":false,"context_lines":[{"line_number":7308,"context_line":"                if instance.task_state is None and \\"},{"line_number":7309,"context_line":"                        self._require_nw_info_update(context, instance):"},{"line_number":7310,"context_line":"                    LOG.info(\"Updating ports in neutron\", instance\u003dinstance)"},{"line_number":7311,"context_line":"                    self.network_api.setup_instance_network_on_host("},{"line_number":7312,"context_line":"                        context, instance, self.host)"},{"line_number":7313,"context_line":"                # Call to network API to get instance info.. this will"},{"line_number":7314,"context_line":"                # force an update to the instance\u0027s info_cache"},{"line_number":7315,"context_line":"                self.network_api.get_instance_nw_info("}],"source_content_type":"text/x-python","patch_set":4,"id":"3fce034c_6ee768e6","line":7312,"range":{"start_line":7311,"start_character":6,"end_line":7312,"end_character":53},"updated":"2019-04-15 16:23:12.000000000","message":"i think this is what you actully want to skip.\n\nso maybe you want to just do the compute driver manages_port_bindings check here?","commit_id":"2b5bcc6bb2a64ccc062909a94f68423895993d6b"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"49314598ed243b97fdbbdc62575dcec48aa32ded","unresolved":false,"context_lines":[{"line_number":7308,"context_line":"                if instance.task_state is None and \\"},{"line_number":7309,"context_line":"                        self._require_nw_info_update(context, instance):"},{"line_number":7310,"context_line":"                    LOG.info(\"Updating ports in neutron\", instance\u003dinstance)"},{"line_number":7311,"context_line":"                    self.network_api.setup_instance_network_on_host("},{"line_number":7312,"context_line":"                        context, instance, self.host)"},{"line_number":7313,"context_line":"                # Call to network API to get instance info.. this will"},{"line_number":7314,"context_line":"                # force an update to the instance\u0027s info_cache"},{"line_number":7315,"context_line":"                self.network_api.get_instance_nw_info("}],"source_content_type":"text/x-python","patch_set":4,"id":"3fce034c_dd172245","line":7312,"range":{"start_line":7311,"start_character":6,"end_line":7312,"end_character":53},"in_reply_to":"3fce034c_6ee768e6","updated":"2019-04-16 07:54:18.000000000","message":"Yes, was thinking of adding it in ComputeManager._require_nw_info_update()","commit_id":"2b5bcc6bb2a64ccc062909a94f68423895993d6b"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"aba4e3aed4d3f9aec54929a454ff604dc3303c96","unresolved":false,"context_lines":[{"line_number":7308,"context_line":"                if instance.task_state is None and \\"},{"line_number":7309,"context_line":"                        self._require_nw_info_update(context, instance):"},{"line_number":7310,"context_line":"                    LOG.info(\"Updating ports in neutron\", instance\u003dinstance)"},{"line_number":7311,"context_line":"                    self.network_api.setup_instance_network_on_host("},{"line_number":7312,"context_line":"                        context, instance, self.host)"},{"line_number":7313,"context_line":"                # Call to network API to get instance info.. this will"},{"line_number":7314,"context_line":"                # force an update to the instance\u0027s info_cache"},{"line_number":7315,"context_line":"                self.network_api.get_instance_nw_info("}],"source_content_type":"text/x-python","patch_set":4,"id":"3fce034c_34774205","line":7312,"range":{"start_line":7311,"start_character":6,"end_line":7312,"end_character":53},"in_reply_to":"3fce034c_dd172245","updated":"2019-04-17 11:26:31.000000000","message":"Done","commit_id":"2b5bcc6bb2a64ccc062909a94f68423895993d6b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f1a05ecefa64f34e77c8f3cba22af76496e757a1","unresolved":false,"context_lines":[{"line_number":7312,"context_line":"                        context, instance, self.host)"},{"line_number":7313,"context_line":"                # Call to network API to get instance info.. this will"},{"line_number":7314,"context_line":"                # force an update to the instance\u0027s info_cache"},{"line_number":7315,"context_line":"                self.network_api.get_instance_nw_info("},{"line_number":7316,"context_line":"                    context, instance, force_refresh\u003dTrue)"},{"line_number":7317,"context_line":"                LOG.debug(\u0027Updated the network info_cache for instance\u0027,"},{"line_number":7318,"context_line":"                          instance\u003dinstance)"},{"line_number":7319,"context_line":"            except exception.InstanceNotFound:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fce034c_4e5b8c53","line":7316,"range":{"start_line":7315,"start_character":3,"end_line":7316,"end_character":58},"updated":"2019-04-15 16:23:12.000000000","message":"we might still want to do this updated of the info cache if the ironic compute node has been rehased to be managed by a new compute agent.\n\nim not sure when ironic nodes are allocated to compute agents.\nif its just when nodes are requrned to a pool then ignore this but if the compute agent to irionic node mappign can chagne for example when a compute service goes offline then\n\nits possibel that this is the frist time this agent has managed this ironic node and we do want to prime the cache with the instace netwrok info.","commit_id":"2b5bcc6bb2a64ccc062909a94f68423895993d6b"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"5ba759e28905576a086d798caeb09a28e9646066","unresolved":false,"context_lines":[{"line_number":7182,"context_line":"        binding_failed or unbound binding:vif_type for any of the instances"},{"line_number":7183,"context_line":"        ports."},{"line_number":7184,"context_line":"        \"\"\""},{"line_number":7185,"context_line":"        # Only update port bindings if the virt driver is not allowed"},{"line_number":7186,"context_line":"        # to do so, for example IronicDriver manages the port binding"},{"line_number":7187,"context_line":"        # for baremetal instance ports, hence, external intervention"},{"line_number":7188,"context_line":"        # with the binding is not desired."}],"source_content_type":"text/x-python","patch_set":5,"id":"3fce034c_e48a6919","line":7185,"range":{"start_line":7185,"start_character":43,"end_line":7185,"end_character":69},"updated":"2019-04-17 14:22:09.000000000","message":"i dont think the intention is that the virt driver is not allowed but the other way around, in case the virt driver(aka compute driver) manages port bindings, the compute manager should not intervene.","commit_id":"7fb4515666333118c2a8ffb9ecda72b3c5543494"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"46a31555ef0fb0906ca77cda01ba2b28f7b9af6d","unresolved":false,"context_lines":[{"line_number":7182,"context_line":"        binding_failed or unbound binding:vif_type for any of the instances"},{"line_number":7183,"context_line":"        ports."},{"line_number":7184,"context_line":"        \"\"\""},{"line_number":7185,"context_line":"        # Only update port bindings if the virt driver is not allowed"},{"line_number":7186,"context_line":"        # to do so, for example IronicDriver manages the port binding"},{"line_number":7187,"context_line":"        # for baremetal instance ports, hence, external intervention"},{"line_number":7188,"context_line":"        # with the binding is not desired."}],"source_content_type":"text/x-python","patch_set":5,"id":"3fce034c_5c8c627e","line":7185,"range":{"start_line":7185,"start_character":43,"end_line":7185,"end_character":69},"in_reply_to":"3fce034c_e48a6919","updated":"2019-04-18 08:28:27.000000000","message":"Done","commit_id":"7fb4515666333118c2a8ffb9ecda72b3c5543494"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"5ba759e28905576a086d798caeb09a28e9646066","unresolved":false,"context_lines":[{"line_number":7186,"context_line":"        # to do so, for example IronicDriver manages the port binding"},{"line_number":7187,"context_line":"        # for baremetal instance ports, hence, external intervention"},{"line_number":7188,"context_line":"        # with the binding is not desired."},{"line_number":7189,"context_line":"        if self.driver.manages_port_bindings():"},{"line_number":7190,"context_line":"            return False"},{"line_number":7191,"context_line":"        if not utils.is_neutron():"},{"line_number":7192,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fce034c_a4b6a1f9","line":7189,"updated":"2019-04-17 14:22:09.000000000","message":"i think we can check for it and is_neutron in one conditional\n\ni.e\nif not utils.is_neutron() or self.driver.manages_port_binidings():\n    return False","commit_id":"7fb4515666333118c2a8ffb9ecda72b3c5543494"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"46a31555ef0fb0906ca77cda01ba2b28f7b9af6d","unresolved":false,"context_lines":[{"line_number":7186,"context_line":"        # to do so, for example IronicDriver manages the port binding"},{"line_number":7187,"context_line":"        # for baremetal instance ports, hence, external intervention"},{"line_number":7188,"context_line":"        # with the binding is not desired."},{"line_number":7189,"context_line":"        if self.driver.manages_port_bindings():"},{"line_number":7190,"context_line":"            return False"},{"line_number":7191,"context_line":"        if not utils.is_neutron():"},{"line_number":7192,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fce034c_1ca25afe","line":7189,"in_reply_to":"3fce034c_a4b6a1f9","updated":"2019-04-18 08:28:27.000000000","message":"Done","commit_id":"7fb4515666333118c2a8ffb9ecda72b3c5543494"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"5ba759e28905576a086d798caeb09a28e9646066","unresolved":false,"context_lines":[{"line_number":4957,"context_line":"        with mock.patch.object(self.compute, \u0027network_api\u0027) as \\"},{"line_number":4958,"context_line":"                network_api_mock:"},{"line_number":4959,"context_line":"            self.compute._heal_instance_info_cache(self.context)"},{"line_number":4960,"context_line":"            network_api_mock.assert_not_called()"},{"line_number":4961,"context_line":""},{"line_number":4962,"context_line":""},{"line_number":4963,"context_line":"class ComputeManagerBuildInstanceTestCase(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fce034c_447c9db4","line":4960,"updated":"2019-04-17 14:22:09.000000000","message":"So, the change is in self._require_nw_info_update()\nneed to unit test it instead of _heal_instance_info_cache()","commit_id":"7fb4515666333118c2a8ffb9ecda72b3c5543494"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"46a31555ef0fb0906ca77cda01ba2b28f7b9af6d","unresolved":false,"context_lines":[{"line_number":4957,"context_line":"        with mock.patch.object(self.compute, \u0027network_api\u0027) as \\"},{"line_number":4958,"context_line":"                network_api_mock:"},{"line_number":4959,"context_line":"            self.compute._heal_instance_info_cache(self.context)"},{"line_number":4960,"context_line":"            network_api_mock.assert_not_called()"},{"line_number":4961,"context_line":""},{"line_number":4962,"context_line":""},{"line_number":4963,"context_line":"class ComputeManagerBuildInstanceTestCase(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fce034c_5c99c276","line":4960,"in_reply_to":"3fce034c_447c9db4","updated":"2019-04-18 08:28:27.000000000","message":"Done","commit_id":"7fb4515666333118c2a8ffb9ecda72b3c5543494"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"c623a4918ead7718055dc12c7d9cde900d111c94","unresolved":false,"context_lines":[{"line_number":4957,"context_line":"        with mock.patch.object(compute_mgr, \u0027network_api\u0027) as \\"},{"line_number":4958,"context_line":"                network_api_mock:"},{"line_number":4959,"context_line":"            compute_mgr._require_nw_info_update(self.context, None)"},{"line_number":4960,"context_line":"            network_api_mock.assert_not_called()"},{"line_number":4961,"context_line":""},{"line_number":4962,"context_line":""},{"line_number":4963,"context_line":"class ComputeManagerBuildInstanceTestCase(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fce034c_326added","line":4960,"updated":"2019-04-18 10:15:42.000000000","message":"you need to assert that _requre_nw_info_update is returning false as well :)\n\nalso do we have the other way covered ? e.g when compute driver returns True when calling manages_port_binding ?","commit_id":"26e8d1a28a8b7dac4e42c97ababf719c3672fe28"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"16a716d4a4245ff8caf9bd1d00037852d1404bf2","unresolved":false,"context_lines":[{"line_number":4957,"context_line":"        with mock.patch.object(compute_mgr, \u0027network_api\u0027) as \\"},{"line_number":4958,"context_line":"                network_api_mock:"},{"line_number":4959,"context_line":"            compute_mgr._require_nw_info_update(self.context, None)"},{"line_number":4960,"context_line":"            network_api_mock.assert_not_called()"},{"line_number":4961,"context_line":""},{"line_number":4962,"context_line":""},{"line_number":4963,"context_line":"class ComputeManagerBuildInstanceTestCase(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fce034c_48b6dc40","line":4960,"in_reply_to":"3fce034c_326added","updated":"2019-04-18 11:42:09.000000000","message":"- assertFalse \u003d\u003e done\n- I moved the test to: tests.unit.compute.test_compute.py\n- testing regular is done in test_compute.py","commit_id":"26e8d1a28a8b7dac4e42c97ababf719c3672fe28"}],"nova/virt/driver.py":[{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"5ba759e28905576a086d798caeb09a28e9646066","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        \"supports_tagged_attach_volume\": False,"},{"line_number":158,"context_line":"        \"supports_extend_volume\": False,"},{"line_number":159,"context_line":"        \"supports_multiattach\": False,"},{"line_number":160,"context_line":"        \"supports_trusted_certs\": False,"},{"line_number":161,"context_line":"    }"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    # Indicates if this driver will rebalance nodes among compute service"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fce034c_44efbdaf","line":160,"updated":"2019-04-17 14:22:09.000000000","message":"Wondering if this should be a ComputeDriver capability","commit_id":"7fb4515666333118c2a8ffb9ecda72b3c5543494"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"5ba759e28905576a086d798caeb09a28e9646066","unresolved":false,"context_lines":[{"line_number":1844,"context_line":"        return instance.get(\u0027host\u0027)"},{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"    def manages_port_bindings(self):"},{"line_number":1847,"context_line":"        \"\"\"Virt driver is not allowed to manage port bindings."},{"line_number":1848,"context_line":"        \"\"\""},{"line_number":1849,"context_line":"        return False"},{"line_number":1850,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fce034c_64d199fb","line":1847,"range":{"start_line":1847,"start_character":11,"end_line":1847,"end_character":62},"updated":"2019-04-17 14:22:09.000000000","message":"Compute driver manages port bindings","commit_id":"7fb4515666333118c2a8ffb9ecda72b3c5543494"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"46a31555ef0fb0906ca77cda01ba2b28f7b9af6d","unresolved":false,"context_lines":[{"line_number":1844,"context_line":"        return instance.get(\u0027host\u0027)"},{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"    def manages_port_bindings(self):"},{"line_number":1847,"context_line":"        \"\"\"Virt driver is not allowed to manage port bindings."},{"line_number":1848,"context_line":"        \"\"\""},{"line_number":1849,"context_line":"        return False"},{"line_number":1850,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fce034c_9c496a32","line":1847,"range":{"start_line":1847,"start_character":11,"end_line":1847,"end_character":62},"in_reply_to":"3fce034c_64d199fb","updated":"2019-04-18 08:28:27.000000000","message":"Done","commit_id":"7fb4515666333118c2a8ffb9ecda72b3c5543494"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"ecdf22c077f2e1a9d53e71805917b772b94b9b7e","unresolved":false,"context_lines":[{"line_number":1843,"context_line":"        \"\"\""},{"line_number":1844,"context_line":"        return instance.get(\u0027host\u0027)"},{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"    def manages_port_bindings(self):"},{"line_number":1847,"context_line":"        \"\"\"Compute driver manages port bindings."},{"line_number":1848,"context_line":"        \"\"\""},{"line_number":1849,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":8,"id":"ffb9cba7_58405f08","line":1846,"range":{"start_line":1846,"start_character":8,"end_line":1846,"end_character":29},"updated":"2019-04-22 08:46:13.000000000","message":"nit: not sure that\u0027s a good name, maybe is_* or check_*","commit_id":"d1f6dda85a8a69e6aed8b48125e15f2460453885"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"dcffe48e186dd2c95975e00b54eccbf490277be7","unresolved":false,"context_lines":[{"line_number":1843,"context_line":"        \"\"\""},{"line_number":1844,"context_line":"        return instance.get(\u0027host\u0027)"},{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"    def manages_port_bindings(self):"},{"line_number":1847,"context_line":"        \"\"\"Compute driver manages port bindings."},{"line_number":1848,"context_line":"        \"\"\""},{"line_number":1849,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":8,"id":"ffb9cba7_5c849ab1","line":1846,"range":{"start_line":1846,"start_character":8,"end_line":1846,"end_character":29},"in_reply_to":"ffb9cba7_237676a6","updated":"2019-04-24 13:41:44.000000000","message":"Done","commit_id":"d1f6dda85a8a69e6aed8b48125e15f2460453885"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"dcffe48e186dd2c95975e00b54eccbf490277be7","unresolved":false,"context_lines":[{"line_number":1843,"context_line":"        \"\"\""},{"line_number":1844,"context_line":"        return instance.get(\u0027host\u0027)"},{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"    def manages_port_bindings(self):"},{"line_number":1847,"context_line":"        \"\"\"Compute driver manages port bindings."},{"line_number":1848,"context_line":"        \"\"\""},{"line_number":1849,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":8,"id":"ffb9cba7_cff3ea72","line":1846,"range":{"start_line":1846,"start_character":8,"end_line":1846,"end_character":29},"in_reply_to":"ffb9cba7_58405f08","updated":"2019-04-24 13:41:44.000000000","message":"Done","commit_id":"d1f6dda85a8a69e6aed8b48125e15f2460453885"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0e2eb9584c029127c75ff3b58c7d521325b27504","unresolved":false,"context_lines":[{"line_number":1843,"context_line":"        \"\"\""},{"line_number":1844,"context_line":"        return instance.get(\u0027host\u0027)"},{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"    def manages_port_bindings(self):"},{"line_number":1847,"context_line":"        \"\"\"Compute driver manages port bindings."},{"line_number":1848,"context_line":"        \"\"\""},{"line_number":1849,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":8,"id":"ffb9cba7_237676a6","line":1846,"range":{"start_line":1846,"start_character":8,"end_line":1846,"end_character":29},"in_reply_to":"ffb9cba7_58405f08","updated":"2019-04-23 15:50:20.000000000","message":"Yeah, could link it to network_binding_host_id by calling this \"manages_network_binding_host_id\".","commit_id":"d1f6dda85a8a69e6aed8b48125e15f2460453885"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"58c36ddcbada0e8b8275571e66d3a1bf5339add3","unresolved":false,"context_lines":[{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"    def manages_port_bindings(self):"},{"line_number":1847,"context_line":"        \"\"\"Compute driver manages port bindings."},{"line_number":1848,"context_line":"        \"\"\""},{"line_number":1849,"context_line":"        return False"},{"line_number":1850,"context_line":""},{"line_number":1851,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ffb9cba7_281ad57c","line":1848,"updated":"2019-04-23 15:46:46.000000000","message":"This docstring could definitely use some more information, similar to what is in the commit message. Something along the lines of \"Used to indicate whether or not the compute driver (or backing hypervisor) is responsible for managing port binding details, such as the host_id. By default the ComputeManager will manage port bindings and the host_id associated with a binding using the network API. However, some backends, like Ironic, will manage the port binding host_id out-of-band and the compute service should not override what is set by the hypervisor.\"","commit_id":"d1f6dda85a8a69e6aed8b48125e15f2460453885"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"dcffe48e186dd2c95975e00b54eccbf490277be7","unresolved":false,"context_lines":[{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"    def manages_port_bindings(self):"},{"line_number":1847,"context_line":"        \"\"\"Compute driver manages port bindings."},{"line_number":1848,"context_line":"        \"\"\""},{"line_number":1849,"context_line":"        return False"},{"line_number":1850,"context_line":""},{"line_number":1851,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ffb9cba7_afc79612","line":1848,"in_reply_to":"ffb9cba7_035c9223","updated":"2019-04-24 13:41:44.000000000","message":"that makes sense -to use network_binding_host_id- but I think it is more convenient to use a separate function for the purpose of blocking/allowing compute driver to change the port bindings.","commit_id":"d1f6dda85a8a69e6aed8b48125e15f2460453885"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"dcffe48e186dd2c95975e00b54eccbf490277be7","unresolved":false,"context_lines":[{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"    def manages_port_bindings(self):"},{"line_number":1847,"context_line":"        \"\"\"Compute driver manages port bindings."},{"line_number":1848,"context_line":"        \"\"\""},{"line_number":1849,"context_line":"        return False"},{"line_number":1850,"context_line":""},{"line_number":1851,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ffb9cba7_8f5ad227","line":1848,"in_reply_to":"ffb9cba7_281ad57c","updated":"2019-04-24 13:41:44.000000000","message":"Done","commit_id":"d1f6dda85a8a69e6aed8b48125e15f2460453885"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0e2eb9584c029127c75ff3b58c7d521325b27504","unresolved":false,"context_lines":[{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"    def manages_port_bindings(self):"},{"line_number":1847,"context_line":"        \"\"\"Compute driver manages port bindings."},{"line_number":1848,"context_line":"        \"\"\""},{"line_number":1849,"context_line":"        return False"},{"line_number":1850,"context_line":""},{"line_number":1851,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ffb9cba7_035c9223","line":1848,"in_reply_to":"ffb9cba7_281ad57c","updated":"2019-04-23 15:50:20.000000000","message":"You could also refer to the network_binding_host_id method in this case since that\u0027s only overridden by the ironic driver. An alternative solution to adding and checking this new method would be to just check if network_binding_host_id returns None or not, but that is probably getting a bit too tightly coupled with the ironic driver implementation which returns None (the default returns instance.host).","commit_id":"d1f6dda85a8a69e6aed8b48125e15f2460453885"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"5ba759e28905576a086d798caeb09a28e9646066","unresolved":false,"context_lines":[{"line_number":2178,"context_line":"                 {\u0027node\u0027: node_uuid}, instance\u003dinstance)"},{"line_number":2179,"context_line":""},{"line_number":2180,"context_line":"    def manages_port_bindings(self):"},{"line_number":2181,"context_line":"        \"\"\"In case of IronicDriver, port binding should not be updated"},{"line_number":2182,"context_line":"        by the driver."},{"line_number":2183,"context_line":"        \"\"\""},{"line_number":2184,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fce034c_e414a9a2","line":2182,"range":{"start_line":2181,"start_character":11,"end_line":2182,"end_character":22},"updated":"2019-04-17 14:22:09.000000000","message":"actually, IronicDriver manages the port binding\n(that is why we avoid in the compute manager from updating the port binding in _heal_instance_info_cache())\n\ni guess you meant:\n\"In case of IronicDriver, port binding should not be update by the compute manager\"\n\nhowever i would refrain from referencing the computeManager here.\n\nMaybe go with:\n\"\"\"IronicDriver manages port bindings for baremetal instances.\n\"\"\"","commit_id":"7fb4515666333118c2a8ffb9ecda72b3c5543494"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"46a31555ef0fb0906ca77cda01ba2b28f7b9af6d","unresolved":false,"context_lines":[{"line_number":2178,"context_line":"                 {\u0027node\u0027: node_uuid}, instance\u003dinstance)"},{"line_number":2179,"context_line":""},{"line_number":2180,"context_line":"    def manages_port_bindings(self):"},{"line_number":2181,"context_line":"        \"\"\"In case of IronicDriver, port binding should not be updated"},{"line_number":2182,"context_line":"        by the driver."},{"line_number":2183,"context_line":"        \"\"\""},{"line_number":2184,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fce034c_5cfd42af","line":2182,"range":{"start_line":2181,"start_character":11,"end_line":2182,"end_character":22},"in_reply_to":"3fce034c_e414a9a2","updated":"2019-04-18 08:28:27.000000000","message":"Done","commit_id":"7fb4515666333118c2a8ffb9ecda72b3c5543494"}]}
