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;
|
||||
# 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
|
||||
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
|
||||
tripleo-common>=7.1.0 # Apache-2.0
|
||||
|
@ -44,9 +44,9 @@
|
||||
- OS::TripleO::Services::CinderHPELeftHandISCSI
|
||||
- OS::TripleO::Services::CinderScheduler
|
||||
- OS::TripleO::Services::CinderVolume
|
||||
- OS::TripleO::Services::Clustercheck
|
||||
- OS::TripleO::Services::Collectd
|
||||
- OS::TripleO::Services::Congress
|
||||
- OS::TripleO::Services::Clustercheck
|
||||
- OS::TripleO::Services::Docker
|
||||
- OS::TripleO::Services::Ec2Api
|
||||
- OS::TripleO::Services::Etcd
|
||||
|
@ -18,6 +18,7 @@
|
||||
- OS::TripleO::Services::HeatEngine
|
||||
- OS::TripleO::Services::IronicApi
|
||||
- OS::TripleO::Services::IronicConductor
|
||||
- OS::TripleO::Services::IronicInspector
|
||||
- OS::TripleO::Services::IronicPxe
|
||||
- OS::TripleO::Services::Iscsid
|
||||
- OS::TripleO::Services::Keystone
|
||||
@ -48,6 +49,7 @@
|
||||
- OS::TripleO::Services::UndercloudAodhListener
|
||||
- OS::TripleO::Services::UndercloudAodhNotifier
|
||||
- OS::TripleO::Services::UndercloudCeilometerAgentCentral
|
||||
- OS::TripleO::Services::UndercloudCeilometerAgentIpmi
|
||||
- OS::TripleO::Services::UndercloudCeilometerAgentNotification
|
||||
- OS::TripleO::Services::UndercloudGnocchiApi
|
||||
- OS::TripleO::Services::UndercloudGnocchiMetricd
|
||||
|
@ -1,5 +1,5 @@
|
||||
###############################################################################
|
||||
# File generated by tripleoclient
|
||||
# File generated by TripleO
|
||||
###############################################################################
|
||||
###############################################################################
|
||||
# Role: Controller #
|
||||
@ -261,3 +261,4 @@
|
||||
- OS::TripleO::Services::Timezone
|
||||
- OS::TripleO::Services::TripleoFirewall
|
||||
- OS::TripleO::Services::TripleoPackages
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
###############################################################################
|
||||
# File generated by tripleoclient
|
||||
# File generated by TripleO
|
||||
###############################################################################
|
||||
###############################################################################
|
||||
# Role: Undercloud #
|
||||
@ -59,3 +59,4 @@
|
||||
- OS::TripleO::Services::UndercloudGnocchiStatsd
|
||||
- OS::TripleO::Services::UndercloudPankoApi
|
||||
- OS::TripleO::Services::Zaqar
|
||||
|
||||
|
26
tools/roles-data-generate-samples.sh
Executable file
26
tools/roles-data-generate-samples.sh
Executable file
@ -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
|
49
tools/roles-data-generate.py
Executable file
49
tools/roles-data-generate.py
Executable file
@ -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()))
|
48
tools/roles-data-validation.sh
Executable file
48
tools/roles-data-validation.sh
Executable file
@ -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:
|
||||
if os.path.isdir(base_path):
|
||||
for subdir, dirs, files in os.walk(base_path):
|
||||
if '.tox' in dirs:
|
||||
dirs.remove('.tox')
|
||||
for f in files:
|
||||
if f.endswith('.yaml') and not f.endswith('.j2.yaml'):
|
||||
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}
|
||||
|
||||
[testenv:pep8]
|
||||
whielist_externals =
|
||||
bash
|
||||
commands =
|
||||
python ./tools/process-templates.py
|
||||
python ./network/endpoints/build_endpoint_map.py --check
|
||||
python ./tools/yaml-validate.py .
|
||||
bash -c ./tools/roles-data-validation.sh
|
||||
|
||||
[testenv:templates]
|
||||
commands = python ./tools/process-templates.py
|
||||
@ -32,3 +35,9 @@ commands = python setup.py test --coverage --coverage-package-name=tripleo_heat_
|
||||
commands =
|
||||
python ./tools/process-templates.py
|
||||
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…
x
Reference in New Issue
Block a user