diff --git a/puppet/services/apache.yaml b/puppet/services/apache.yaml index 9506a7c7d6..8de9327225 100644 --- a/puppet/services/apache.yaml +++ b/puppet/services/apache.yaml @@ -62,10 +62,9 @@ resources: # certificates for those. We skip the tenant network since # we don't need a certificate for that. yaql: - expression: list($.data.map.items().map($1[1])).distinct().where($ != tenant) + expression: list($.data.values().toSet().where($ != tenant)) data: - map: - get_param: ServiceNetMap + get_param: ServiceNetMap outputs: role_data: diff --git a/test-requirements.txt b/test-requirements.txt index 04723119ba..c1dd0e0ffb 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -15,3 +15,4 @@ testscenarios>=0.4 # Apache-2.0/BSD testtools>=2.2.0 # MIT mock>=2.0.0 # BSD oslotest>=3.2.0 # Apache-2.0 +yaql>=1.1.3 # Apache 2.0 License diff --git a/tripleo_heat_templates/tests/test_yaql.py b/tripleo_heat_templates/tests/test_yaql.py new file mode 100644 index 0000000000..fe79c42d71 --- /dev/null +++ b/tripleo_heat_templates/tests/test_yaql.py @@ -0,0 +1,45 @@ +# Copyright 2018 Red Hat Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import io +import tempfile + +import mock +from oslotest import base +import six +import testscenarios +import yaml +import yaql + + +class YAQLTestCase(base.BaseTestCase): + + def get_snippet(self, template, path): + with open(template) as f: + template = f.read() + data = yaml.safe_load(template) + for i in path.split('.'): + data = data[i] + return data['yaql']['expression'] + + def test_apache_networks(self): + snippet = self.get_snippet( + 'puppet/services/apache.yaml', + 'resources.ApacheNetworks.properties.value') + self.assertEqual( + ['service'], + yaql.eval( + snippet, + {'data': {'nova': 'tenant', 'cinder': 'service', + 'glance': 'service'}}))