Exemplo n.º 1
0
 def test_dns_return(self):
     '''
     test the return for a dns grain. test for issue:
     https://github.com/saltstack/salt/issues/41230
     '''
     resolv_mock = {
         'domain':
         '',
         'sortlist': [],
         'nameservers': [
             ipaddress.IPv4Address(IP4_ADD1),
             ipaddress.IPv6Address(IP6_ADD1), IP6_ADD_SCOPE
         ],
         'ip4_nameservers': [ipaddress.IPv4Address(IP4_ADD1)],
         'search': ['test.saltstack.com'],
         'ip6_nameservers':
         [ipaddress.IPv6Address(IP6_ADD1), IP6_ADD_SCOPE],
         'options': []
     }
     ret = {
         'dns': {
             'domain': '',
             'sortlist': [],
             'nameservers': [IP4_ADD1, IP6_ADD1, IP6_ADD_SCOPE],
             'ip4_nameservers': [IP4_ADD1],
             'search': ['test.saltstack.com'],
             'ip6_nameservers': [IP6_ADD1, IP6_ADD_SCOPE],
             'options': []
         }
     }
     with patch.object(salt.utils.dns, 'parse_resolv',
                       MagicMock(return_value=resolv_mock)):
         assert core.dns() == ret
Exemplo n.º 2
0
def hex2ip(hex_ip, invert=False):
    '''
    Convert a hex string to an ip, if a failure occurs the original hex is
    returned. If 'invert=True' assume that ip from /proc/net/<proto>
    '''
    if len(hex_ip) == 32:  # ipv6
        ip = []
        for i in range(0, 32, 8):
            ip_part = hex_ip[i:i + 8]
            ip_part = [ip_part[x:x + 2] for x in range(0, 8, 2)]
            if invert:
                ip.append("{0[3]}{0[2]}:{0[1]}{0[0]}".format(ip_part))
            else:
                ip.append("{0[0]}{0[1]}:{0[2]}{0[3]}".format(ip_part))
        try:
            return ipaddress.IPv6Address(":".join(ip)).compressed
        except ipaddress.AddressValueError as ex:
            log.error('hex2ip - ipv6 address error: {0}'.format(ex))
            return hex_ip

    try:
        hip = int(hex_ip, 16)
    except ValueError:
        return hex_ip
    if invert:
        return '{3}.{2}.{1}.{0}'.format(hip >> 24 & 255,
                                        hip >> 16 & 255,
                                        hip >> 8 & 255,
                                        hip & 255)
    return '{0}.{1}.{2}.{3}'.format(hip >> 24 & 255,
                                    hip >> 16 & 255,
                                    hip >> 8 & 255,
                                    hip & 255)
Exemplo n.º 3
0
def _load_minion(minion_id, cache):
    data_minion, grains, pillar = salt.utils.minions.get_minion_data(
        minion_id, __opts__)

    if minion_id != data_minion:
        log.error('Asked for minion {0}, got {1}'.format(
            minion_id, data_minion))
        raise LookupError

    if not grains:
        log.warning('No grain data for minion id {0}'.format(minion_id))
        grains = {}

    if not pillar:
        log.warning('No pillar data for minion id {0}'.format(minion_id))
        pillar = {}

    addrs = {
        4: sorted(
            [ipaddress.IPv4Address(addr) for addr in grains.get('ipv4', [])]),
        6: sorted(
            [ipaddress.IPv6Address(addr) for addr in grains.get('ipv6', [])])
    }

    mine = cache.fetch('minions/{0}'.format(minion_id), 'mine')

    return grains, pillar, addrs, mine
Exemplo n.º 4
0
def _load_minion(minion_id, cache):
    data_minion, grains, pillar = salt.utils.minions.get_minion_data(
        minion_id, __opts__
    )

    if minion_id != data_minion:
        log.error("Asked for minion %s, got %s", minion_id, data_minion)
        raise LookupError

    if not grains:
        log.warning("No grain data for minion id %s", minion_id)
        grains = {}

    if not pillar:
        log.warning("No pillar data for minion id %s", minion_id)
        pillar = {}

    addrs = {
        4: sorted([ipaddress.IPv4Address(addr) for addr in grains.get("ipv4", [])]),
        6: sorted([ipaddress.IPv6Address(addr) for addr in grains.get("ipv6", [])]),
    }

    mine = cache.fetch("minions/{}".format(minion_id), "mine")

    return grains, pillar, addrs, mine