Thu, Sep 17, 2020 at 10:00:44PM CEST, pgagne(a)redhat.com wrote:
From: Perry Gagne <pgagne(a)redhat.com>
Added docstrings and sphinx configs.
Signed-off-by: Perry Gagne <pgagne(a)redhat.com>
---
docs/source/specific_scenarios.rst | 1 +
docs/source/team_recipe.rst | 6 ++
lnst/Recipes/ENRT/TeamRecipe.py | 125 +++++++++++++++++++++++++++++
3 files changed, 132 insertions(+)
create mode 100644 docs/source/team_recipe.rst
diff --git a/docs/source/specific_scenarios.rst b/docs/source/specific_scenarios.rst
index c3d8190..b78577c 100644
--- a/docs/source/specific_scenarios.rst
+++ b/docs/source/specific_scenarios.rst
@@ -3,5 +3,6 @@ Specific ENRT scenarios
.. toctree::
simple_network_recipe
+ team_recipe
vlans_recipe
vlans_over_bond_recipe
diff --git a/docs/source/team_recipe.rst b/docs/source/team_recipe.rst
new file mode 100644
index 0000000..b45df44
--- /dev/null
+++ b/docs/source/team_recipe.rst
@@ -0,0 +1,6 @@
+TeamRecipe
+^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: lnst.Recipes.ENRT.TeamRecipe.TeamRecipe
+ :members:
+ :show-inheritance:
diff --git a/lnst/Recipes/ENRT/TeamRecipe.py b/lnst/Recipes/ENRT/TeamRecipe.py
index b8233c8..932e75f 100644
--- a/lnst/Recipes/ENRT/TeamRecipe.py
+++ b/lnst/Recipes/ENRT/TeamRecipe.py
@@ -14,6 +14,38 @@ from lnst.Devices import TeamDevice
class TeamRecipe(PerfReversibleFlowMixin, CommonHWSubConfigMixin, OffloadSubConfigMixin,
BaseEnrtRecipe):
+ """
+ This recipe implements Enrt testing for a network scenario that looks
+ as follows
+
+ .. code-block:: none
+
+ .--------.
+ .----------------+ |
+ | .-------+ switch +-------.
+ | | '--------' |
+ .-------------------. |
+ | | team0 | | |
+ | .---'--. .---'--. | .---'--.
+ .----|-| eth0 |-| eth1 |-|----. .----| eth0 |----.
+ | | '------' '------' | | | '------' |
+ | '-------------------' | | |
+ | | | |
+ | host1 | | host2 |
+ '-----------------------------' '----------------'
+
+
+ The recipe provides additional recipe parameters to configure the teaming
+ device.
+
+ :param runner_name:
+ (mandatory test parameter) the teamd runner to be use on
+ the team0 device (ex. `activebackup`, `roundrobin`, etc)
+
+ All sub configurations are included via Mixin classes.
+
+ The actual test machinery is implemented in the :any:`BaseEnrtRecipe` class.
+ """
host1 = HostReq()
host1.eth0 = DeviceReq(label="tnet",
driver=RecipeParam("driver"))
host1.eth1 = DeviceReq(label="tnet",
driver=RecipeParam("driver"))
@@ -30,6 +62,16 @@ class TeamRecipe(PerfReversibleFlowMixin, CommonHWSubConfigMixin,
OffloadSubConf
runner_name = StrParam(mandatory=True)
def test_wide_configuration(self):
+ """
+ Test wide configuration for this recipe involves creating a team
+ device using the two matched physical devices as ports on host1.
+ The `teamd` daemon is configured with the `runner_name` according
+ to the recipe parameters. IPv4 and IPv6 addresses are added to
+ the teaming device and to the matched ethernet device on host2.
+
+ | host1.team0 = 192.168.10.1/24 and fc00:0:0:1::1/64
+ | host2.eth0 = 192.168.10.2/24 and fc00:0:0:1::2/64
+ """
host1, host2 = self.matched.host1, self.matched.host2
teamd_config = {'runner': {'name': self.params.runner_name}}
@@ -56,6 +98,10 @@ class TeamRecipe(PerfReversibleFlowMixin, CommonHWSubConfigMixin,
OffloadSubConf
return configuration
def generate_test_wide_description(self, config):
+ """
+ Test wide description is extended with the configured IP addresses, the
+ configured team device ports, and runner name.
+ """
host1, host2 = self.matched.host1, self.matched.host2
desc = super().generate_test_wide_description(config)
desc += [
@@ -83,33 +129,112 @@ class TeamRecipe(PerfReversibleFlowMixin, CommonHWSubConfigMixin,
OffloadSubConf
super().test_wide_deconfiguration(config)
def generate_ping_endpoints(self, config):
+ """
+ The ping endpoints for this recipe are the configured team device on
+ host1 and the matched ethernet device on host2.
+
+ Returned as::
+
+ [PingEndpoints(self.matched.host1.team0, self.matched.host2.eth0),
+ PingEndpoints(self.matched.host2.eth0, self.matched.host1.team0)]
+ """
return [
PingEndpoints(self.matched.host1.team0, self.matched.host2.eth0),
PingEndpoints(self.matched.host2.eth0, self.matched.host1.team0)
]
def generate_perf_endpoints(self, config):
+ """
+ The perf endpoints for this recipe are the configured team device on
+ host1 and the matched ethernet device on host2. The traffic egresses
+ the team device.
+
+ | host1.team0
+ | host2.eth0
+
+ Returned as::
+
+ [(self.matched.host1.team0, self.matched.host2.eth0)]
+
+ """
return [(self.matched.host1.team0, self.matched.host2.eth0)]
@property
def offload_nics(self):
+ """
+ The `offload_nics` property value for this scenario is a list containing
+ the configured team device on host1 and the matched ethernet device
+ on host2.
+
+ | host1.team0
+ | host2.eth0
+
+ For detailed explanation of this property see :any:`OffloadSubConfigMixin`
+ class and :any:`OffloadSubConfigMixin.offload_nics`.
+ """
return [self.matched.host1.team0, self.matched.host2.eth0]
@property
def mtu_hw_config_dev_list(self):
+ """
+ The `mtu_hw_config_dev_list` property value for this scenario is a list
+ containing the configured teaming device on host1 and the matched ethernet
+ device on host2.
+
+ | host1.team0
+ | host2.eth0
+
+ For detailed explanation of this property see :any:`MTUHWConfigMixin`
+ class and :any:`MTUHWConfigMixin.mtu_hw_config_dev_list`.
+ """
return [self.matched.host1.team0, self.matched.host2.eth0]
@property
def coalescing_hw_config_dev_list(self):
+ """
+ The `coalescing_hw_config_dev_list` property value for this scenario is a
+ list containing the matched physical devices used to create the teaming
+ device on host1 and the matched ethernet device on host2.
+
+ | host1.eth0, host.eth1
+ | host2.eth0
+
+ For detailed explanation of this property see :any:`CoalescingHWConfigMixin`
+ class and :any:`CoalescingHWConfigMixin.coalescing_hw_config_dev_list`.
+ """
host1, host2 = self.matched.host1, self.matched.host2
return [host1.eth0, host1.eth1, host2.eth0]
@property
def dev_interrupt_hw_config_dev_list(self):
+ """
+ The `dev_interrupt_hw_config_dev_list` property value for this scenario
+ is a list containing the matched physical devices used to create the
+ teaming device on host1 and the matched ethernet device on host2.
+
+ | host1.eth0, host1.eth1
+ | host2.eth0
+
+ For detailed explanation of this property see
+ :any:`DevInterruptHWConfigMixin` class and
+ :any:`CoalescingHWConfigMixin.coalescing_hw_config_dev_list`.
Copy paste error here. CoalescingHWConfigMixin -> DevInterruptHWConfigMixin
Otherwise looks ok.
-Jan
+ """
host1, host2 = self.matched.host1, self.matched.host2
return [host1.eth0, host1.eth1, host2.eth0]
@property
def parallel_stream_qdisc_hw_config_dev_list(self):
+ """
+ The `parallel_stream_qdisc_hw_config_dev_list` property value for this
+ scenario is a list containing the matched physical devices used to create
+ the teaming device on host1 and the matched ethernet device on host2.
+
+ | host1.eth0, host.eth1
+ | host2.eth0
+
+ For detailed explanation of this property see
+ :any:`ParallelStreamQDiscHWConfigMixin` class and
+
:any:`ParallelStreamQDiscHWConfigMixin.parallel_stream_qdisc_hw_config_dev_list`.
+ """
host1, host2 = self.matched.host1, self.matched.host2
return [host1.eth0, host1.eth1, host2.eth0]
--
2.26.2
_______________________________________________
LNST-developers mailing list -- lnst-developers(a)lists.fedorahosted.org
To unsubscribe send an email to lnst-developers-leave(a)lists.fedorahosted.org
Fedora Code of Conduct:
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines:
https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives:
https://lists.fedorahosted.org/archives/list/lnst-developers@lists.fedora...