From: Ondrej Lichtner olichtne@redhat.com
To be able to differentiate these different recipe configurations in an external database we need to make these two class variables into recipe parameters.
Signed-off-by: Ondrej Lichtner olichtne@redhat.com --- lnst/Recipes/ENRT/IpsecEspAhCompRecipe.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/lnst/Recipes/ENRT/IpsecEspAhCompRecipe.py b/lnst/Recipes/ENRT/IpsecEspAhCompRecipe.py index 59cb09d..dcf08c4 100644 --- a/lnst/Recipes/ENRT/IpsecEspAhCompRecipe.py +++ b/lnst/Recipes/ENRT/IpsecEspAhCompRecipe.py @@ -3,7 +3,7 @@ import copy from lnst.Common.IpAddress import ipaddress from lnst.Common.IpAddress import AF_INET, AF_INET6 -from lnst.Common.Parameters import StrParam +from lnst.Common.Parameters import StrParam, Param from lnst.Common.LnstError import LnstError from lnst.Controller import HostReq, DeviceReq, RecipeParam from lnst.Recipes.ENRT.BaremetalEnrtRecipe import BaremetalEnrtRecipe @@ -26,11 +26,12 @@ class IpsecEspAhCompRecipe(CommonHWSubConfigMixin, BaremetalEnrtRecipe, host2 = HostReq() host2.eth0 = DeviceReq(label="to_switch", driver=RecipeParam("driver"))
- ciphers = [('aes', 128), ('aes', 256)] - hashes = [('hmac(md5)', 128), ('sha256', 256)] - spi_values = ["0x00000001", "0x00000002", "0x00000003", "0x00000004"] + ciphers = Param(default=[('aes', 128), ('aes', 256)]) + hashes = Param(default=[('hmac(md5)', 128), ('sha256', 256)]) ipsec_mode = StrParam(default="transport")
+ spi_values = ["0x00000001", "0x00000002", "0x00000003", "0x00000004"] + def test_wide_configuration(self): host1, host2 = self.matched.host1, self.matched.host2
@@ -93,8 +94,8 @@ def generate_sub_configurations(self, config): ip1 = config.endpoint1.ips_filter(family=family)[0] ip2 = config.endpoint2.ips_filter(family=family)[0]
- for ciph_alg, ciph_len in self.ciphers: - for hash_alg, hash_len in self.hashes: + for ciph_alg, ciph_len in self.params.ciphers: + for hash_alg, hash_len in self.params.hashes: ciph_key = generate_key(ciph_len) hash_key = generate_key(hash_len) new_config = copy.copy(subconf)
From: Ondrej Lichtner olichtne@redhat.com
The generate_sub_configurations method iterates over this list and generates two subconfigurations leading to two perf measurements in a single recipe run. Making this into a recipe parameter means we're able to differentiate these two perf measurements in external databases.
I also removed the "None" value and the associated conditions. This was originally used in the lnst-legacy recipe implementation to check the functionality of the underlying connection but it doesn't really make sense as a part of the recipe.
Finally, the parameter was renamed to "macsec_encryption" to make it more self explanatory.
Signed-off-by: Ondrej Lichtner olichtne@redhat.com --- lnst/Recipes/ENRT/SimpleMacsecRecipe.py | 155 +++++++++++------------- 1 file changed, 72 insertions(+), 83 deletions(-)
diff --git a/lnst/Recipes/ENRT/SimpleMacsecRecipe.py b/lnst/Recipes/ENRT/SimpleMacsecRecipe.py index 75161fb..26989a2 100644 --- a/lnst/Recipes/ENRT/SimpleMacsecRecipe.py +++ b/lnst/Recipes/ENRT/SimpleMacsecRecipe.py @@ -3,6 +3,7 @@ from lnst.Common.IpAddress import ipaddress from lnst.Common.IpAddress import AF_INET, AF_INET6 from lnst.Common.LnstError import LnstError +from lnst.Common.Parameters import Param from lnst.Controller import HostReq, DeviceReq, RecipeParam from lnst.Devices import MacsecDevice from lnst.Recipes.ENRT.BaremetalEnrtRecipe import BaremetalEnrtRecipe @@ -21,7 +22,7 @@ class SimpleMacsecRecipe(CommonHWSubConfigMixin, BaremetalEnrtRecipe): host2 = HostReq() host2.eth0 = DeviceReq(label="to_switch", driver=RecipeParam("driver"))
- macsec_settings = [None, 'on', 'off'] + macsec_encryption = Param(default=['on', 'off']) ids = ['00', '01'] keys = ["7a16780284000775d4f0a3c0f0e092c0", "3212ef5c4cc5d0e4210b17208e88779e"] @@ -66,72 +67,60 @@ def test_wide_deconfiguration(self, config):
def generate_sub_configurations(self, config): for subconf in ConfMixin.generate_sub_configurations(self, config): - for encryption in self.macsec_settings: + for encryption in self.params.macsec_encryption: new_config = copy.copy(subconf) new_config.encrypt = encryption - if encryption is not None: - new_config.ip_vers = self.params.ip_versions + new_config.ip_vers = self.params.ip_versions yield new_config
def apply_sub_configuration(self, config): super().apply_sub_configuration(config) - if not config.encrypt: - config.endpoint1.up() - config.endpoint2.up() - else: - net_addr = "192.168.100" - net_addr6 = "fc00:0:0:0" - host1, host2 = config.host1, config.host2 - k_ids = list(zip(self.ids, self.keys)) - hosts_and_keys = [(host1, host2, k_ids), (host2, host1, - k_ids[::-1])] - for host_a, host_b, k_ids in hosts_and_keys: - host_a.msec0 = MacsecDevice(realdev=host_a.eth0, - encrypt=config.encrypt) - rx_kwargs = dict(port=1, address=host_b.eth0.hwaddr) - tx_sa_kwargs = dict(sa=0, pn=1, enable='on', - id=k_ids[0][0], key=k_ids[0][1]) - rx_sa_kwargs = rx_kwargs.copy() - rx_sa_kwargs.update(tx_sa_kwargs) - rx_sa_kwargs['id'] = k_ids[1][0] - rx_sa_kwargs['key'] = k_ids[1][1] - host_a.msec0.rx('add', **rx_kwargs) - host_a.msec0.tx_sa('add', **tx_sa_kwargs) - host_a.msec0.rx_sa('add', **rx_sa_kwargs) - for i, host in enumerate([host1, host2]): - host.msec0.ip_add(ipaddress(net_addr + "." + str(i+1) + - "/24")) - host.msec0.ip_add(ipaddress(net_addr6 + "::" + str(i+1) + - "/64")) - host.eth0.up() - host.msec0.up() - self.wait_tentative_ips([host.eth0, host.msec0]) + net_addr = "192.168.100" + net_addr6 = "fc00:0:0:0" + host1, host2 = config.host1, config.host2 + k_ids = list(zip(self.ids, self.keys)) + hosts_and_keys = [(host1, host2, k_ids), (host2, host1, + k_ids[::-1])] + for host_a, host_b, k_ids in hosts_and_keys: + host_a.msec0 = MacsecDevice(realdev=host_a.eth0, + encrypt=config.encrypt) + rx_kwargs = dict(port=1, address=host_b.eth0.hwaddr) + tx_sa_kwargs = dict(sa=0, pn=1, enable='on', + id=k_ids[0][0], key=k_ids[0][1]) + rx_sa_kwargs = rx_kwargs.copy() + rx_sa_kwargs.update(tx_sa_kwargs) + rx_sa_kwargs['id'] = k_ids[1][0] + rx_sa_kwargs['key'] = k_ids[1][1] + host_a.msec0.rx('add', **rx_kwargs) + host_a.msec0.tx_sa('add', **tx_sa_kwargs) + host_a.msec0.rx_sa('add', **rx_sa_kwargs) + for i, host in enumerate([host1, host2]): + host.msec0.ip_add(ipaddress(net_addr + "." + str(i+1) + + "/24")) + host.msec0.ip_add(ipaddress(net_addr6 + "::" + str(i+1) + + "/64")) + host.eth0.up() + host.msec0.up() + self.wait_tentative_ips([host.eth0, host.msec0])
def remove_sub_configuration(self, config): - if config.encrypt: - host1, host2 = config.host1, config.host2 - for host in (host1, host2): - host.msec0.destroy() - del host.msec0 + host1, host2 = config.host1, config.host2 + for host in (host1, host2): + host.msec0.destroy() + del host.msec0 config.endpoint1.down() config.endpoint2.down() super().remove_sub_configuration(config)
def generate_ping_configurations(self, config): - if not config.encrypt: - client_nic = config.endpoint1 - server_nic = config.endpoint2 - ip_vers = ('ipv4',) - else: - client_nic = config.host1.msec0 - server_nic = config.host2.msec0 - ip_vers = self.params.ip_versions + client_nic = config.host1.msec0 + server_nic = config.host2.msec0 + ip_vers = self.params.ip_versions
count = self.params.ping_count interval = self.params.ping_interval size = self.params.ping_psize - common_args = {'count' : count, 'interval' : interval, - 'size' : size} + common_args = {'count': count, 'interval': interval, 'size': size}
for ipv in ip_vers: kwargs = {} @@ -162,45 +151,45 @@ def generate_ping_configurations(self, config): yield [pconf]
def generate_perf_configurations(self, config): - if config.encrypt: - client_nic = config.host1.msec0 - server_nic = config.host2.msec0 - client_netns = client_nic.netns - server_netns = server_nic.netns - - flow_combinations = self.generate_flow_combinations( - config + client_nic = config.host1.msec0 + server_nic = config.host2.msec0 + client_netns = client_nic.netns + server_netns = server_nic.netns + + flow_combinations = self.generate_flow_combinations( + config + ) + + for flows in flow_combinations: + perf_recipe_conf=dict( + recipe_config=config, + flows=flows, )
- for flows in flow_combinations: - perf_recipe_conf=dict( - recipe_config=config, - flows=flows, - ) - - flows_measurement = self.params.net_perf_tool( - flows, - perf_recipe_conf - ) + flows_measurement = self.params.net_perf_tool( + flows, + perf_recipe_conf + )
- cpu_measurement = self.params.cpu_perf_tool( - [client_netns, server_netns], - perf_recipe_conf, - ) + cpu_measurement = self.params.cpu_perf_tool( + [client_netns, server_netns], + perf_recipe_conf, + )
- perf_conf = PerfRecipeConf( - measurements=[cpu_measurement, flows_measurement], - iterations=self.params.perf_iterations, - ) + perf_conf = PerfRecipeConf( + measurements=[cpu_measurement, flows_measurement], + iterations=self.params.perf_iterations, + parent_recipe_config=copy.deepcopy(config), + )
- perf_conf.register_evaluators( - cpu_measurement, self.cpu_perf_evaluators - ) - perf_conf.register_evaluators( - flows_measurement, self.net_perf_evaluators - ) + perf_conf.register_evaluators( + cpu_measurement, self.cpu_perf_evaluators + ) + perf_conf.register_evaluators( + flows_measurement, self.net_perf_evaluators + )
- yield perf_conf + yield perf_conf
def generate_perf_endpoints(self, config): return [(self.matched.host1.msec0, self.matched.host2.msec0)]
Mon, Feb 15, 2021 at 10:25:40AM CET, olichtne@redhat.com wrote:
From: Ondrej Lichtner olichtne@redhat.com
To be able to differentiate these different recipe configurations in an external database we need to make these two class variables into recipe parameters.
Signed-off-by: Ondrej Lichtner olichtne@redhat.com
lnst/Recipes/ENRT/IpsecEspAhCompRecipe.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/lnst/Recipes/ENRT/IpsecEspAhCompRecipe.py b/lnst/Recipes/ENRT/IpsecEspAhCompRecipe.py index 59cb09d..dcf08c4 100644 --- a/lnst/Recipes/ENRT/IpsecEspAhCompRecipe.py +++ b/lnst/Recipes/ENRT/IpsecEspAhCompRecipe.py @@ -3,7 +3,7 @@ import copy from lnst.Common.IpAddress import ipaddress from lnst.Common.IpAddress import AF_INET, AF_INET6 -from lnst.Common.Parameters import StrParam +from lnst.Common.Parameters import StrParam, Param from lnst.Common.LnstError import LnstError from lnst.Controller import HostReq, DeviceReq, RecipeParam from lnst.Recipes.ENRT.BaremetalEnrtRecipe import BaremetalEnrtRecipe @@ -26,11 +26,12 @@ class IpsecEspAhCompRecipe(CommonHWSubConfigMixin, BaremetalEnrtRecipe, host2 = HostReq() host2.eth0 = DeviceReq(label="to_switch", driver=RecipeParam("driver"))
- ciphers = [('aes', 128), ('aes', 256)]
- hashes = [('hmac(md5)', 128), ('sha256', 256)]
- spi_values = ["0x00000001", "0x00000002", "0x00000003", "0x00000004"]
ciphers = Param(default=[('aes', 128), ('aes', 256)])
hashes = Param(default=[('hmac(md5)', 128), ('sha256', 256)]) ipsec_mode = StrParam(default="transport")
spi_values = ["0x00000001", "0x00000002", "0x00000003", "0x00000004"]
def test_wide_configuration(self): host1, host2 = self.matched.host1, self.matched.host2
@@ -93,8 +94,8 @@ def generate_sub_configurations(self, config): ip1 = config.endpoint1.ips_filter(family=family)[0] ip2 = config.endpoint2.ips_filter(family=family)[0]
for ciph_alg, ciph_len in self.ciphers:for hash_alg, hash_len in self.hashes:
for ciph_alg, ciph_len in self.params.ciphers:for hash_alg, hash_len in self.params.hashes: ciph_key = generate_key(ciph_len) hash_key = generate_key(hash_len) new_config = copy.copy(subconf)-- 2.30.0 _______________________________________________ LNST-developers mailing list -- lnst-developers@lists.fedorahosted.org To unsubscribe send an email to lnst-developers-leave@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.fedorahos... Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure
Ack to series.
Acked-by: Jan Tluka jtluka@redhat.com
On Mon, Feb 15, 2021 at 10:25:40AM +0100, olichtne@redhat.com wrote:
From: Ondrej Lichtner olichtne@redhat.com
To be able to differentiate these different recipe configurations in an external database we need to make these two class variables into recipe parameters.
Signed-off-by: Ondrej Lichtner olichtne@redhat.com
lnst/Recipes/ENRT/IpsecEspAhCompRecipe.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/lnst/Recipes/ENRT/IpsecEspAhCompRecipe.py b/lnst/Recipes/ENRT/IpsecEspAhCompRecipe.py index 59cb09d..dcf08c4 100644 --- a/lnst/Recipes/ENRT/IpsecEspAhCompRecipe.py +++ b/lnst/Recipes/ENRT/IpsecEspAhCompRecipe.py @@ -3,7 +3,7 @@ import copy from lnst.Common.IpAddress import ipaddress from lnst.Common.IpAddress import AF_INET, AF_INET6 -from lnst.Common.Parameters import StrParam +from lnst.Common.Parameters import StrParam, Param from lnst.Common.LnstError import LnstError from lnst.Controller import HostReq, DeviceReq, RecipeParam from lnst.Recipes.ENRT.BaremetalEnrtRecipe import BaremetalEnrtRecipe @@ -26,11 +26,12 @@ class IpsecEspAhCompRecipe(CommonHWSubConfigMixin, BaremetalEnrtRecipe, host2 = HostReq() host2.eth0 = DeviceReq(label="to_switch", driver=RecipeParam("driver"))
- ciphers = [('aes', 128), ('aes', 256)]
- hashes = [('hmac(md5)', 128), ('sha256', 256)]
- spi_values = ["0x00000001", "0x00000002", "0x00000003", "0x00000004"]
ciphers = Param(default=[('aes', 128), ('aes', 256)])
hashes = Param(default=[('hmac(md5)', 128), ('sha256', 256)]) ipsec_mode = StrParam(default="transport")
spi_values = ["0x00000001", "0x00000002", "0x00000003", "0x00000004"]
def test_wide_configuration(self): host1, host2 = self.matched.host1, self.matched.host2
@@ -93,8 +94,8 @@ def generate_sub_configurations(self, config): ip1 = config.endpoint1.ips_filter(family=family)[0] ip2 = config.endpoint2.ips_filter(family=family)[0]
for ciph_alg, ciph_len in self.ciphers:for hash_alg, hash_len in self.hashes:
for ciph_alg, ciph_len in self.params.ciphers:for hash_alg, hash_len in self.params.hashes: ciph_key = generate_key(ciph_len) hash_key = generate_key(hash_len) new_config = copy.copy(subconf)-- 2.30.0
pushed.
-Ondrej
lnst-developers@lists.fedorahosted.org