def main(): warning = "1; app status broken: " error = "2; depth is full: " node = Service("node") try: chan = yield node.list() except: print "1; error while connect to service node" exit(0) app_list = yield chan.rx.get() for name in app_list: app = Service(name) try: chan = yield app.info() info = yield chan.rx.get() if info["queue"]["depth"] == info["queue"]["capacity"]: if name != "v012-karma": error = error + name + "," except: warning = warning + name + "," if error != "2; depth is full: ": print (error) elif warning != "1; app status broken: ": print (warning) else: print ("0;Ok")
def get_info(flags): node = Service('node') ch = yield node.info('ppn', flags) info = yield ch.rx.get() raise gen.Return(info)
def execute(self): appNames = yield self.node.list() appInfoList = {} for appName in appNames: info = '' try: app = Service(appName, blockingConnect=False) yield app.connectThroughLocator(self.locator) info = yield app.info() except Exception as err: info = str(err) finally: appInfoList[appName] = info result = {'apps': appInfoList} yield result
def execute(self): appNames = yield self.node.list() appInfoList = {} for appName in appNames: info = '' try: app = Service(appName, blockingConnect=False) yield app.connectThroughLocator(self.locator) info = yield app.info() except Exception as err: info = str(err) finally: appInfoList[appName] = info result = { 'apps': appInfoList } yield result
def info(self, apps): infos = {} for app_ in apps: info = '' try: app = Service(app_, blockingConnect=False) yield app.connectThroughLocator(self.locator) info = yield app.info() if all([self._expand, self._storage is not None, 'profile' in info]): info['profile'] = yield profile.View(self._storage, info['profile']).execute() except Exception as err: info = str(err) finally: infos[app_] = info result = { 'apps': infos } yield result
def app_info(task, response): info = dict() try: name = task["appname"] version = task["version"] username = task["username"] # todo: without version - search by mask? regex? appname = appname_from_name_version(name, version) if username: # not admin - all apps user_apps = yield app.List(storage).execute() else: user_apps = yield db.user_apps(username) if appname not in user_apps: raise ValueError("App %s doesn't exist" % appname) hosts = yield hostdb.hosts() for host in hosts: appinstance = None try: appinstance = Service(appname, blockingConnect=False) yield appinstance.connect(host=host) info[host] = yield appinstance.info() except Exception as err: log.error("Unable to connect to app %s host %s" % (appname, host)) finally: if appinstance is not None: appinstance.disconnect() except KeyError as err: response.error(-500, "Missing argument %s" % str(err)) except Exception as err: log.error("Unknown error %s" % repr(err)) response.error(-100, "Unknown error %s" % repr(err)) else: response.write(info) finally: response.close()
from cocaine.services import Service from cocaine.exceptions import TimeoutError __author__ = 'EvgenySafronov <*****@*****.**>' if __name__ == '__main__': s = Service('node') while True: try: info = s.info().then(lambda r: r.get()).then(lambda r: r.get()).then(lambda r: r.get()).get() print(info) except TimeoutError as err: print(err) except Exception as err: print(err, type(err))
#!/usr/bin/env python from cocaine.services import Service s = Service("node", "cocaine-log01g.kit.yandex.net") for i in xrange(0,1000): s.info() s.reconnect() s.info()