diff --git a/neutron/extensions/portbindings.py b/neutron/extensions/portbindings.py index acf0efcd259..002c9f2a171 100644 --- a/neutron/extensions/portbindings.py +++ b/neutron/extensions/portbindings.py @@ -43,7 +43,10 @@ PROFILE = 'binding:profile' # # - port_filter : Boolean value indicating Neutron provides port filtering # features such as security group and anti MAC/IP spoofing +# - ovs_hybrid_plug: Boolean used to inform Nova that the hybrid plugging +# strategy for OVS should be used CAP_PORT_FILTER = 'port_filter' +OVS_HYBRID_PLUG = 'ovs_hybrid_plug' VIF_TYPE_UNBOUND = 'unbound' VIF_TYPE_BINDING_FAILED = 'binding_failed' diff --git a/neutron/plugins/bigswitch/plugin.py b/neutron/plugins/bigswitch/plugin.py index 444fa7b285d..833fcea170a 100644 --- a/neutron/plugins/bigswitch/plugin.py +++ b/neutron/plugins/bigswitch/plugin.py @@ -374,7 +374,9 @@ class NeutronRestProxyV2Base(db_base_plugin_v2.NeutronDbPluginV2, port[portbindings.VIF_DETAILS] = { # TODO(rkukura): Replace with new VIF security details portbindings.CAP_PORT_FILTER: - 'security-group' in self.supported_extension_aliases} + 'security-group' in self.supported_extension_aliases, + portbindings.OVS_HYBRID_PLUG: True + } return port def _check_hostvif_override(self, hostid): diff --git a/neutron/plugins/ml2/drivers/mech_ofagent.py b/neutron/plugins/ml2/drivers/mech_ofagent.py index 3d3909b0148..b593e61d6bb 100644 --- a/neutron/plugins/ml2/drivers/mech_ofagent.py +++ b/neutron/plugins/ml2/drivers/mech_ofagent.py @@ -41,7 +41,8 @@ class OfagentMechanismDriver(mech_agent.SimpleAgentMechanismDriverBase): super(OfagentMechanismDriver, self).__init__( constants.AGENT_TYPE_OFA, portbindings.VIF_TYPE_OVS, - {portbindings.CAP_PORT_FILTER: True}) + {portbindings.CAP_PORT_FILTER: True, + portbindings.OVS_HYBRID_PLUG: True}) def check_segment_for_agent(self, segment, agent): mappings = agent['configurations'].get('bridge_mappings', {}) diff --git a/neutron/plugins/ml2/drivers/mech_openvswitch.py b/neutron/plugins/ml2/drivers/mech_openvswitch.py index b070bb9e7c9..0565b973016 100644 --- a/neutron/plugins/ml2/drivers/mech_openvswitch.py +++ b/neutron/plugins/ml2/drivers/mech_openvswitch.py @@ -36,7 +36,8 @@ class OpenvswitchMechanismDriver(mech_agent.SimpleAgentMechanismDriverBase): super(OpenvswitchMechanismDriver, self).__init__( constants.AGENT_TYPE_OVS, portbindings.VIF_TYPE_OVS, - {portbindings.CAP_PORT_FILTER: True}) + {portbindings.CAP_PORT_FILTER: True, + portbindings.OVS_HYBRID_PLUG: True}) def check_segment_for_agent(self, segment, agent): mappings = agent['configurations'].get('bridge_mappings', {}) diff --git a/neutron/plugins/nec/nec_plugin.py b/neutron/plugins/nec/nec_plugin.py index 811250ca17f..2fe59d01a6e 100644 --- a/neutron/plugins/nec/nec_plugin.py +++ b/neutron/plugins/nec/nec_plugin.py @@ -401,7 +401,10 @@ class NECPluginV2(db_base_plugin_v2.NeutronDbPluginV2, portbindings.VIF_DETAILS: { # TODO(rkukura): Replace with new VIF security details portbindings.CAP_PORT_FILTER: - 'security-group' in self.supported_extension_aliases}} + 'security-group' in self.supported_extension_aliases, + portbindings.OVS_HYBRID_PLUG: True + } + } return binding def _extend_port_dict_binding_portinfo(self, port_res, portinfo): diff --git a/neutron/plugins/openvswitch/ovs_neutron_plugin.py b/neutron/plugins/openvswitch/ovs_neutron_plugin.py index ec23da0870b..2cfe2674b60 100644 --- a/neutron/plugins/openvswitch/ovs_neutron_plugin.py +++ b/neutron/plugins/openvswitch/ovs_neutron_plugin.py @@ -292,7 +292,8 @@ class OVSNeutronPluginV2(db_base_plugin_v2.NeutronDbPluginV2, portbindings.VIF_DETAILS: { # TODO(rkukura): Replace with new VIF security details portbindings.CAP_PORT_FILTER: - 'security-group' in self.supported_extension_aliases}} + 'security-group' in self.supported_extension_aliases, + portbindings.OVS_HYBRID_PLUG: True}} self._parse_network_vlan_ranges() ovs_db_v2.sync_vlan_allocations(self.network_vlan_ranges) self.tenant_network_type = cfg.CONF.OVS.tenant_network_type diff --git a/neutron/plugins/ryu/ryu_neutron_plugin.py b/neutron/plugins/ryu/ryu_neutron_plugin.py index 4dd0e745de8..9259d771ff6 100644 --- a/neutron/plugins/ryu/ryu_neutron_plugin.py +++ b/neutron/plugins/ryu/ryu_neutron_plugin.py @@ -116,7 +116,10 @@ class RyuNeutronPluginV2(db_base_plugin_v2.NeutronDbPluginV2, portbindings.VIF_DETAILS: { # TODO(rkukura): Replace with new VIF security details portbindings.CAP_PORT_FILTER: - 'security-group' in self.supported_extension_aliases}} + 'security-group' in self.supported_extension_aliases, + portbindings.OVS_HYBRID_PLUG: True + } + } portbindings_base.register_port_dict_function() self.tunnel_key = db_api_v2.TunnelKey( cfg.CONF.OVS.tunnel_key_min, cfg.CONF.OVS.tunnel_key_max)