[MediaWiki-commits] [Gerrit] data.yaml sanity testing - change (operations/puppet)
Rush has submitted this change and it was merged. Change subject: data.yaml sanity testing .. data.yaml sanity testing Will be greatly improved and changed but for now: ./data_admin.py lint ./data_admin.py sort Change-Id: I3370c14047666390c6755dd5ede943253fcff5c8 --- A modules/admin/data/data_admin.py 1 file changed, 53 insertions(+), 0 deletions(-) Approvals: Rush: Verified; Looks good to me, approved diff --git a/modules/admin/data/data_admin.py b/modules/admin/data/data_admin.py new file mode 100644 index 000..80a3553 --- /dev/null +++ b/modules/admin/data/data_admin.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python + +#2014 Chase Pettet +#beginnings of a linter for data.yaml + +import sys +import yaml +import itertools +from collections import Counter +import collections + +def flatten(lists): +flattens nested arrays +return list(itertools.chain.from_iterable(lists)) + +def all_assigned_users(admins): +unique assigned users +:param admins: hash from valid data.yaml +:returns: list + +nested_users_list = map(lambda u: u['members'], admins['groups'].values()) +return list(set(flatten(nested_users_list))) + +def dict_sort(dictionary): +#dumping ordered dict to yaml causes issues, return normal dict +return dict(collections.OrderedDict(sorted(dictionary.items( + +def main(): + +data = open('data.yaml', 'r') +admins = yaml.load(data) + +if 'sort' in sys.argv: +print yaml.dump({'groups': dict_sort(admins['groups'])}) +print yaml.dump({'users': dict_sort(admins['users'])}) + +if 'lint' in sys.argv: +all_users = admins['users'].keys() +grouped_users = all_assigned_users(admins) + +#ensure all assigned users exist +non_existent_users = [u for u in grouped_users if u not in all_users] +if non_existent_users: +print Users assigned that do not exist: %s % (non_existent_users,) + +#ensure no two groups uses the same gid +gids = filter(None, [v.get('gid', None) for k, v in admins['groups'].iteritems()]) +dupes = [k for k,v in Counter(gids).items() if v1] +if dupes: +print Duplicate group GIDs: %s % (dupes,) + +if __name__ == '__main__': +main() -- To view, visit https://gerrit.wikimedia.org/r/134922 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I3370c14047666390c6755dd5ede943253fcff5c8 Gerrit-PatchSet: 3 Gerrit-Project: operations/puppet Gerrit-Branch: production Gerrit-Owner: Rush r...@wikimedia.org Gerrit-Reviewer: Rush r...@wikimedia.org Gerrit-Reviewer: jenkins-bot ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] data.yaml sanity testing - change (operations/puppet)
Rush has uploaded a new change for review. https://gerrit.wikimedia.org/r/134922 Change subject: data.yaml sanity testing .. data.yaml sanity testing Will be greatly improved and changed but for now: ./data_admin.py lint ./data_admin.py sort Change-Id: I3370c14047666390c6755dd5ede943253fcff5c8 --- A modules/admin/data/data_admin.py 1 file changed, 53 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/operations/puppet refs/changes/22/134922/1 diff --git a/modules/admin/data/data_admin.py b/modules/admin/data/data_admin.py new file mode 100644 index 000..80a3553 --- /dev/null +++ b/modules/admin/data/data_admin.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python + +#2014 Chase Pettet +#beginnings of a linter for data.yaml + +import sys +import yaml +import itertools +from collections import Counter +import collections + +def flatten(lists): +flattens nested arrays +return list(itertools.chain.from_iterable(lists)) + +def all_assigned_users(admins): +unique assigned users +:param admins: hash from valid data.yaml +:returns: list + +nested_users_list = map(lambda u: u['members'], admins['groups'].values()) +return list(set(flatten(nested_users_list))) + +def dict_sort(dictionary): +#dumping ordered dict to yaml causes issues, return normal dict +return dict(collections.OrderedDict(sorted(dictionary.items( + +def main(): + +data = open('data.yaml', 'r') +admins = yaml.load(data) + +if 'sort' in sys.argv: +print yaml.dump({'groups': dict_sort(admins['groups'])}) +print yaml.dump({'users': dict_sort(admins['users'])}) + +if 'lint' in sys.argv: +all_users = admins['users'].keys() +grouped_users = all_assigned_users(admins) + +#ensure all assigned users exist +non_existent_users = [u for u in grouped_users if u not in all_users] +if non_existent_users: +print Users assigned that do not exist: %s % (non_existent_users,) + +#ensure no two groups uses the same gid +gids = filter(None, [v.get('gid', None) for k, v in admins['groups'].iteritems()]) +dupes = [k for k,v in Counter(gids).items() if v1] +if dupes: +print Duplicate group GIDs: %s % (dupes,) + +if __name__ == '__main__': +main() -- To view, visit https://gerrit.wikimedia.org/r/134922 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3370c14047666390c6755dd5ede943253fcff5c8 Gerrit-PatchSet: 1 Gerrit-Project: operations/puppet Gerrit-Branch: production Gerrit-Owner: Rush r...@wikimedia.org ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits