Description of problem: When deploying OSPD with the following parameters the deployment fails. Error: Could not find data item opendaylight_api_node_ips in any Hiera data file and no default supplied at /etc/puppet/modules/tripleo/manifests/profile/base/neutron/plugins/ovs/opendaylight.pp:45 on node compute-0.localdomain Version-Release number of selected component (if applicable): openstack-tripleo-heat-templates-5.0.0-0.20160907212643.90c852e.2.el7ost.noarch openstack-heat-templates-0.0.1-0.20160906185549.ac2db55.el7ost.noarch How reproducible: Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info: The deployment execution: openstack overcloud deploy --debug \ --templates \ --libvirt-type kvm \ --ntp-server clock.redhat.com \ --neutron-network-type vxlan \ --neutron-tunnel-types vxlan \ --control-scale 1 \ --control-flavor controller-d75f3dec-c770-5f88-9d4c-3fea1bf9c484 \--compute-scale 1 \ --compute-flavor compute-b634c10a-570f-59ba-bdbf-0c313d745a10 \--environment-file "/usr/share/openstack-tripleo-heat-templates/environments/services/sahara.yaml" \ -e /home/stack/virt/network/network-environment.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e /home/stack/virt/hostnames.yml \ -e /home/stack/virt/debug.yaml \ -e /home/stack/neutron-opendaylight-l3.yaml \ --log-file overcloud_deployment_35.log &> overcloud_install.log The neutron-opendaylight-l3.yaml file: resource_registry: OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None OS::TripleO::Services::OpenDaylight: /usr/share/openstack-tripleo-heat-templates/puppet/services/opendaylight-api.yaml OS::TripleO::Services::OpenDaylightOvs: /usr/share/openstack-tripleo-heat-templates/puppet/services/opendaylight-ovs.yaml OS::TripleO::Services::NeutronL3Agent: OS::Heat::None parameter_defaults: EnableOpenDaylightOnController: true NeutronEnableForceMetadata: true NeutronMechanismDrivers: 'opendaylight' NeutronServicePlugins: "networking_odl.l3.l3_odl.OpenDaylightL3RouterPlugin" OpenDaylightEnableL3: "'yes'" Output from heat 'deployment-show' { "status": "FAILED", "server_id": "60e91b4d-d267-4fe3-8b4b-244f05be5aa1", "config_id": "3a74578f-aab9-49fc-b2b8-16d99a95bab3", "output_values": { "deploy_stdout": "", "deploy_stderr": "exception: connect failed\n\u001b[1;31mError: Could not find data item opendaylight_api_node_ips in any Hiera data file and no default supplied at /etc/puppet/modules/tripleo/manifests/profile/base/neutron/plugins/ovs/opendaylight.pp:45 on node compute-0.localdomain\u001b[0m\n\u001b[1;31mError: Could not find data item opendaylight_api_node_ips in any Hiera data file and no default supplied at /etc/puppet/modules/tripleo/manifests/profile/base/neutron/plugins/ovs/opendaylight.pp:45 on node compute-0.localdomain\u001b[0m\n", "deploy_status_code": 1 }, "creation_time": "2016-09-25T12:06:30", "updated_time": "2016-09-25T12:07:04", "input_values": { "step": 2, "update_identifier": "1474804585" }, "action": "CREATE", "status_reason": "deploy_status_code : Deployment exited with non-zero status code: 1", "id": "08dfb4a8-63a6-4f4f-8f1a-6f77617af1c8" }
After looking at this it looks like <service>_node_ips is now dynamically generated in THT (rather than the previous way declared in overcloud.yaml). The dynamic substitution is a little hard to follow, but my suspicion is the dynamic parsing is using the actual name of the service when it goes to parse <service name>Network. In this case the opendaylight service is 'OpenDaylight', but the ODL network is actually 'OpenDaylightApiNetwork'. Itzik, can you please try chaning 'OpenDaylight' to be 'OpenDaylightApi' making these changes and redeploying? It needs to be changed in these places: https://github.com/openstack/tripleo-heat-templates/blob/master/roles_data.yaml#L93 https://github.com/openstack/tripleo-heat-templates/blob/master/overcloud-resource-registry-puppet.j2.yaml#L190 https://github.com/openstack/tripleo-heat-templates/blob/master/environments/neutron-opendaylight.yaml#L5 https://github.com/openstack/tripleo-heat-templates/blob/master/environments/neutron-opendaylight-l3.yaml
Can you also verify that your original test included this patch? https://review.openstack.org/#/c/361578/ My previous comment may not actually help (except to make things more aligned cosmetically).
Yes. It includes this patch.
After talking to Steve Hardy - there is a nuance to how TripleO interprets/translates the service net name into the <service_name>_network that includes splitting camel case with _ and setting to lower case. The issue was OpenDaylight is a single word with camel case, causing the translation to be: open_daylight_api_node_ips, rather than opendaylight_api_node_ips. Steve has uploaded a fix: https://review.openstack.org/#/c/382480/1 I confirmed this works.
Tim, Can you please update the RPM version in 'Fixed in Version' ? Thanks
Itzik, I'm not sure how to map upstream merged changes into downstream builds. But it has been some time since this was fixed upstream, it must be in the latest downstream build by now.
Tim, How do you suggest verifying? Make sure that the deployment is done?
Verified the the code openstack-tripleo-heat-templates-5.0.0-1.2.el7ost.noarch
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://rhn.redhat.com/errata/RHEA-2016-2948.html