Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(neutron): enable trunk plugin #552

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion components/neutron/aio-values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ conf:
type_drivers: "vlan,local,understack_vxlan"
neutron:
DEFAULT:
service_plugins: "l3_understack,segments"
service_plugins: "l3_understack,segments,trunk"
# we don't want HA L3 routers. It's a Python value so we need to quote it in YAML.
l3_ha: "False"
# we aren't using availability zones so having calls attempt to add things to
Expand Down
24 changes: 12 additions & 12 deletions components/openstack-2024.2-jammy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,18 +35,18 @@ images:
ironic_retrive_swift_config: "docker.io/openstackhelm/heat:2024.2-ubuntu_jammy"

# neutron
neutron_db_sync: "ghcr.io/rackerlabs/understack/neutron:2024.2-ubuntu_jammy"
neutron_dhcp: "ghcr.io/rackerlabs/understack/neutron:2024.2-ubuntu_jammy"
neutron_l3: "ghcr.io/rackerlabs/understack/neutron:2024.2-ubuntu_jammy"
neutron_l2gw: "ghcr.io/rackerlabs/understack/neutron:2024.2-ubuntu_jammy"
neutron_linuxbridge_agent: "ghcr.io/rackerlabs/understack/neutron:2024.2-ubuntu_jammy"
neutron_metadata: "ghcr.io/rackerlabs/understack/neutron:2024.2-ubuntu_jammy"
neutron_ovn_metadata: "ghcr.io/rackerlabs/understack/neutron:2024.2-ubuntu_jammy"
neutron_openvswitch_agent: "ghcr.io/rackerlabs/understack/neutron:2024.2-ubuntu_jammy"
neutron_server: "ghcr.io/rackerlabs/understack/neutron:2024.2-ubuntu_jammy"
neutron_rpc_server: "ghcr.io/rackerlabs/understack/neutron:2024.2-ubuntu_jammy"
neutron_bagpipe_bgp: "ghcr.io/rackerlabs/understack/neutron:2024.2-ubuntu_jammy"
neutron_netns_cleanup_cron: "ghcr.io/rackerlabs/understack/neutron:2024.2-ubuntu_jammy"
neutron_db_sync: "ghcr.io/rackerlabs/understack/neutron:pr-552"
neutron_dhcp: "ghcr.io/rackerlabs/understack/neutron:pr-552"
neutron_l3: "ghcr.io/rackerlabs/understack/neutron:pr-552"
neutron_l2gw: "ghcr.io/rackerlabs/understack/neutron:pr-552"
neutron_linuxbridge_agent: "ghcr.io/rackerlabs/understack/neutron:pr-552"
neutron_metadata: "ghcr.io/rackerlabs/understack/neutron:pr-552"
neutron_ovn_metadata: "ghcr.io/rackerlabs/understack/neutron:pr-552"
neutron_openvswitch_agent: "ghcr.io/rackerlabs/understack/neutron:pr-552"
neutron_server: "ghcr.io/rackerlabs/understack/neutron:pr-552"
neutron_rpc_server: "ghcr.io/rackerlabs/understack/neutron:pr-552"
neutron_bagpipe_bgp: "ghcr.io/rackerlabs/understack/neutron:pr-552"
neutron_netns_cleanup_cron: "ghcr.io/rackerlabs/understack/neutron:pr-552"

# nova
nova_api: "docker.io/openstackhelm/nova:2024.2-ubuntu_jammy"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

from neutron_understack import config
from neutron_understack.nautobot import Nautobot
from neutron_understack.trunk import UnderStackTrunkDriver
from neutron_understack.undersync import Undersync

LOG = logging.getLogger(__name__)
Expand Down Expand Up @@ -110,6 +111,7 @@ def initialize(self):
conf = cfg.CONF.ml2_understack
self.nb = Nautobot(conf.nb_url, conf.nb_token)
self.undersync = Undersync(conf.undersync_token, conf.undersync_url)
self.trunk_driver = UnderStackTrunkDriver.create(self)

def create_network_precommit(self, context):
log_call("create_network_precommit", context)
Expand Down
28 changes: 28 additions & 0 deletions python/neutron-understack/neutron_understack/trunk.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
from neutron.services.trunk.drivers import base as trunk_base
from neutron_lib.api.definitions import portbindings
from neutron_lib.services.trunk import constants as trunk_consts
from oslo_config import cfg

SUPPORTED_INTERFACES = (portbindings.VIF_TYPE_OTHER,)

SUPPORTED_SEGMENTATION_TYPES = (trunk_consts.SEGMENTATION_TYPE_VLAN,)


class UnderStackTrunkDriver(trunk_base.DriverBase):
@property
def is_loaded(self):
try:
return "understack" in cfg.CONF.ml2.mechanism_drivers
except cfg.NoSuchOptError:
return False

@classmethod
def create(cls, plugin_driver):
cls.plugin_driver = plugin_driver
return cls(
"understack",
SUPPORTED_INTERFACES,
SUPPORTED_SEGMENTATION_TYPES,
None,
can_trunk_bound_port=True,
)
Loading