[MediaWiki-commits] [Gerrit] data.yaml sanity testing - change (operations/puppet)

2014-05-23 Thread Rush (Code Review)
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)

2014-05-22 Thread Rush (Code Review)
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