Пример #1
0
def walk_snmp_for_ifname(cfg, hostname, ifname=None, debug=False):
    unqdn = '.'.join(mothership.get_unqdn(cfg, hostname))
    print '\n  hostname: %s' % unqdn
    data = []
    if ifname:
        snmp_dict = walk_snmp_for_network(
            cfg,
            mothership.retrieve_network_row_by_ifname(
                cfg,
                ifname,
                filter={
                    'server_id':
                    mothership.retrieve_server_row_by_unqdn(cfg, unqdn).id
                }), debug)
        if snmp_dict:
            data.append(snmp_dict)
    else:
        for i in mothership.retrieve_network_rows(
                cfg,
                serverid=mothership.retrieve_server_row_by_unqdn(cfg,
                                                                 unqdn).id):
            snmp_dict = walk_snmp_for_network(cfg, i, debug=debug)
            if snmp_dict:
                data.append(snmp_dict)
    return data
Пример #2
0
 def __init__(self, cfg, host, user, passwd):
     unqdn = '.'.join(mothership.get_unqdn(cfg, host))
     #print 'Original: %s' % unqdn
     self.session = XenAPI.Session('https://%s:443' % unqdn)
     try:
         self.session.xenapi.login_with_password(user, passwd)
     except XenAPI.Failure, e:
         # If slave host from pool chosed, contact master
         exec 'err=%s' % str(e)
         #print 'Error: %s' % err[1]
         self.session = XenAPI.Session('https://%s:443' % err[1])
         self.session.xenapi.login_with_password(user, passwd)
Пример #3
0
 def __init__(self, cfg, host, user, passwd):
     unqdn = ".".join(mothership.get_unqdn(cfg, host))
     # print 'Original: %s' % unqdn
     self.session = XenAPI.Session("https://%s:443" % unqdn)
     try:
         self.session.xenapi.login_with_password(user, passwd)
     except XenAPI.Failure, e:
         # If slave host from pool chosed, contact master
         exec "err=%s" % str(e)
         # print 'Error: %s' % err[1]
         self.session = XenAPI.Session("https://%s:443" % err[1])
         self.session.xenapi.login_with_password(user, passwd)
Пример #4
0
def walk_snmp_for_ifname(cfg, hostname, ifname=None, debug=False):
    unqdn = '.'.join(mothership.get_unqdn(cfg, hostname))
    print '\n  hostname: %s' % unqdn
    data = []
    if ifname:
        snmp_dict = walk_snmp_for_network(cfg,
            mothership.retrieve_network_row_by_ifname(cfg, ifname, filter={
                'server_id':mothership.retrieve_server_row_by_unqdn(cfg,
                unqdn).id}), debug)
        if snmp_dict:
            data.append(snmp_dict)
    else:
        for i in mothership.retrieve_network_rows(cfg,
            serverid=mothership.retrieve_server_row_by_unqdn(cfg, unqdn).id):
            snmp_dict = walk_snmp_for_network(cfg, i,  debug=debug)
            if snmp_dict:
                data.append(snmp_dict)
    return data
Пример #5
0
def classify(cfg, name):
    """
    Puppet external node classifier.  Returns the hash to dump as yaml.
    """
    classes = []
    mtags = []
    environment = ""
    parameters = {}
    groups = []
    security_level = 0
    server = None
    server_id = None
    mtag = None
    networks = []
    sudoers = []
    hostname, realm, site_id = mothership.get_unqdn(cfg, name)

    # Unique or unqualified domain name
    unqdn = "%s.%s.%s" % (hostname, realm, site_id)
    parameters['unqdn'] = unqdn
    parameters['site_id'] = site_id
    parameters['realm'] = realm

    # LDAP groups
    for g in mothership.add_ldap_groups(hostname, realm, site_id):
        groups.append(g)

    # Server
    server = cfg.dbsess.query(Server).\
        filter(Server.hostname==hostname).\
        filter(Server.realm==realm).\
        filter(Server.site_id==site_id).\
        first()
    if server:
        mtag = cfg.dbsess.query(Tag).filter(Tag.name==server.tag).first()

    if server and server.id:
        parameters['server_id'] = server.id
        networks = cfg.dbsess.query(Network).\
                filter(Network.server_id==server.id).all()
        for network in networks:
            if network.interface=='eth0':
                if network.static_route:
                    parameters['mgmt_gateway'] = network.static_route
                if network.ip:
                    parameters['mgmt_ip'] = network.ip
                if network.netmask:
                    parameters['mgmt_netmask'] = network.netmask
                if network.ip and network.netmask:
                    mgmt_cidr = mothership.network_mapper.remap(cfg,
                        'cidr', nic=network.interface, siteid=site_id)
                    parameters['mgmt_subnet'] = mothership.\
                        network_mapper.get_network(mgmt_cidr)
            if network.interface=='eth1':
                if network.static_route:
                    parameters['default_gateway'] = network.static_route
                if network.ip:
                    parameters['primary_ip'] = network.ip
                if network.netmask:
                    parameters['primary_netmask'] = network.netmask
                if network.bond_options:
                    parameters['bond_options'] = network.bond_options

    # Tag
    if mtag and mtag.name:
        mtags.append(mtag.name)
        classes.append("tags::%s" % mtag.name)
        parameters['mtag'] = mtag.name

    if server and server.tag_index:
        parameters['mtag_index'] = server.tag_index

    # Security
    if mtag and mtag.security_level != None:
        security_level = mtag.security_level

    if server and server.security_level != None:
        security_level = server.security_level

    if security_level != None:
        classes.append("security%s" % security_level)
        parameters['security_level'] = security_level

    # Key/values
    kvs = mothership.kv.collect(cfg, unqdn)
    for kv in kvs:
        key = kv.key
        value = kv.value
        if key == 'environment':
            environment = value
        elif key == 'tag':
            mtags.append(value)
            classes.append("tags::%s" % value)
        elif key == 'class':
            classes.append(value)
        elif key == 'group':
            groups.append(value)
        else:
            parameters[key] = value

    # if no environment defined, use site_id
    if not environment:
        environment = site_id

    # sudoers
    sudoers = mothership.users.gen_sudoers_groups(cfg, unqdn)

    parameters['mtags'] = mtags
    parameters['groups'] = groups
    if sudoers:
        parameters['sudoers_groups'] = sudoers

    node = {}
    node['classes'] = classes
    node['environment'] = environment
    node['parameters'] = parameters

    return node