Activity log for bug #1367391

Date Who What changed Old value New value Message
2014-09-09 18:21:30 Robert Kukura bug added bug
2014-09-09 18:22:13 Robert Kukura description Support for distributed port bindings was added to ML2 in order to enable the same DVR port to be bound simultaneously on multiple hosts. This was implemented by: * Adding a new ml2_dvr_port_bindings table similar to the ml2_port_bindings table, but with the host column as part of the primary key. * Adding a new DvrPortContext class the overrides several functions in PortContext. * Adding DVR-specific internal functions to Ml2Plugin, _process_dvr_port_binding and _commit_dvr_port_binding, that are modified copies of existing functions. * In about 8 places, making code conditional on "port['device_owner'] == const.DEVICE_OWNER_DVR_INTERFACE" to handle DVR ports using the above models, classes and functions instead of the normal ones. This duplication of schema and code adds significant technical debt to the ML2 plugin implementation, requiring developers and reviewers to evaluate for all changes whether they need to apply to both the normal and DVR-specific copies. In addition, copied code is certain to diverge over time, making the the effort to keep the copies as synchronized as possible become more and more difficult. This unnecessary duplication of schema and code should be significantly reduced or completely eliminated by treating a normal non-distributed port as a special case of a distributed port that happens to only bind on a single host. The schema would be unified by replacing the existing ml2_port_bindings and ml2_dvr_port_bindings tables with two new tables. One would contain the port state that is the same for all hosts on which the port binds, including the values of the binding:host, binding:vnic_type, and binding:profile attributes. The other would contain the port state that differs among host-specific bindings, such as the binding:vif_type and binding:vif_details attribute values, and the bound driver and segment (until these two move to a separate table for hierarchical port binding). Also, the basic idea of distributed port bindings is not specific to DVR, and could be used for DHCP and other services, so the schema and code could be made more generic as the distributed and normal schema and code are unified. Support for distributed port bindings was added to ML2 in order to enable the same DVR port to be bound simultaneously on multiple hosts. This was implemented by: * Adding a new ml2_dvr_port_bindings table similar to the ml2_port_bindings table, but with the host column as part of the primary key. * Adding a new DvrPortContext class the overrides several functions in PortContext. * Adding DVR-specific internal functions to Ml2Plugin, _process_dvr_port_binding and _commit_dvr_port_binding, that are modified copies of existing functions. * In about 8 places, making code conditional on "port['device_owner'] == const.DEVICE_OWNER_DVR_INTERFACE" to handle DVR ports using the above models, classes and functions instead of the normal ones. This duplication of schema and code adds significant technical debt to the ML2 plugin implementation, requiring developers and reviewers to evaluate for all changes whether they need to apply to both the normal and DVR-specific copies. In addition, copied code is certain to diverge over time, making the effort to keep the copies as synchronized as possible become more and more difficult. This unnecessary duplication of schema and code should be significantly reduced or completely eliminated by treating a normal non-distributed port as a special case of a distributed port that happens to only bind on a single host. The schema would be unified by replacing the existing ml2_port_bindings and ml2_dvr_port_bindings tables with two new tables. One would contain the port state that is the same for all hosts on which the port binds, including the values of the binding:host, binding:vnic_type, and binding:profile attributes. The other would contain the port state that differs among host-specific bindings, such as the binding:vif_type and binding:vif_details attribute values, and the bound driver and segment (until these two move to a separate table for hierarchical port binding). Also, the basic idea of distributed port bindings is not specific to DVR, and could be used for DHCP and other services, so the schema and code could be made more generic as the distributed and normal schema and code are unified.
2014-09-09 18:22:59 Robert Kukura description Support for distributed port bindings was added to ML2 in order to enable the same DVR port to be bound simultaneously on multiple hosts. This was implemented by: * Adding a new ml2_dvr_port_bindings table similar to the ml2_port_bindings table, but with the host column as part of the primary key. * Adding a new DvrPortContext class the overrides several functions in PortContext. * Adding DVR-specific internal functions to Ml2Plugin, _process_dvr_port_binding and _commit_dvr_port_binding, that are modified copies of existing functions. * In about 8 places, making code conditional on "port['device_owner'] == const.DEVICE_OWNER_DVR_INTERFACE" to handle DVR ports using the above models, classes and functions instead of the normal ones. This duplication of schema and code adds significant technical debt to the ML2 plugin implementation, requiring developers and reviewers to evaluate for all changes whether they need to apply to both the normal and DVR-specific copies. In addition, copied code is certain to diverge over time, making the effort to keep the copies as synchronized as possible become more and more difficult. This unnecessary duplication of schema and code should be significantly reduced or completely eliminated by treating a normal non-distributed port as a special case of a distributed port that happens to only bind on a single host. The schema would be unified by replacing the existing ml2_port_bindings and ml2_dvr_port_bindings tables with two new tables. One would contain the port state that is the same for all hosts on which the port binds, including the values of the binding:host, binding:vnic_type, and binding:profile attributes. The other would contain the port state that differs among host-specific bindings, such as the binding:vif_type and binding:vif_details attribute values, and the bound driver and segment (until these two move to a separate table for hierarchical port binding). Also, the basic idea of distributed port bindings is not specific to DVR, and could be used for DHCP and other services, so the schema and code could be made more generic as the distributed and normal schema and code are unified. Support for distributed port bindings was added to ML2 in order to enable the same DVR port to be bound simultaneously on multiple hosts. This was implemented by: * Adding a new ml2_dvr_port_bindings table similar to the ml2_port_bindings table, but with the host column as part of the primary key. * Adding a new DvrPortContext class the overrides several functions in PortContext. * Adding DVR-specific internal functions to Ml2Plugin, _process_dvr_port_binding and _commit_dvr_port_binding, that are modified copies of existing functions. * In about 8 places, making code conditional on "port['device_owner'] == const.DEVICE_OWNER_DVR_INTERFACE" to handle DVR ports using the above models, classes and functions instead of the normal ones. This duplication of schema and code adds significant technical debt to the ML2 plugin implementation, requiring developers and reviewers to evaluate for all changes whether they need to apply to both the normal and DVR-specific copies. In addition, copied code is certain to diverge over time, making the effort to keep the copies as synchronized as possible become more and more difficult. This unnecessary duplication of schema and code should be significantly reduced or completely eliminated by treating a normal non-distributed port as a special case of a distributed port that happens to only bind on a single host. The schema would be unified by replacing the existing ml2_port_bindings and ml2_dvr_port_bindings tables with two new non-overlapping tables. One would contain the port state that is the same for all hosts on which the port binds, including the values of the binding:host, binding:vnic_type, and binding:profile attributes. The other would contain the port state that differs among host-specific bindings, such as the binding:vif_type and binding:vif_details attribute values, and the bound driver and segment (until these two move to a separate table for hierarchical port binding). Also, the basic idea of distributed port bindings is not specific to DVR, and could be used for DHCP and other services, so the schema and code could be made more generic as the distributed and normal schema and code are unified.
2014-09-09 19:35:57 Kyle Mestery neutron: milestone juno-rc1
2014-09-10 15:24:34 Armando Migliaccio neutron: status New Confirmed
2014-09-22 19:19:47 Mathieu Rohon bug added subscriber Mathieu Rohon
2014-09-24 02:31:25 Kyle Mestery neutron: milestone juno-rc1
2014-10-08 16:24:55 Robert Kukura neutron: milestone kilo-1
2014-11-27 09:55:30 Ann Taraday bug added subscriber Ann Kamyshnikova
2014-12-03 15:11:59 Maru Newby bug added subscriber Carl Baldwin
2014-12-03 15:12:15 Maru Newby bug added subscriber Armando Migliaccio
2014-12-16 22:00:06 Kyle Mestery neutron: milestone kilo-1
2015-01-28 17:02:27 Robert Kukura neutron: milestone kilo-3
2015-02-01 05:57:56 OpenStack Infra neutron: status Confirmed In Progress
2015-03-18 16:36:24 Robert Kukura neutron: milestone kilo-3 kilo-rc1
2015-03-25 19:27:22 Armando Migliaccio neutron: importance High Medium
2015-03-25 19:27:25 Armando Migliaccio neutron: milestone kilo-rc1
2015-05-11 20:16:35 Robert Kukura neutron: milestone liberty-1
2015-06-23 15:45:47 Thierry Carrez neutron: milestone liberty-1 liberty-2
2015-07-28 13:11:55 Thierry Carrez neutron: milestone liberty-2 liberty-3
2015-09-01 18:11:53 Armando Migliaccio neutron: milestone liberty-3 liberty-rc1
2015-09-15 20:27:24 Kyle Mestery neutron: milestone liberty-rc1
2016-06-14 09:23:00 OpenStack Infra neutron: assignee Robert Kukura (rkukura) Andreas Scheuring (andreas-scheuring)
2016-06-23 14:16:03 OpenStack Infra neutron: assignee Andreas Scheuring (andreas-scheuring) QunyingRan (ran-qunying)
2016-06-24 08:47:17 OpenStack Infra neutron: assignee QunyingRan (ran-qunying) Andreas Scheuring (andreas-scheuring)
2022-10-20 08:25:07 Rodolfo Alonso neutron: status In Progress Won't Fix