summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorNarayan Desai <desai@mcs.anl.gov>2005-09-27 20:10:03 +0000
committerNarayan Desai <desai@mcs.anl.gov>2005-09-27 20:10:03 +0000
commit3bd03498bfebbf45d0d8afcb2e4cea3758111e5a (patch)
tree9dd440c15b35b5f114aaa8104fc6f9cf8f778693 /tools
parent3e7edf541dcb3466b64d771afa16c92918aa687c (diff)
downloadbcfg2-3bd03498bfebbf45d0d8afcb2e4cea3758111e5a.tar.gz
bcfg2-3bd03498bfebbf45d0d8afcb2e4cea3758111e5a.tar.bz2
bcfg2-3bd03498bfebbf45d0d8afcb2e4cea3758111e5a.zip
(Logical change 1.322)
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@1312 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'tools')
-rw-r--r--tools/upgrade.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/tools/upgrade.py b/tools/upgrade.py
index e69de29bb..7c705fbe0 100644
--- a/tools/upgrade.py
+++ b/tools/upgrade.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+
+'''This script updates to fully qualified hostnames for 0.6.11'''
+__revision__ = '$Revision:$'
+
+from ConfigParser import ConfigParser
+from elementtree.ElementTree import XML, tostring
+from socket import gethostbyname
+from sys import argv
+from glob import glob
+from os import system
+
+if __name__ == '__main__':
+ hostcache = {}
+ if len(argv) > 1:
+ domainlist = argv[-1].split(':')
+ else:
+ domainlist = ['mcs.anl.gov']
+ cf = ConfigParser()
+ cf.read(['/etc/bcfg2.conf'])
+ metadata = XML(open(cf.get('server', 'metadata') + '/metadata.xml').read())
+ for client in metadata.findall('.//Client'):
+ if client.get('name').count('.') == 0:
+ for dom in domainlist:
+ print "resolving name %s.%s..." % (client.get('name'), dom),
+ try:
+ hostinfo = gethostbyname(client.get('name') + '.' + dom)
+ hostcache[client.get('name')] = dom
+ client.set('name', "%s.%s" % (client.get('name'), dom))
+ print ""
+ break
+ except:
+ print "FAILED"
+ continue
+ print hostinfo
+
+ open(cf.get('server', 'metadata') + '/metadata.xml.new'), 'w').write(tostring(metadata))
+
+ sshdir = cf.get('server', 'repository') + '/SSHbase/'
+ for key in glob(sshdir + "*key.H_*"):
+ hostname = key.split('.H_')[1]
+ if not hostcache.has_key(hostname):
+ for dom in domainlist:
+ try:
+ hostinfo = gethostbyname(hostname + '.' + dom)
+ hostcache[hostname] = dom
+ break
+ except:
+ continue
+ if hostcache.has_key(hostname):
+ system("mv %s %s.%s" % (key, key, hostcache[hostname]))