Add in roles data validation
With the merging of Iad3e9b215c6f21ba761c8360bb7ed531e34520e6 the roles_data.yaml should be generated with tripleoclient rather than edited. This change adds in a pep8 task to verify that the appropriate role files in roles/ have been modified to match how our default roles_data.yaml is constructed. Additionally this change adds a new tox target called 'genrolesdata' that will all you to automatically generate roles_data.yaml and roles_data_undercloud.yaml Change-Id: I5eb15443a131a122d1a4abf6fc15a3ac3e15941b Related-Blueprint: example-custom-role-environments
This commit is contained in:
parent
25caba5ce8
commit
2eb1476b6e
|
@ -1,2 +1,4 @@
|
||||||
# This is a cross-platform list tracking distribution packages needed by tests;
|
# This is a cross-platform list tracking distribution packages needed by tests;
|
||||||
# see http://docs.openstack.org/infra/bindep/ for additional information.
|
# see http://docs.openstack.org/infra/bindep/ for additional information.
|
||||||
|
libssl-dev [platform:dpkg]
|
||||||
|
openssl-devel [platform:rpm]
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
The roles_data.yaml and roles_data_undercloud.yaml can be generated with
|
||||||
|
tox using ``tox -e genrolesdata``.
|
||||||
|
- |
|
||||||
|
pep8 now checks that the roles_data.yaml and roles_data_undercloud.yaml
|
||||||
|
matches data generated from the roles/ files.
|
|
@ -4,3 +4,4 @@
|
||||||
pbr!=2.1.0,>=2.0.0 # Apache-2.0
|
pbr!=2.1.0,>=2.0.0 # Apache-2.0
|
||||||
Jinja2!=2.9.0,!=2.9.1,!=2.9.2,!=2.9.3,!=2.9.4,>=2.8 # BSD License (3 clause)
|
Jinja2!=2.9.0,!=2.9.1,!=2.9.2,!=2.9.3,!=2.9.4,>=2.8 # BSD License (3 clause)
|
||||||
six>=1.9.0 # MIT
|
six>=1.9.0 # MIT
|
||||||
|
tripleo-common>=7.1.0 # Apache-2.0
|
||||||
|
|
|
@ -44,9 +44,9 @@
|
||||||
- OS::TripleO::Services::CinderHPELeftHandISCSI
|
- OS::TripleO::Services::CinderHPELeftHandISCSI
|
||||||
- OS::TripleO::Services::CinderScheduler
|
- OS::TripleO::Services::CinderScheduler
|
||||||
- OS::TripleO::Services::CinderVolume
|
- OS::TripleO::Services::CinderVolume
|
||||||
|
- OS::TripleO::Services::Clustercheck
|
||||||
- OS::TripleO::Services::Collectd
|
- OS::TripleO::Services::Collectd
|
||||||
- OS::TripleO::Services::Congress
|
- OS::TripleO::Services::Congress
|
||||||
- OS::TripleO::Services::Clustercheck
|
|
||||||
- OS::TripleO::Services::Docker
|
- OS::TripleO::Services::Docker
|
||||||
- OS::TripleO::Services::Ec2Api
|
- OS::TripleO::Services::Ec2Api
|
||||||
- OS::TripleO::Services::Etcd
|
- OS::TripleO::Services::Etcd
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
- OS::TripleO::Services::HeatEngine
|
- OS::TripleO::Services::HeatEngine
|
||||||
- OS::TripleO::Services::IronicApi
|
- OS::TripleO::Services::IronicApi
|
||||||
- OS::TripleO::Services::IronicConductor
|
- OS::TripleO::Services::IronicConductor
|
||||||
|
- OS::TripleO::Services::IronicInspector
|
||||||
- OS::TripleO::Services::IronicPxe
|
- OS::TripleO::Services::IronicPxe
|
||||||
- OS::TripleO::Services::Iscsid
|
- OS::TripleO::Services::Iscsid
|
||||||
- OS::TripleO::Services::Keystone
|
- OS::TripleO::Services::Keystone
|
||||||
|
@ -48,6 +49,7 @@
|
||||||
- OS::TripleO::Services::UndercloudAodhListener
|
- OS::TripleO::Services::UndercloudAodhListener
|
||||||
- OS::TripleO::Services::UndercloudAodhNotifier
|
- OS::TripleO::Services::UndercloudAodhNotifier
|
||||||
- OS::TripleO::Services::UndercloudCeilometerAgentCentral
|
- OS::TripleO::Services::UndercloudCeilometerAgentCentral
|
||||||
|
- OS::TripleO::Services::UndercloudCeilometerAgentIpmi
|
||||||
- OS::TripleO::Services::UndercloudCeilometerAgentNotification
|
- OS::TripleO::Services::UndercloudCeilometerAgentNotification
|
||||||
- OS::TripleO::Services::UndercloudGnocchiApi
|
- OS::TripleO::Services::UndercloudGnocchiApi
|
||||||
- OS::TripleO::Services::UndercloudGnocchiMetricd
|
- OS::TripleO::Services::UndercloudGnocchiMetricd
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# File generated by tripleoclient
|
# File generated by TripleO
|
||||||
###############################################################################
|
###############################################################################
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Role: Controller #
|
# Role: Controller #
|
||||||
|
@ -261,3 +261,4 @@
|
||||||
- OS::TripleO::Services::Timezone
|
- OS::TripleO::Services::Timezone
|
||||||
- OS::TripleO::Services::TripleoFirewall
|
- OS::TripleO::Services::TripleoFirewall
|
||||||
- OS::TripleO::Services::TripleoPackages
|
- OS::TripleO::Services::TripleoPackages
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# File generated by tripleoclient
|
# File generated by TripleO
|
||||||
###############################################################################
|
###############################################################################
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Role: Undercloud #
|
# Role: Undercloud #
|
||||||
|
@ -59,3 +59,4 @@
|
||||||
- OS::TripleO::Services::UndercloudGnocchiStatsd
|
- OS::TripleO::Services::UndercloudGnocchiStatsd
|
||||||
- OS::TripleO::Services::UndercloudPankoApi
|
- OS::TripleO::Services::UndercloudPankoApi
|
||||||
- OS::TripleO::Services::Zaqar
|
- OS::TripleO::Services::Zaqar
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright 2017 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.
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
|
||||||
|
SCRIPT_DIR=$(cd `dirname $0` && pwd -P)
|
||||||
|
OUTPUT_DIR=${OUTPUT_DIR:-$(cd "${SCRIPT_DIR}/../" && pwd -P)}
|
||||||
|
|
||||||
|
echo "Generating ${OUTPUT_DIR}/roles_data.yaml"
|
||||||
|
$SCRIPT_DIR/roles-data-generate.py Controller Compute BlockStorage ObjectStorage CephStorage > $OUTPUT_DIR/roles_data.yaml
|
||||||
|
|
||||||
|
echo "Generating ${OUTPUT_DIR}/roles_data_undercloud.yaml"
|
||||||
|
$SCRIPT_DIR/roles-data-generate.py Undercloud > $OUTPUT_DIR/roles_data_undercloud.yaml
|
|
@ -0,0 +1,49 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
#
|
||||||
|
# Copyright 2017 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 argparse
|
||||||
|
import collections
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from tripleo_common.utils import roles as rolesutils
|
||||||
|
|
||||||
|
__tht_root_dir = os.path.dirname(os.path.dirname(__file__))
|
||||||
|
__tht_roles_dir = os.path.join(__tht_root_dir, 'roles')
|
||||||
|
|
||||||
|
|
||||||
|
def parse_opts(argv):
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description='Generate roles_data.yaml for requested roles. NOTE: '
|
||||||
|
'This is a stripped down version of what is provided by '
|
||||||
|
'the tripleoclient. The tripleoclient should be used for '
|
||||||
|
'additional functionality.')
|
||||||
|
parser.add_argument('--roles-path', metavar='<roles directory>',
|
||||||
|
help="Filesystem path containing the roles yaml files",
|
||||||
|
default=__tht_roles_dir)
|
||||||
|
parser.add_argument('roles', nargs="+", metavar='<role>',
|
||||||
|
help='List of roles to use to generate the '
|
||||||
|
'roles_data.yaml file')
|
||||||
|
opts = parser.parse_args(argv[1:])
|
||||||
|
|
||||||
|
return opts
|
||||||
|
|
||||||
|
opts = parse_opts(sys.argv)
|
||||||
|
|
||||||
|
roles = collections.OrderedDict.fromkeys(opts.roles)
|
||||||
|
print(rolesutils.generate_roles_data_from_directory(opts.roles_path,
|
||||||
|
roles.keys()))
|
|
@ -0,0 +1,48 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright 2017 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.
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
|
||||||
|
SCRIPT_DIR=$(cd `dirname $0` && pwd -P)
|
||||||
|
THT_DIR=${OUTPUT_DIR:-$(cd "${SCRIPT_DIR}/../" && pwd -P)}
|
||||||
|
TMPDIR=$(mktemp -d)
|
||||||
|
|
||||||
|
function do_cleanup {
|
||||||
|
rm -rf $TMPDIR
|
||||||
|
}
|
||||||
|
trap do_cleanup EXIT
|
||||||
|
|
||||||
|
function check_diff {
|
||||||
|
local thtfile=$1
|
||||||
|
local genfile=$2
|
||||||
|
echo -n "Performing diff on $thtfile $genfile... "
|
||||||
|
diff $thtfile $genfile > $TMPDIR/diff_results
|
||||||
|
if [ $? = 1 ]; then
|
||||||
|
echo "ERROR: Generated roles file not match the current ${thtfile}"
|
||||||
|
echo "Please make sure to update the appropriate roles/* files."
|
||||||
|
echo "Here is the diff ${thtfile} ${genfile}"
|
||||||
|
cat $TMPDIR/diff_results
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "OK!"
|
||||||
|
}
|
||||||
|
|
||||||
|
OUTPUT_DIR=$TMPDIR
|
||||||
|
source $SCRIPT_DIR/roles-data-generate-samples.sh
|
||||||
|
|
||||||
|
set +e
|
||||||
|
check_diff $THT_DIR/roles_data.yaml $TMPDIR/roles_data.yaml
|
||||||
|
check_diff $THT_DIR/roles_data_undercloud.yaml $TMPDIR/roles_data_undercloud.yaml
|
|
@ -337,6 +337,8 @@ param_map = {}
|
||||||
for base_path in path_args:
|
for base_path in path_args:
|
||||||
if os.path.isdir(base_path):
|
if os.path.isdir(base_path):
|
||||||
for subdir, dirs, files in os.walk(base_path):
|
for subdir, dirs, files in os.walk(base_path):
|
||||||
|
if '.tox' in dirs:
|
||||||
|
dirs.remove('.tox')
|
||||||
for f in files:
|
for f in files:
|
||||||
if f.endswith('.yaml') and not f.endswith('.j2.yaml'):
|
if f.endswith('.yaml') and not f.endswith('.j2.yaml'):
|
||||||
file_path = os.path.join(subdir, f)
|
file_path = os.path.join(subdir, f)
|
||||||
|
|
9
tox.ini
9
tox.ini
|
@ -14,10 +14,13 @@ commands = python setup.py testr --slowest --testr-args='{posargs}'
|
||||||
commands = {posargs}
|
commands = {posargs}
|
||||||
|
|
||||||
[testenv:pep8]
|
[testenv:pep8]
|
||||||
|
whielist_externals =
|
||||||
|
bash
|
||||||
commands =
|
commands =
|
||||||
python ./tools/process-templates.py
|
python ./tools/process-templates.py
|
||||||
python ./network/endpoints/build_endpoint_map.py --check
|
python ./network/endpoints/build_endpoint_map.py --check
|
||||||
python ./tools/yaml-validate.py .
|
python ./tools/yaml-validate.py .
|
||||||
|
bash -c ./tools/roles-data-validation.sh
|
||||||
|
|
||||||
[testenv:templates]
|
[testenv:templates]
|
||||||
commands = python ./tools/process-templates.py
|
commands = python ./tools/process-templates.py
|
||||||
|
@ -32,3 +35,9 @@ commands = python setup.py test --coverage --coverage-package-name=tripleo_heat_
|
||||||
commands =
|
commands =
|
||||||
python ./tools/process-templates.py
|
python ./tools/process-templates.py
|
||||||
python ./tripleo_heat_templates/environment_generator.py sample-env-generator/
|
python ./tripleo_heat_templates/environment_generator.py sample-env-generator/
|
||||||
|
|
||||||
|
[testenv:genroledata]
|
||||||
|
whielist_externals =
|
||||||
|
bash
|
||||||
|
commands =
|
||||||
|
bash -c tools/roles-data-generate-samples.sh
|
||||||
|
|
Loading…
Reference in New Issue