Advertisement
zamotivator

Untitled

Jul 4th, 2012
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. ubuntu@ip-10-108-25-74:~/1793$ cat fabfile.py
  2. #!/usr/bin/env python
  3.  
  4. import os
  5. import scidb
  6. from fabric.api import env
  7. from fabric.api import run
  8. from fabric.decorators import runs_once, hosts, parallel
  9. from fabric.context_managers import settings, hide
  10.  
  11. env.use_ssh_config=True
  12. env.disable_known_hosts=True
  13. env.forward_agent=True
  14. env.no_keys=True
  15. env.hosts = list(i['host'] for i in scidb.ilist())
  16.  
  17. @hosts('127.0.0.1')
  18. def ilist():
  19. column_list = ['id', 'host', 'port', 'online', 'path']
  20. format_string = '\t'.join(list('%%(%s)s' % column for column in column_list))
  21. header_string = format_string % dict(zip(column_list, column_list))
  22. print os.linesep.join([header_string] + [format_string % i for i in scidb.ilist()])
  23.  
  24. def ipath():
  25. instance = scidb.get_instance(env.host)
  26. print "path='%s'" % instance['path']
  27.  
  28. def ls():
  29. run("uname -a")
  30.  
  31. ubuntu@ip-10-108-25-74:~/1793$ cat scidb.py
  32. #!/usr/bin/env python
  33.  
  34. import os
  35. from functools import wraps
  36.  
  37. from fabric.operations import local
  38. from fabric.context_managers import settings, hide
  39.  
  40. CACHE={}
  41.  
  42. def single(f):
  43. global CACHE
  44. CACHE[f.__name__] = None
  45. @wraps(f)
  46. def wrapper():
  47. global CACHE
  48. if CACHE[f.__name__] is None:
  49. CACHE[f.__name__] = f()
  50. return CACHE[f.__name__]
  51. return wrapper
  52.  
  53. @single
  54. def idict():
  55. with settings(hide('running')):
  56. output = local('iquery -aq "%s"' % "list('instances')", capture=True)
  57. output = output.split(os.linesep)[1:]
  58. idict = {}
  59. for line in output:
  60. (_, host, port, id, online, path) = tuple(line.split(","))
  61. idict[id] = dict(id=id, host=host, port=port, online=online, path=path)
  62. return idict
  63.  
  64. @single
  65. def ilist():
  66. l = list(idict())
  67. l.sort()
  68. return list(idict()[id] for id in l)
  69.  
  70. @single
  71. def hdict():
  72. result = {}
  73. for id in idict():
  74. result[ idict()[id]['host'] ] = idict()[id]
  75. return result
  76.  
  77. def get(host, key):
  78. return hdict()[host][key]
  79.  
  80. def get_path(host):
  81. return get(host, 'path')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement