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