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")
예제 #2
0
def get_info(flags):
    node = Service('node')

    ch = yield node.info('ppn', flags)
    info = yield ch.rx.get()

    raise gen.Return(info)
예제 #3
0
 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
예제 #4
0
 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
예제 #5
0
 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
예제 #6
0
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()
예제 #7
0
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()