Bug 1656251

Summary: When using "IsolCpusList", setting TunedProfileName to anything other than cpu-partitioning fails deployment
Product: Red Hat OpenStack Reporter: Nick Satsia <nsatsia>
Component: openstack-tripleo-heat-templatesAssignee: Rabi Mishra <ramishra>
Status: CLOSED ERRATA QA Contact: Gurenko Alex <agurenko>
Severity: high Docs Contact:
Priority: high    
Version: 13.0 (Queens)CC: asimonel, jschluet, mariel, mburns, mcornea, ramishra, skramaja, slinaber, sputhenp
Target Milestone: asyncKeywords: Triaged, ZStream
Target Release: 13.0 (Queens)   
Hardware: All   
OS: Unspecified   
Whiteboard:
Fixed In Version: openstack-tripleo-heat-templates-8.0.7-17.el7ost Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-02-12 22:05:18 UTC 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 Nick Satsia 2018-12-05 03:16:49 UTC
Description of problem:
deploying an environment with a mix of Intel64 and PowerPC64 computes.
Using role ComputePPC64LE which sets TunedProfileName "virtual-host" and failing as the file does not exist:

---------------------------------------
     Stack overcloud CREATE_FAILED

    overcloud.ComputePPC64LE.0.PreNetworkConfig.HostParametersDeployment:
      resource_type: OS::Heat::SoftwareDeployment
      physical_resource_id: e4bd51f7-6ac7-4990-8c2a-6e168335d1da
      status: CREATE_FAILED
      status_reason: |
        Error: resources.HostParametersDeployment: Deployment to server failed: deploy_status_code : Deployment exited with non-zero status code: 2
      deploy_stdout: |
        ...
        TASK [Generate grub config file] ***********************************************
        changed: [localhost]

        TASK [Tune-d Configuration] ****************************************************
        fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "Destination /etc/tuned/virtual-host-variables.conf does not exist !", "rc": 257}
            to retry, use: --limit @/var/lib/heat-config/heat-config-ansible/c915d33a-c3c2-44e9-862c-fb5c78e34023_playbook.retry

        PLAY RECAP *********************************************************************
        localhost                  : ok=4    changed=3    unreachable=0    failed=1

        (truncated, view all with --long)
      deploy_stderr: |

    Heat Stack create failed.
---------------------------------------



Contents of /usr/share/openstack-tripleo-heat-templates/roles/ComputePPC64LE.yaml

-------------------------
    ###############################################################################
    # Role: ComputePPC64LE                                                        #
    ###############################################################################
    - name: ComputePPC64LE
      description: |
        Basic Compute Node role for ppc64le servers
      CountDefault: 0
      networks:
        - InternalApi
        - Tenant
        - Storage
      HostnameFormatDefault: '%stackname%-novacomputeppc64le-%index%'
      ImageDefault: ppc64le-overcloud-full
      RoleParametersDefault:
        TunedProfileName: "virtual-host"
    .
    .
-------------------------

Version-Release number of selected component (if applicable):
RHOSP13

How reproducible:
100%

Steps to Reproduce:
1. Deploy a PowerPC64 compute with isolcpu partitioning.
2.
3.

Actual results:


Expected results:


Additional info:
With customer we added the following block to /usr/share/openstack-tripleo-heat-templates/extraconfig/pre_network/ansible_host_config.yaml and redeployed successfully 

------------------------------
    diff --git a/extraconfig/pre_network/ansible_host_config.yaml b/extraconfig/pre_network/ansible_host_config.yaml
    index 9a0b54a..64b3079 100644
    --- a/extraconfig/pre_network/ansible_host_config.yaml
    +++ b/extraconfig/pre_network/ansible_host_config.yaml
    @@ -24,6 +24,14 @@

         # Tune-d Configuration
         - block:
    +        - name: Ensure Tune-d Configuration exists
    +          file:
    +            path: /etc/tuned/{{ _TUNED_PROFILE_NAME_ }}-variables.conf
    +            state: touch
    +            owner: root
    +            group: root
    +            mode: 0644
    +
             - name: Tune-d Configuration
               lineinfile:
                 dest: /etc/tuned/{{ _TUNED_PROFILE_NAME_ }}-variables.conf

------------------------------

Comment 1 Sadique Puthen 2018-12-06 05:57:16 UTC
Rabi,

Can you please help with a hotfix?

Comment 14 Saravanan KR 2018-12-13 13:01:01 UTC
A look at the templates would be more helpful. But here is what i infer, ComputePPC64LE role uses virtual-guest tuned profile, but it also tries to apply _TUNED_CORES_ (IsolCpusList) and fails. For virtual-guest profile, IsolCpusList parameter is not required. If this parameter is moved a role-specific as like KernelArgs (only for the role which has cpu-parititioning profile), the issue should have been fixed. To confirm the issue, a look at the templates would be helpful.

Comment 26 Gurenko Alex 2019-01-07 15:59:23 UTC
Verified on puddle 2019-01-03.1

openstack-tripleo-heat-templates-8.0.7-21.el7ost.noarch

Comment 28 errata-xmlrpc 2019-01-16 17:55:29 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2019:0068