aboutsummaryrefslogtreecommitdiffstats
path: root/tools/roles-data-generate.py
diff options
context:
space:
mode:
authorAlex Schultz <aschultz@redhat.com>2017-06-09 08:59:51 -0600
committerAlex Schultz <aschultz@redhat.com>2017-07-07 09:51:40 -0600
commit2eb1476b6e93279d4ee4988c856dba50ab168bc5 (patch)
tree618cb9e526908cc3f9f0957a48d61fc3763523ad /tools/roles-data-generate.py
parent25caba5ce844c722e590333be87a0a7346f02a35 (diff)
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
Diffstat (limited to 'tools/roles-data-generate.py')
-rwxr-xr-xtools/roles-data-generate.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/tools/roles-data-generate.py b/tools/roles-data-generate.py
new file mode 100755
index 00000000..0b768744
--- /dev/null
+++ b/tools/roles-data-generate.py
@@ -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()))