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)
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 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)
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)
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 {}
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))