pvl/hosts.py
author Tero Marttila <terom@paivola.fi>
Mon, 16 Dec 2013 20:21:09 +0200
changeset 277 5f0b67ba454f
child 282 63135113fe01
permissions -rw-r--r--
...add missing pvl.hosts, with dynamic hosts support
277
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
"""
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
    Host definitions.
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
"""
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
import pvl.args
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
import pvl.dns.zone
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
import configobj
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
import ipaddr
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
import optparse
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
def optparser (parser) :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    13
    hosts = optparse.OptionGroup(parser, "Hosts input")
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
    hosts.add_option('--hosts-charset',         metavar='CHARSET',  default='utf-8', 
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
            help="Encoding used for host files")
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
    hosts.add_option('--hosts-domain',          metavar='DOMAIN',
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
            help="Default domain for hosts")
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
    
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
    return hosts
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
class Host (object) :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
    @classmethod
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
    def expand (cls, options, host, range, ip, **opts) :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
        host = pvl.dns.zone.parse_generate_field(host)
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
        ip = pvl.dns.zone.parse_generate_field(ip)
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
        for i in range :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
            yield cls.build(options, host(i),
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
                    ip  = ip(i),
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    31
                    **opts
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    32
            )
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    33
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    34
    @classmethod
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    35
    def config (cls, options, host, ip=None, **extra) :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    36
        """
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    37
            Yield Hosts from a config section's scalars.
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
        """
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    39
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
        if '{' in host :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    41
            pre, host = host.split('{', 1)
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    42
            range, post = host.rsplit('}', 1)
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    43
            
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    44
            range = pvl.dns.zone.parse_generate_range(range)
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    45
            host = pre + "$" + post
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    46
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    47
            for host in cls.expand(options, host, range, ip, **extra) :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48
                yield host
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    49
        else :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    50
            yield cls.build(options, host, ip=ip, **extra)
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    51
    
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    52
    @classmethod
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    53
    def build (cls, options, host, domain=None, ip=None, owner=None, **extra) :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    54
        """
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    55
            Return a Host from a config section's scalars.
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    56
        """
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    57
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    58
        ethernet = []
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    59
        alias = []
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    60
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    61
        for attr, value in extra.iteritems() :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    62
            if attr.startswith('ethernet') :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    63
                ethernet.append(value)
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    64
            elif attr.startswith('alias') :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    65
                alias.append(value)
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    66
            else :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    67
                raise ValueError("Unknown host attr: %s=%s" % (attr, value))
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    68
        
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    69
        if domain is None :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    70
            domain = options.hosts_domain
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    71
        
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    72
        return cls(host,
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    73
                domain      = domain,
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    74
                ip          = ipaddr.IPAddress(ip) if ip else None,
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    75
                ethernet    = ethernet,
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    76
                alias       = alias,
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    77
                owner       = owner,
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    78
        )
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    79
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    80
    def __init__ (self, host, domain=None, ip=None, ethernet=(), alias=(), owner=None) :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    81
        """
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    82
            host        - str
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    83
            domain      - str
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    84
            ip          - ipaddr.IPAddress
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    85
            ethernet    - list
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    86
            alias       - list
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    87
            owner       - str: LDAP uid
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    88
        """
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    89
        self.host = host
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    90
        self.domain = domain
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    91
        self.ip = ip
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    92
        self.ethernet = ethernet
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    93
        self.alias = alias
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    94
        self.owner = owner
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    95
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    96
    def __str__ (self) :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    97
        return str(self.host)
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    98
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    99
def apply_hosts_file (options, file) :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   100
    """
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   101
        Load Hosts from a file.
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   102
    """
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   103
    config = configobj.ConfigObj(file,
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   104
            encoding    = options.hosts_charset,
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   105
    )
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   106
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   107
    for name in config.sections :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   108
        for host in Host.config(options, name, **config[name]) :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   109
            yield host
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   110
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   111
def apply_hosts (options, files) :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   112
    """
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   113
        Load Hosts from files.
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   114
    """
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   115
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   116
    for file in files :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   117
        for host in apply_hosts_file(options, file) :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   118
            yield host
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   119
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   120
def sort_hosts (options, hosts) :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   121
    """
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   122
        Yields hosts with a sorting key.
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   123
    """
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   124
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   125
    for host in hosts :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   126
        if host.ip :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   127
            sort = host.ip
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   128
        else :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   129
            # sorts first
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   130
            sort = ipaddr.IPAddress(0)
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   131
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   132
        yield sort, host
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   133
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   134
def apply (options, args) :
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   135
    """
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   136
        Load Hosts from arguments.
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   137
    """
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   138
    
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   139
    # without unicode
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   140
    files = pvl.args.apply_files(args, 'r')
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   141
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   142
    # load configs
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   143
    hosts = apply_hosts(options, files)
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   144
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   145
    # sort
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   146
    hosts = list(sort_hosts(options, hosts))
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   147
    hosts.sort()
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   148
    hosts = [host for sort, host in hosts]
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   149
    
5f0b67ba454f ...add missing pvl.hosts, with dynamic hosts support
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   150
    return hosts