Bug 1656124

Summary: [CI] TLS everywhere deployments fail with: Invalid input for field/attribute compact_services
Product: Red Hat OpenStack Reporter: Waldemar Znoinski <wznoinsk>
Component: openstack-tripleo-heat-templatesAssignee: Raildo Mascena de Sousa Filho <rmascena>
Status: CLOSED ERRATA QA Contact: Jeremy Agee <jagee>
Severity: urgent Docs Contact:
Priority: urgent    
Version: 14.0 (Rocky)CC: alee, aschultz, hrybacki, kbasil, mburns, nkinder, nmanos, pgrist, rmascena, sclewis, wznoinsk
Target Milestone: gaKeywords: TestBlocker, Triaged
Target Release: 14.0 (Rocky)Flags: rmascena: needinfo-
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: openstack-tripleo-heat-templates-9.0.1-0.20181013060906.el7ost Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1659464 1659596 (view as bug list) Environment:
Last Closed: 2019-01-11 11:55: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:
Bug Depends On: 1659464    
Bug Blocks:    

Description Waldemar Znoinski 2018-12-04 18:24:31 UTC
Description of problem:

every deployment of OSP14 with tls-everywhere enabled fails on overcloud deploy stage with:

overcloud.Controller.1.Controller:
  resource_type: OS::TripleO::ControllerServer
  physical_resource_id: 
  status: CREATE_FAILED
  status_reason: |
    BadRequest: resources.Controller: Invalid input for field/attribute compact_services. Value: {"ovs": ["internalapi"], "HTTP": ["ctlplane", "storage", "storagemgmt", "internalapi", "external", "management"], "libvirt-vnc": ["internalapi"], "rabbitmq": ["internalapi"], "odl": ["internalapi"], "mysql": ["internalapi"], "novnc-proxy": ["internalapi"], "neutron": ["internalapi"]}. u'{"ovs": ["internalapi"], "HTTP": ["ctlplane", "storage", "storagemgmt", "internalapi", "external", "management"], "libvirt-vnc": ["internalapi"], "rabbitmq": ["internalapi"], "odl": ["internalapi"], "mysql": ["internalapi"], "novnc-proxy": ["internalapi"], "neutron": ["internalapi"]}' is too long (HTTP 400) (Request-ID: req-f5c8b045-5c74-4850-ad28-5abf22b2fad3)
overcloud.Controller.0.Controller:
  resource_type: OS::TripleO::ControllerServer
  physical_resource_id: 
  status: CREATE_FAILED
  status_reason: |
    BadRequest: resources.Controller: Invalid input for field/attribute compact_services. Value: {"ovs": ["internalapi"], "HTTP": ["ctlplane", "storage", "storagemgmt", "internalapi", "external", "management"], "libvirt-vnc": ["internalapi"], "rabbitmq": ["internalapi"], "odl": ["internalapi"], "mysql": ["internalapi"], "novnc-proxy": ["internalapi"], "neutron": ["internalapi"]}. u'{"ovs": ["internalapi"], "HTTP": ["ctlplane", "storage", "storagemgmt", "internalapi", "external", "management"], "libvirt-vnc": ["internalapi"], "rabbitmq": ["internalapi"], "odl": ["internalapi"], "mysql": ["internalapi"], "novnc-proxy": ["internalapi"], "neutron": ["internalapi"]}' is too long (HTTP 400) (Request-ID: req-8e7ed022-26a9-47a1-9ddb-4b63205141e7)
overcloud.Controller.2.Controller:
  resource_type: OS::TripleO::ControllerServer
  physical_resource_id: 
  status: CREATE_FAILED
  status_reason: |
    BadRequest: resources.Controller: Invalid input for field/attribute compact_services. Value: {"ovs": ["internalapi"], "HTTP": ["ctlplane", "storage", "storagemgmt", "internalapi", "external", "management"], "libvirt-vnc": ["internalapi"], "rabbitmq": ["internalapi"], "odl": ["internalapi"], "mysql": ["internalapi"], "novnc-proxy": ["internalapi"], "neutron": ["internalapi"]}. u'{"ovs": ["internalapi"], "HTTP": ["ctlplane", "storage", "storagemgmt", "internalapi", "external", "management"], "libvirt-vnc": ["internalapi"], "rabbitmq": ["internalapi"], "odl": ["internalapi"], "mysql": ["internalapi"], "novnc-proxy": ["internalapi"], "neutron": ["internalapi"]}' is too long (HTTP 400) (Request-ID: req-5ba54950-af61-4bcf-8fd9-ce3ab8166737)


Version-Release number of selected component (if applicable):
OSP14 puddle 2018-11-29.3 + opendaylight 8.3.0-7 (odl is probably irrelevant here)


How reproducible:
100%


Steps to Reproduce:
1. deploy OSP + ODL (OSP without ODL will probably have the same problem)
2.
3.

Actual results:
overcloud deploy fails

Expected results:
overcloud to deploy successfully

Additional info:
CI jobs showing the problem: https://rhos-qe-jenkins.rhev-ci-vms.eng.rdu2.redhat.com/view/DFG/view/opendaylight/view/odl-netvirt/job/DFG-opendaylight-odl-netvirt-14_director-rhel-virthost-3cont_2comp_1ipa-ipv4-vxlan-ha-tls-tempest/

note the deployment passes the undercloud installation step which was previously blocked by https://bugzilla.redhat.com/show_bug.cgi?id=1645136

Comment 2 Ade Lee 2018-12-11 20:58:40 UTC
The issue here is as follows:

* In THT, we construct data to be passed to novajoin for all the services to be configured.  The data is passed as nova metadata fields.
* There can be any number of these fields, but each field cannot exceed 256 bytes.
* In particular, the services on a controller not related to a VIP are passed in a field called "compact_services"
* If there are additional services added (as ODL does), we can exceed the 256 byte restriction.
* We see that happen in the log snippet above ..

BadRequest: resources.Controller: Invalid input for field/attribute compact_services. Value: {"ovs": ["internalapi"], "HTTP": ["ctlplane", "storage", "storagemgmt", "internalapi", "external", "management"], "libvirt-vnc": ["internalapi"], "rabbitmq": ["internalapi"], "odl": ["internalapi"], "mysql": ["internalapi"], "novnc-proxy": ["internalapi"], "neutron": ["internalapi"]}. u'{"ovs": ["internalapi"], "HTTP": ["ctlplane", "storage", "storagemgmt", "internalapi", "external", "management"], "libvirt-vnc": ["internalapi"], "rabbitmq": ["internalapi"], "odl": ["internalapi"], "mysql": ["internalapi"], "novnc-proxy": ["internalapi"], "neutron": ["internalapi"]}' is too long (HTTP 400) 

The solution to this problem is to instead send the services as individual entries, rather than collecting them as above.
This requires changes to both THT to construct the new metadata to be passed, and novajoin to parse it correctly.

The upstream review for the THT change is here: https://review.openstack.org/#/c/623316/
The upstream change to novajoin is being worked on.

Comment 3 Raildo Mascena de Sousa Filho 2018-12-12 13:01:55 UTC
Novajoin change is here: https://review.openstack.org/#/c/624502/

Comment 14 errata-xmlrpc 2019-01-11 11:55:18 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/RHEA-2019:0045

Comment 15 Red Hat Bugzilla 2023-09-14 04:43:17 UTC
The needinfo request[s] on this closed bug have been removed as they have been unresolved for 1000 days