Bug 2139352

Summary: Parameter duplication for configuring openvswitch
Product: Red Hat OpenStack Reporter: Miguel Angel Nieto <mnietoji>
Component: openstack-tripleoAssignee: Vijayalakshmi Candappa <vcandapp>
Status: ASSIGNED --- QA Contact: Joe H. Rahme <jhakimra>
Severity: high Docs Contact:
Priority: medium    
Version: 17.1 (Wallaby)CC: bshephar, cfontain, ekuris, hakhande, mburns, ramishra, sbaker, supadhya, tkajinam, vcandapp, vkhitrin
Target Milestone: ---Keywords: Triaged
Target Release: ---Flags: vcandapp: needinfo-
vcandapp: needinfo-
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Miguel Angel Nieto 2022-11-02 09:29:06 UTC
Description of problem:
In 16.2 we used to configure ovs in the following way:
arameter_defaults:
  ComputeOvsDpdkSriovR730Parameters:
    KernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=64 iommu=pt intel_iommu=on tsx=off isolcpus=2-19,22-39"
    NeutronBridgeMappings: "dpdk-mgmt:br-link0,dpdk-data0:br-dpdk0,dpdk-data1:br-dpdk1"
    IsolCpusList: "2-19,22-39"
    NovaComputeCpuDedicatedSet: ["8-19,28-39"]
    NovaReservedHostMemory: 4096
    OvsDpdkSocketMemory: "4096,4096"
    OvsDpdkMemoryChannels: "4"
    OvsPmdCoreList: "2,3,4,5,6,7,22,23,24,25,26,27"
    NovaComputeCpuSharedSet: [0, 20, 1, 21]
    OvsPmdAutoLb: true
    OvsPmdLoadThreshold: 70
    OvsPmdImprovementThreshold: 25
    OvsPmdRebalInterval: 2

In 17.0 this configuration can be done through provisioning in the following way:
  ansible_playbooks:
    - playbook: /home/stack/ospd-17.1-geneve-ovn-dpdk-sriov-ctlplane-dataplane-bonding-hybrid-mq/playbooks/bls_workaround.yaml
    - playbook: /usr/share/ansible/tripleo-playbooks/cli-overcloud-node-kernelargs.yaml
      extra_vars:
        kernel_args: "default_hugepagesz=1GB hugepagesz=1G hugepages=64 iommu=pt intel_iommu=on tsx=off isolcpus=2-19,22-39"
        reboot_wait_timeout: 900
        tuned_profile: "cpu-partitioning"
        tuned_isolated_cores: "2-19,22-39"
    - playbook: /usr/share/ansible/tripleo-playbooks/cli-overcloud-openvswitch-dpdk.yaml
      extra_vars:
        memory_channels: "4"
        lcore: "0,20,1,21"
        pmd: "2,3,4,5,6,7,22,23,24,25,26,27"
        socket_mem: "4096,4096"
        pmd_auto_lb: true
        pmd_load_threshold: "70"
        pmd_improvement_threshold: "25"
        pmd_rebal_interval: "2"

I tried to configure only in the provisioning stage and remove those parameters from de deployment stage, but it is not possible, I get an error:
2022-11-02 08:39:59,728 p=129214 u=stack n=ansible | 2022-11-02 08:39:59.727949 | 525400c8-ce75-8572-41f5-000000000d44 |       TASK | Skipping reboot for deployed node
2022-11-02 08:39:59,743 p=129214 u=stack n=ansible | 2022-11-02 08:39:59.742855 | 525400c8-ce75-8572-41f5-000000001409 |       TASK | Check valid input for tripleo_ovs_dpdk_pmd_core_list
2022-11-02 08:39:59,753 p=129214 u=stack n=ansible | 2022-11-02 08:39:59.750884 | 525400c8-ce75-8572-41f5-000000000962 |    SKIPPED | ddp package selection | compute-r740
2022-11-02 08:39:59,755 p=129214 u=stack n=ansible | 2022-11-02 08:39:59.754699 | 525400c8-ce75-8572-41f5-000000000d44 |    SKIPPED | Skipping reboot for deployed node | controller-2
2022-11-02 08:39:59,782 p=129214 u=stack n=ansible | 2022-11-02 08:39:59.782050 | 525400c8-ce75-8572-41f5-000000000964 |       TASK | Run ovs-dpdk role
2022-11-02 08:39:59,789 p=129214 u=stack n=ansible | 2022-11-02 08:39:59.788226 | 525400c8-ce75-8572-41f5-000000001409 |      FATAL | Check valid input for tripleo_ovs_dpdk_pmd_core_list | compute-r730 | error={"changed": false, "msg": "List of PMD cores cannot be empty - tripleo_ovs_dpdk_pmd_core_list"}
2022-11-02 08:39:59,861 p=129214 u=stack n=ansible | 2022-11-02 08:39:59.859855 | 525400c8-ce75-8572-41f5-000000000040 |    SKIPPED | include_tasks | controller-2
2022-11-02 08:39:59,919 p=129214 u=stack n=ansible | 2022-11-02 08:39:59.918613 | 4044822b-ed66-4404-ba09-1dec7a6b84ab |   INCLUDED | /usr/share/ansible/roles/tripleo_ovs_dpdk/tasks/config.yml | compute-r740
2022-11-02 08:39:59,945 p=129214 u=stack n=ansible | 2022-11-02 08:39:59.945553 | 525400c8-ce75-8572-41f5-000000001475 |       TASK | Check valid input for tripleo_ovs_dpdk_pmd_core_list
2022-11-02 08:39:59,952 p=129214 u=stack n=ansible | 2022-11-02 08:39:59.950882 | 525400c8-ce75-8572-41f5-000000000041 |    SKIPPED | include_tasks | controller-2
2022-11-02 08:39:59,978 p=129214 u=stack n=ansible | 2022-11-02 08:39:59.977621 | 525400c8-ce75-8572-41f5-000000001475 |      FATAL | Check valid input for tripleo_ovs_dpdk_pmd_core_list | compute-r740 | error={"changed": false, "msg": "List of PMD cores cannot be empty - tripleo_ovs_dpdk_pmd_core_list"}


I think that this issue creates confusion about how to configure parameters

Version-Release number of selected component (if applicable):
RHOS-17.1-RHEL-9-20221004.n.1

I tested in 17.1, but I think this also happen in 17.0

How reproducible:
Configure ovs parameter only in the provisioning stage



Actual results:
Ovs parameters needs to be duplicated in order to have a sucessfull deployment


Expected results:
Ovs should be defined only in one place


Additional info:

Comment 5 Steve Baker 2022-12-05 21:01:53 UTC
Kicking back to DF, the playbooks in question are not maintained by HardProv, and it looks like the change needed is in the deploy stage (or its documentation)