def normalize(self):
     """Normalizes a CIDR descriptor, e.g. 1.2.3.4/5 == 0.0.0.0/5."""
     # ipaddress is picky and needs inputs to be unicode, i.e. not bytes==str in py2
     normalized_cidr = ipaddress.ip_network(six.u(self.cidr),
                                            strict=False).compressed
     return self.__class__(cidr=normalized_cidr,
                           description=self.description)
Esempio n. 2
0
    def translate_idps(idps, api_version):
        ''' Translates a list of dictionaries into a valid identityProviders config '''
        idp_list = []

        if not isinstance(idps, list):
            raise errors.AnsibleFilterError(
                "|failed expects to filter on a list of identity providers")
        for idp in idps:
            if not isinstance(idp, dict):
                raise errors.AnsibleFilterError(
                    "|failed identity providers must be a list of dictionaries"
                )

            cur_module = sys.modules[__name__]
            idp_class = getattr(cur_module, idp['kind'], None)
            idp_inst = idp_class(
                api_version,
                idp) if idp_class is not None else IdentityProviderBase(
                    api_version, idp)
            idp_inst.set_provider_items()
            idp_list.append(idp_inst)

        IdentityProviderBase.validate_idp_list(idp_list)
        return u(
            yaml.dump([idp.to_dict() for idp in idp_list],
                      allow_unicode=True,
                      default_flow_style=False,
                      width=float("inf"),
                      Dumper=AnsibleDumper))
Esempio n. 3
0
 def v2_runner_on_ok(self, res):
     abridged_result = res._result.copy()
     # Collect facts result from playbooks/byo/openshift_facts.yml
     if 'result' in abridged_result:
         facts = abridged_result['result']['ansible_facts']['openshift']
         hosts_yaml = {}
         hosts_yaml[res._host.get_name()] = facts
         to_dump = u(yaml.dump(hosts_yaml,
                               allow_unicode=True,
                               default_flow_style=False,
                               Dumper=AnsibleDumper))
         os.write(self.hosts_yaml, to_dump)
Esempio n. 4
0
def lib_utils_to_padded_yaml(data, level=0, indent=2, **kw):
    """ returns a yaml snippet padded to match the indent level you specify """
    if data in [None, ""]:
        return ""

    try:
        transformed = u(yaml.dump(data, indent=indent, allow_unicode=True,
                                  default_flow_style=False,
                                  Dumper=AnsibleDumper, **kw))
        padded = "\n".join([" " * level * indent + line for line in transformed.splitlines()])
        return "\n{0}".format(padded)
    except Exception as my_e:
        raise errors.AnsibleFilterError('Failed to convert: %s' % my_e)
Esempio n. 5
0
def lib_utils_to_padded_yaml(data, level=0, indent=2, **kw):
    """ returns a yaml snippet padded to match the indent level you specify """
    if data in [None, ""]:
        return ""

    try:
        transformed = u(yaml.dump(data, indent=indent, allow_unicode=True,
                                  default_flow_style=False,
                                  Dumper=AnsibleDumper, **kw))
        padded = "\n".join([" " * level * indent + line for line in transformed.splitlines()])
        return "\n{0}".format(padded)
    except Exception as my_e:
        raise errors.AnsibleFilterError('Failed to convert: %s' % my_e)
 def test_aireos_command_to_lines_non_ascii(self):
     ''' Test data is one variation of the result of a `show run-config commands`
     command on Cisco WLC version 8.8.120.0 '''
     test_data = '''
     wlan flexconnect learn-ipaddr 101 enable
     `\xc8\x92\xef\xbf\xbdR\x7f`\xc8\x92\xef\xbf\xbdR\x7f`
     wlan wgb broadcast-tagging disable 1
     '''.strip()
     test_string = six.u(test_data)
     test_stdout = [test_string, ]
     result = list(aireos_command.to_lines(test_stdout))
     print(result[0])
     self.assertEqual(len(result[0]), 3)
Esempio n. 7
0
def get_host_attributes(api, host):
    """
    This function expects one string, this hostname to lookup variables for.
    Args:
        api: FreeIPA API Object
        host: Name of Hostname
    Returns: Dict of Host vars if found else None
    """
    try:
        result = api.Command.host_show(u(host))['result']
        if 'usercertificate' in result:
            del result['usercertificate']
        return json.dumps(result, indent=1)
    except errors.NotFound as e:
        return {}
Esempio n. 8
0
    def translate_idps(idps, api_version):
        ''' Translates a list of dictionaries into a valid identityProviders config '''
        idp_list = []

        if not isinstance(idps, list):
            raise errors.AnsibleFilterError("|failed expects to filter on a list of identity providers")
        for idp in idps:
            if not isinstance(idp, dict):
                raise errors.AnsibleFilterError("|failed identity providers must be a list of dictionaries")

            cur_module = sys.modules[__name__]
            idp_class = getattr(cur_module, idp['kind'], None)
            idp_inst = idp_class(api_version, idp) if idp_class is not None else IdentityProviderBase(api_version, idp)
            idp_inst.set_provider_items()
            idp_list.append(idp_inst)

        IdentityProviderBase.validate_idp_list(idp_list)
        return u(yaml.dump([idp.to_dict() for idp in idp_list],
                           allow_unicode=True,
                           default_flow_style=False,
                           width=float("inf"),
                           Dumper=AnsibleDumper))
def validate_ip_in_cidr(ip, cidr):
    address = ipaddress.ip_address(six.u(ip))
    network = ipaddress.ip_network(six.u(cidr), strict=False)
    if address not in network:
        raise errors.ValidationError("IP {0} not in subnet CIDR {1}.".format(
            ip, cidr))