Skip to content

Commit

Permalink
Merge pull request #3 from locationlabs/py3
Browse files Browse the repository at this point in the history
python 3 future proofing
  • Loading branch information
davidmnoriega authored Oct 31, 2019
2 parents a8022fc + 0c4d620 commit 1300682
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 8 deletions.
6 changes: 4 additions & 2 deletions filter_plugins/collection.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type

from six import iteritems
from ansible import errors


Expand All @@ -19,19 +20,20 @@ def is_member_of(value, membership):
else:
raise errors.AnsibleFilterError("Provided membership list is not a list!")


def dot1x_interfaces(configuration, type='dot1x'):
"""
Return list of dot1x enabled interfaces.
Default will return all dot1x interfaces, use type to get a subset.
"""
## Redo this!
# Redo this!
dot1x_filter = set(['dot1x', 'dot1x_mab', 'dot1x_parking'])
if type not in dot1x_filter:
raise errors.AnsibleFilterError("Invalid type provided. Valid types: dot1x, dot1x_mab, dot1x_parking")

interface_list = []
for iface, iface_config in configuration['interfaces'].iteritems():
for iface, iface_config in iteritems(configuration['interfaces']):
if type == 'dot1x':
if len(dot1x_filter.intersection(set(iface_config))) > 0:
interface_list.append(iface)
Expand Down
8 changes: 5 additions & 3 deletions test_plugins/validate.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type

from six import itervalues, viewkeys


def valid_interface(configuration):
"""Validate interface configuration
Expand All @@ -9,7 +11,7 @@ def valid_interface(configuration):
* interface name is 15 characters or less
* interface name does not start with a number
"""
for config_section in [s for s in ("bonds", "interfaces") if s in configuration.keys()]:
for config_section in [s for s in ("bonds", "interfaces") if s in viewkeys(configuration)]:
for interface in configuration[config_section]:
if len(interface) > 15:
return False
Expand All @@ -36,8 +38,8 @@ def valid_802_1x(configuration):
return False

dot1x_filter = set(['dot1x', 'dot1x_mab', 'dot1x_parking'])
for interface in configuration["interfaces"].itervalues():
iface_params = set(interface.keys())
for interface in itervalues(configuration["interfaces"]):
iface_params = set(viewkeys(interface))
if len(dot1x_filter.intersection(iface_params)) > 1:
return False
else:
Expand Down
6 changes: 3 additions & 3 deletions vars_plugins/cumulus.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
__metaclass__ = type

from distutils.version import LooseVersion
from six import iteritems, itervalues, iterkeys
from six import iteritems, itervalues, iterkeys, viewkeys
from ansible import __version__
from ansible.errors import AnsibleError
from ansible.inventory.group import Group
Expand All @@ -29,9 +29,9 @@ def get_vars(self, loader, path, entities, cache=True):
if isinstance(entity, Host) or isinstance(entity, Group):
host_group_vars_data = super(VarsModule, self).get_vars(loader, path, entities)
if isinstance(host_group_vars_data, dict):
if 'config' in host_group_vars_data.keys():
if 'config' in viewkeys(host_group_vars_data):
self._display.debug('config data found')
if 'bonds' in host_group_vars_data['config'].keys():
if 'bonds' in viewkeys(host_group_vars_data['config']):
interfaces = {}
# This works because of explaination at
# https://docs.python.org/2/library/stdtypes.html#dict.items and six
Expand Down

0 comments on commit 1300682

Please sign in to comment.