Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ubuntu@ip-10-108-25-74:~/1793$ cat fabfile.py
- #!/usr/bin/env python
- import os
- import scidb
- from fabric.api import env
- from fabric.api import run
- from fabric.decorators import runs_once, hosts, parallel
- from fabric.context_managers import settings, hide
- env.use_ssh_config=True
- env.disable_known_hosts=True
- env.forward_agent=True
- env.no_keys=True
- env.hosts = list(i['host'] for i in scidb.ilist())
- @hosts('127.0.0.1')
- def ilist():
- column_list = ['id', 'host', 'port', 'online', 'path']
- format_string = '\t'.join(list('%%(%s)s' % column for column in column_list))
- header_string = format_string % dict(zip(column_list, column_list))
- print os.linesep.join([header_string] + [format_string % i for i in scidb.ilist()])
- def ipath():
- instance = scidb.get_instance(env.host)
- print "path='%s'" % instance['path']
- def ls():
- run("uname -a")
- ubuntu@ip-10-108-25-74:~/1793$ cat scidb.py
- #!/usr/bin/env python
- import os
- from functools import wraps
- from fabric.operations import local
- from fabric.context_managers import settings, hide
- CACHE={}
- def single(f):
- global CACHE
- CACHE[f.__name__] = None
- @wraps(f)
- def wrapper():
- global CACHE
- if CACHE[f.__name__] is None:
- CACHE[f.__name__] = f()
- return CACHE[f.__name__]
- return wrapper
- @single
- def idict():
- with settings(hide('running')):
- output = local('iquery -aq "%s"' % "list('instances')", capture=True)
- output = output.split(os.linesep)[1:]
- idict = {}
- for line in output:
- (_, host, port, id, online, path) = tuple(line.split(","))
- idict[id] = dict(id=id, host=host, port=port, online=online, path=path)
- return idict
- @single
- def ilist():
- l = list(idict())
- l.sort()
- return list(idict()[id] for id in l)
- @single
- def hdict():
- result = {}
- for id in idict():
- result[ idict()[id]['host'] ] = idict()[id]
- return result
- def get(host, key):
- return hdict()[host][key]
- def get_path(host):
- return get(host, 'path')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement