From 36a5f007f728cc583be610b99195f00fb5e4663b Mon Sep 17 00:00:00 2001 From: Shubham Ganar Date: Wed, 20 Mar 2024 22:46:32 +0530 Subject: [PATCH] Add closed loop BZ#2250397 Signed-off-by: Shubham Ganar --- tests/foreman/cli/test_registration.py | 50 +++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/tests/foreman/cli/test_registration.py b/tests/foreman/cli/test_registration.py index e3bc35fa58b..dac332e1a3c 100644 --- a/tests/foreman/cli/test_registration.py +++ b/tests/foreman/cli/test_registration.py @@ -11,9 +11,11 @@ :Team: Rocket """ +import json import re +from tempfile import mkstemp -from fauxfactory import gen_string +from fauxfactory import gen_mac, gen_string import pytest from robottelo.config import settings @@ -224,3 +226,49 @@ def test_negative_global_registration_without_ak(module_target_sat): 'Failed to generate registration command:\n Missing activation key!' in context.value.message ) + + +def test_positive_custom_facts_for_host_registration( + module_sca_manifest_org, + module_location, + module_target_sat, + rhel8_contenthost, + module_activation_key, +): + """Attempt to register a host and check all the interfaces are created from the custom facts + + :id: db73c146-4557-4bf4-a8e2-950ecba31620 + + :steps: + 1. Register the host. + 2. Check the host is registered and all the interfaces are created successfully. + + :expectedresults: Host registered successfully with all interfaces created from the custom facts. + + :BZ: 2250397 + + :customerscenario: true + """ + interfaces = [ + {'name': gen_string('alphanumeric')}, + {'name': "Datos", 'vlan_id': gen_string('numeric', 4)}, + {'name': "bondBk", 'vlan_id': gen_string('numeric', 4)}, + ] + facts = { + f'net.interface.{interfaces[0]["name"]}.mac_address': gen_mac(), + f'net.interface.{interfaces[1]["name"]}.{interfaces[1]["vlan_id"]}.mac_address': gen_mac(), + f'net.interface.{interfaces[2]["name"]}.{interfaces[2]["vlan_id"]}.mac_address': gen_mac(), + } + _, facts_file = mkstemp(suffix='.facts') + with open(facts_file, 'w') as f: + json.dump(facts, f, indent=4) + rhel8_contenthost.put(facts_file, '/etc/rhsm/facts/') + result = rhel8_contenthost.register( + module_sca_manifest_org, module_location, [module_activation_key.name], module_target_sat + ) + assert result.status == 0, f'Failed to register host: {result.stderr}' + host_info = module_target_sat.cli.Host.info({'name': rhel8_contenthost.hostname}) + assert len(host_info['network-interfaces']) == len(interfaces) + 1 # facts + default interface + for interface in interfaces: + for interface_name in interface.values(): + assert interface_name in str(host_info['network-interfaces'])