#!/usr/bin/python # arg1 is the nodename import sys from subprocess import call # some settings # where nodeinfo.py is nodeinfodir = '/export/rocks/install/tools/nodeinfo' rockscmd = '/opt/rocks/bin/rocks' # not in standard location... sys.path.append(nodeinfodir) import nodeinfo nodename = sys.argv[1] # init the nodeinfo "db" info = nodeinfo.infostor() # fetch info for this node rack = info.get_node_var_flex(nodename, 'ROCKS_RACK') rank = info.get_node_var_flex(nodename, 'ROCKS_RANK') membership = info.get_node_var_flex(nodename, 'ROCKS_MEMBERSHIP') #for now, just make up a value, don't think this gets used anywhere... cpus = '7' ip_private = info.get_node_var_flex(nodename, 'IP_PRIVATE') mac_private = info.get_node_var_flex(nodename, 'MAC_PRIVATE') ip_public = info.get_node_var_flex(nodename, 'IP_PUBLIC') mac_public = info.get_node_var_flex(nodename, 'MAC_PUBLIC') # hardwire the ethernet module module = 'bnx2' name_public = info.get_node_var_flex(nodename, 'NAME_PUBLIC') ganglia_address = info.get_node_var_flex(nodename, 'GANGLIA_MCAST') #print nodename, rack, rank, membership, cpus, ip_private, mac_private, ip_public, mac_public, module # for now, doesn't verfiy that node is not already in ROCKS DB #rockscmd = '/bin/echo' # cmd is a list... cmd = [ rockscmd, 'add host', nodename, 'cpus=' + cpus, 'rack=' + rack, 'rank=' + rank, 'membership=' + membership, 'os=linux' ] call(cmd) cmd = [ rockscmd, 'add', 'host', 'interface', nodename, 'eth0' ] call(cmd) cmd = [ rockscmd, 'set', 'host', 'interface', 'ip', nodename, 'eth0', ip_private ] call(cmd) cmd = [ rockscmd, 'set', 'host', 'interface', 'name', nodename, 'eth0', nodename ] call(cmd) cmd = [ rockscmd, 'set', 'host', 'interface', 'mac', nodename, 'eth0', mac_private ] call(cmd) cmd = [ rockscmd, 'set', 'host', 'interface', 'module', nodename, 'eth0', module ] call(cmd) cmd = [ rockscmd, 'set', 'host', 'interface', 'subnet', nodename, 'eth0', 'private' ] call(cmd) cmd = [ rockscmd, 'add', 'host', 'interface', nodename, 'eth1' ] call(cmd) cmd = [ rockscmd, 'set', 'host', 'interface', 'ip', nodename, 'eth1', ip_public ] call(cmd) cmd = [ rockscmd, 'set', 'host', 'interface', 'name', nodename, 'eth1', name_public ] call(cmd) cmd = [ rockscmd, 'set', 'host', 'interface', 'mac', nodename, 'eth1', mac_public ] call(cmd) cmd = [ rockscmd, 'set', 'host', 'interface', 'module', nodename, 'eth1', module ] call(cmd) cmd = [ rockscmd, 'set', 'host', 'interface', 'subnet', nodename, 'eth1', 'public' ] call(cmd) cmd = [ rockscmd, 'add', 'host', 'attr', nodename, 'ganglia_address', ganglia_address ] call(cmd) # set install as boot action cmd = [ rockscmd, 'set', 'host', 'boot', nodename, 'action=install' ] call(cmd) # sync config cmd = [ rockscmd, 'sync', 'config' ] call(cmd)