Ml2 Mechanism Driver for OVSvApp Solution
With the introduction of stackforge/networking-vsphere project which includes the OVSvApp L2 agent for doing vsphere networking using neutron. We need to have thin mechanism driver in neutron which integrates the ml2 plugin with the OVSvApp L2 Agent. The mechanism driver implements the abstract method given in mech_agent.SimpleAgentMechanismDriverBase. Closes-Bug: 1426365 Partially-implements: blueprint core-vendor-decomposition Change-Id: I57b2abb58671b8a1c6a2734959346ddeb8fda988
This commit is contained in:
parent
97372fe6ff
commit
862bb9f2f8
|
@ -0,0 +1,63 @@
|
|||
[vmware]
|
||||
# Provide IP address for vCenter.
|
||||
# vcenter_ip =
|
||||
|
||||
# Provide vCenter Credentials.
|
||||
# vcenter_username =
|
||||
# vcenter_password =
|
||||
|
||||
# SSL communication between OVSvApp Agent and vCenter Server
|
||||
# cert_check = False
|
||||
# Provide Certificate file location.
|
||||
# cert_path =
|
||||
|
||||
# Customized https_port for OVSvApp agent and vCenter Server communication
|
||||
# https_port = 443
|
||||
|
||||
# Number of retries by OVSvApp Agent to connect to vCenter server
|
||||
# vcenter_api_retry_count = 2
|
||||
|
||||
# wsdl_location =
|
||||
# vCenter server wsdl location
|
||||
# Example:
|
||||
# wsdl_location=https://<vCenter_ip>:<https_port>/sdk/vimService.wsdl
|
||||
|
||||
# Provide Cluster to DVS/vDS mapping.
|
||||
# cluster_dvs_mapping =
|
||||
#
|
||||
# Example:
|
||||
# cluster_dvs_mapping = <DatacenterName>/<host>/<ClusterName>:<vDSName>
|
||||
|
||||
# Provide ESX host name or IP address.
|
||||
# esx_hostname =
|
||||
|
||||
# To set the ESX host in maintenance mode during Fault Management.
|
||||
# esx_maintenance_mode = True
|
||||
|
||||
[ovsvapp]
|
||||
# Currently OVSvApp Agent supports only VLAN.
|
||||
# tenant_network_type = vlan
|
||||
|
||||
# OVS integration bridge.
|
||||
# integration_bridge = br-int
|
||||
|
||||
# Provide bridge mappings for VLAN networks.
|
||||
# bridge_mappings =
|
||||
#
|
||||
# Example:
|
||||
# bridge_mappings = physnet1:br-eth1
|
||||
# where eth1 is data interface.
|
||||
|
||||
# Firewall driver for OVSvApp.
|
||||
# firewall_driver = networking_vsphere.drivers.ovs_firewall.OVSFirewallDriver
|
||||
|
||||
# For disbaling security groups.
|
||||
# firewall_driver = neutron.agent.firewall.NoopFirewallDriver
|
||||
|
||||
[securitygroup]
|
||||
# Provide bridge mapping for security groups.
|
||||
# security_bridge_mapping =
|
||||
#
|
||||
# Example:
|
||||
# security_bridge_mapping = br-sec:eth2
|
||||
# where br-sec is default security bridge and eth2 is trunk interface.
|
|
@ -0,0 +1,26 @@
|
|||
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import sys
|
||||
|
||||
from networking_vsphere import service
|
||||
|
||||
from neutron.common import config as common_config
|
||||
|
||||
|
||||
def main():
|
||||
common_config.init(sys.argv[1:])
|
||||
common_config.setup_logging()
|
||||
service.run()
|
|
@ -0,0 +1,50 @@
|
|||
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
||||
#
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from networking_vsphere.common import constants as ovsvapp_const
|
||||
from networking_vsphere.ml2 import ovsvapp_driver
|
||||
from oslo_log import log
|
||||
|
||||
from neutron.extensions import portbindings
|
||||
from neutron.plugins.common import constants as p_const
|
||||
from neutron.plugins.ml2.drivers import mech_agent
|
||||
|
||||
LOG = log.getLogger(__name__)
|
||||
|
||||
|
||||
class OVSvAppAgentMechanismDriver(mech_agent.SimpleAgentMechanismDriverBase):
|
||||
"""Attach to networks using OVSvApp Agent.
|
||||
|
||||
The OVSvAppAgentMechanismDriver integrates the ml2 plugin with the
|
||||
OVSvApp Agent. Port binding with this driver requires the
|
||||
OVSvApp Agent to be running on the port's host, and that agent
|
||||
to have connectivity to at least one segment of the port's
|
||||
network.
|
||||
"""
|
||||
def __init__(self):
|
||||
super(OVSvAppAgentMechanismDriver, self).__init__(
|
||||
ovsvapp_const.AGENT_TYPE_OVSVAPP,
|
||||
portbindings.VIF_TYPE_OTHER,
|
||||
{portbindings.CAP_PORT_FILTER: True})
|
||||
self.ovsvapp_driver = ovsvapp_driver.OVSvAppAgentDriver()
|
||||
self.ovsvapp_driver.initialize()
|
||||
|
||||
def get_allowed_network_types(self, agent):
|
||||
return (agent['configurations'].get('tunnel_types', []) +
|
||||
[p_const.TYPE_VLAN])
|
||||
|
||||
def get_mappings(self, agent):
|
||||
return agent['configurations'].get('bridge_mappings', {})
|
|
@ -0,0 +1 @@
|
|||
networking-vsphere
|
|
@ -80,6 +80,7 @@ data_files =
|
|||
etc/neutron/plugins/plumgrid = etc/neutron/plugins/plumgrid/plumgrid.ini
|
||||
etc/neutron/plugins/vmware = etc/neutron/plugins/vmware/nsx.ini
|
||||
etc/neutron/plugins/opencontrail = etc/neutron/plugins/opencontrail/contrailplugin.ini
|
||||
etc/neutron/plugins/ovsvapp = etc/neutron/plugins/ovsvapp/ovsvapp_agent.ini
|
||||
scripts =
|
||||
bin/neutron-rootwrap-xen-dom0
|
||||
|
||||
|
@ -103,6 +104,7 @@ console_scripts =
|
|||
neutron-nec-agent = neutron.cmd.eventlet.plugins.nec_neutron_agent:main
|
||||
neutron-netns-cleanup = neutron.cmd.netns_cleanup:main
|
||||
neutron-ns-metadata-proxy = neutron.cmd.eventlet.agents.metadata_proxy:main
|
||||
neutron-ovsvapp-agent = neutron.cmd.eventlet.plugins.ovsvapp_neutron_agent:main
|
||||
neutron-nvsd-agent = neutron.plugins.oneconvergence.agent.nvsd_neutron_agent:main
|
||||
neutron-openvswitch-agent = neutron.plugins.openvswitch.agent.ovs_neutron_agent:main
|
||||
neutron-ovs-cleanup = neutron.cmd.ovs_cleanup:main
|
||||
|
@ -163,6 +165,7 @@ neutron.ml2.type_drivers =
|
|||
vxlan = neutron.plugins.ml2.drivers.type_vxlan:VxlanTypeDriver
|
||||
nexus_vxlan = neutron.plugins.ml2.drivers.cisco.nexus.type_nexus_vxlan:NexusVxlanTypeDriver
|
||||
neutron.ml2.mechanism_drivers =
|
||||
ovsvapp = neutron.plugins.ml2.drivers.ovsvapp.mech_driver:OVSvAppAgentMechanismDriver
|
||||
opendaylight = neutron.plugins.ml2.drivers.opendaylight.driver:OpenDaylightMechanismDriver
|
||||
logger = neutron.tests.unit.ml2.drivers.mechanism_logger:LoggerMechanismDriver
|
||||
test = neutron.tests.unit.ml2.drivers.mechanism_test:TestMechanismDriver
|
||||
|
|
Loading…
Reference in New Issue