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-environmentschanges/31/472731/10
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.
|
@ -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
|
Loading…
Reference in New Issue