From b70f920b53e945585a8b473f963d6cb96e3900f2 Mon Sep 17 00:00:00 2001 From: Scott Hussey Date: Wed, 17 Jan 2018 10:43:25 -0600 Subject: [PATCH] [CRITICAL] Fix link bonding configuration This PS is critical to support ongoing lab deployments - Fix string for round robin to 'balance-rr' - Support specifying monitor, up and down delays for round-robin and active/standby bonds Change-Id: I0aa58805d5ddd91395668fc8ba5662289027186f --- drydock_provisioner/ingester/plugins/deckhand.py | 11 ++++++++--- drydock_provisioner/ingester/plugins/yaml.py | 11 ++++++++--- drydock_provisioner/objects/fields.py | 2 +- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/drydock_provisioner/ingester/plugins/deckhand.py b/drydock_provisioner/ingester/plugins/deckhand.py index 78475281..646d59c2 100644 --- a/drydock_provisioner/ingester/plugins/deckhand.py +++ b/drydock_provisioner/ingester/plugins/deckhand.py @@ -253,13 +253,18 @@ class DeckhandIngester(IngesterPlugin): model.bonding_mode = bonding.get( 'mode', hd_fields.NetworkLinkBondingMode.Disabled) - if model.bonding_mode == hd_fields.NetworkLinkBondingMode.LACP: - model.bonding_xmit_hash = bonding.get('hash', 'layer3+4') - model.bonding_peer_rate = bonding.get('peer_rate', 'fast') + if model.bonding_mode in \ + (hd_fields.NetworkLinkBondingMode.LACP, + hd_fields.NetworkLinkBondingMode.RoundRobin, + hd_fields.NetworkLinkBondingMode.Standby): model.bonding_mon_rate = bonding.get('mon_rate', '100') model.bonding_up_delay = bonding.get('up_delay', '200') model.bonding_down_delay = bonding.get('down_delay', '200') + if model.bonding_mode == hd_fields.NetworkLinkBondingMode.LACP: + model.bonding_xmit_hash = bonding.get('hash', 'layer3+4') + model.bonding_peer_rate = bonding.get('peer_rate', 'fast') + model.mtu = data.get('mtu', None) model.linkspeed = data.get('linkspeed', None) diff --git a/drydock_provisioner/ingester/plugins/yaml.py b/drydock_provisioner/ingester/plugins/yaml.py index 1b4234ad..da44b7a7 100644 --- a/drydock_provisioner/ingester/plugins/yaml.py +++ b/drydock_provisioner/ingester/plugins/yaml.py @@ -253,13 +253,18 @@ class YamlIngester(IngesterPlugin): model.bonding_mode = bonding.get( 'mode', hd_fields.NetworkLinkBondingMode.Disabled) - if model.bonding_mode == hd_fields.NetworkLinkBondingMode.LACP: - model.bonding_xmit_hash = bonding.get('hash', 'layer3+4') - model.bonding_peer_rate = bonding.get('peer_rate', 'fast') + if model.bonding_mode in \ + (hd_fields.NetworkLinkBondingMode.LACP, + hd_fields.NetworkLinkBondingMode.RoundRobin, + hd_fields.NetworkLinkBondingMode.Standby): model.bonding_mon_rate = bonding.get('mon_rate', '100') model.bonding_up_delay = bonding.get('up_delay', '200') model.bonding_down_delay = bonding.get('down_delay', '200') + if model.bonding_mode == hd_fields.NetworkLinkBondingMode.LACP: + model.bonding_xmit_hash = bonding.get('hash', 'layer3+4') + model.bonding_peer_rate = bonding.get('peer_rate', 'fast') + model.mtu = data.get('mtu', None) model.linkspeed = data.get('linkspeed', None) diff --git a/drydock_provisioner/objects/fields.py b/drydock_provisioner/objects/fields.py index d4fe1f27..05c42786 100644 --- a/drydock_provisioner/objects/fields.py +++ b/drydock_provisioner/objects/fields.py @@ -168,7 +168,7 @@ class NodeStatusField(fields.BaseEnumField): class NetworkLinkBondingMode(BaseDrydockEnum): Disabled = 'disabled' LACP = '802.3ad' - RoundRobin = 'balanced-rr' + RoundRobin = 'balance-rr' Standby = 'active-backup' ALL = (Disabled, LACP, RoundRobin, Standby)