Ejemplo n.º 1
0
def api_v2_service(service):
    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service(service)
    output = list()
    for s in services:
        output.append(s.config()[s.service])
    return output
Ejemplo n.º 2
0
def status(service, environ):
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service("%s-%s" % (service, environ))
    instances = list()
    urls = dict()
    balancers = dict()
    for s in services:
        for g in s.groups:
            # XXX pull in status for instance events
            status = g.status
            for i in g.instances:
                urls[i.id] = {
                    'instance':
                    '/instance/%s/%s/%s' % (service, environ, i['id']),
                    'stats': '/stats/%s' % i['id']
                }
                instances.append(i)
        for b in s.balancers:
            for i in b.instances:
                if i.id not in balancers:
                    balancers[i.id] = list()
                balancers[i.id].append(i.balancer_state)
    output += servicenav(s, 'status')
    output += render_template('status.html',
                              service=service,
                              environ=environ,
                              instances=instances,
                              balancers=balancers,
                              urls=urls)

    output += footer()
    return output
Ejemplo n.º 3
0
def status(service, environ):
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service("%s-%s" % (service, environ))
    instances = list()
    urls = dict()
    balancers = dict()
    for s in services:
        for g in s.groups:
            # XXX pull in status for instance events
            status = g.status
            for i in g.instances:
                urls[i.id] = {
                        'instance': '/instance/%s/%s/%s' % (service, environ,
                            i['id']),
                        'stats': '/stats/%s' % i['id']
                        }
                instances.append(i)
        for b in s.balancers:
            for i in b.instances:
                if i.id not in balancers:
                    balancers[i.id] = list()
                balancers[i.id].append(i.balancer_state)
    output += servicenav(s, 'status')
    output += render_template('status.html', service=service,
            environ=environ, instances=instances, balancers=balancers,
            urls=urls)

    output += footer()
    return output
Ejemplo n.º 4
0
def api_v2_service(service):
    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service(service)
    output = list()
    for s in services:
        output.append(s.config()[s.service])
    return output
Ejemplo n.º 5
0
def api_v2_services():
    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.list_services()
    output = list()
    for s in services:
        if s.service not in output:
            output.append(s.service)
    return output
Ejemplo n.º 6
0
def api_v2_services():
    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.list_services()
    output = list()
    for s in services:
        if s.service not in output:
            output.append(s.service)
    return output
Ejemplo n.º 7
0
def alerts_service(service, environ):
    output = header()
    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service(service)
    for s in services:
        output += servicenav(s, 'alerts')
    output += "NOT IMPLEMENTED (yet)"
    return output
Ejemplo n.º 8
0
def api_v1_regions_json():
    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.list_services()
    output = list()
    for s in services:
        if s.region not in outoput:
            output.append(s.region)
    return json.dumps(output)
Ejemplo n.º 9
0
def alerts_service(service, environ):
    output = header()
    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service(service)
    for s in services:
        output += servicenav(s, 'alerts')
    output += "NOT IMPLEMENTED (yet)"
    return output
Ejemplo n.º 10
0
def api_v1_regions_json():
    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.list_services()
    output = list()
    for s in services:
        if s.region not in outoput:
            output.append(s.region)
    return json.dumps(output)
Ejemplo n.º 11
0
def service_info(service, environ):
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service("%s-%s" % (service, environ))
    for s in services:
        output += servicenav(s, 'service')
        output += render_template('service.html', service=s.config())

    output += footer()
    return output
Ejemplo n.º 12
0
def service_info(service, environ):
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service("%s-%s" % (service, environ))
    for s in services:
        output += servicenav(s, 'service')
        output += render_template('service.html', service=s.config())

    output += footer()
    return output
Ejemplo n.º 13
0
def events_all():
    output = header()
    statuslist = list()

    bc = billow.billowCloud(regions=config.config['regions'])
    for r in bc.regions:
        rawstatus = r.asg.get_instance_status(list(),
                                              filters={'event.code': '*'})
        statuslist.extend(rawstatus)

    output += render_template('eventlist.html', status=statuslist)
    output += footer()
    return output
Ejemplo n.º 14
0
def stats_info(instance):
    bc = billow.billowCloud(regions=config.config['regions'])
    instances = list()
    for r in bc.regions:
        instances = r.asg.get_instance(instance)
        if instances:
            break
    if not instances:
        return '', 404
    i = instances[0]

    statsurl = config.config['statsurl']
    return redirect("%s%s" % (statsurl, i.private_dns_name.split('.')[0]), 302)
Ejemplo n.º 15
0
def stats_info(instance):
    bc = billow.billowCloud(regions=config.config['regions'])
    instances = list()
    for r in bc.regions:
        instances = r.asg.get_instance(instance)
        if instances:
            break
    if not instances:
        return '', 404
    i = instances[0]

    statsurl = config.config['statsurl']
    return redirect("%s%s" % (statsurl, str(i.id)), 302)
Ejemplo n.º 16
0
def instance_info(instance):
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    instances = list()
    for r in bc.regions:
        instances = r.asg.get_instance(instance)
        for i in instances:
            inst = billow.billowInstance(i.id, region=r.region)
            inst.push_instance_info(i)
            output += render_template('instance.html', instance=inst)

    output += footer()
    return output
Ejemplo n.º 17
0
def service_config(service, environ):
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service("%s-%s" % (service, environ))
    for s in services:
        output += servicenav(s, 'config')
        sconfig = s.config()
        output += render_template('config.html', service=service,
                environ=environ, raw=yaml.safe_dump(sconfig,
                    encoding='utf-8', allow_unicode=True))

    output += footer()
    return output
Ejemplo n.º 18
0
def services():
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.list_services()
    svcs = list()
    for s in services:
        svc = {'service': s.service, 'environ': s.environ, 'region': s.region}
        svcs.append(svc)
    svcs.sort(key=lambda x: x['service'])
    output += render_template('servicelist.html', services=svcs)

    output += footer()
    return output
Ejemplo n.º 19
0
def instance_info(instance):
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    instances = list()
    for r in bc.regions:
        instances = r.asg.get_instance(instance)
        for i in instances:
            inst = billow.billowInstance(i.id, region=r.region)
            inst.push_instance_info(i)
            output += render_template('instance.html', instance=inst)

    output += footer()
    return output
Ejemplo n.º 20
0
def events(service, environ):
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service("%s-%s" % (service, environ))
    instances = list()
    urls = dict()
    for s in services:
        output += servicenav(s, 'events')
        for g in s.groups:
            output += render_template('event.html', group=g.group,
                    events=g.events)

    output += footer()
    return output
Ejemplo n.º 21
0
def events_all():
    output = header()
    statuslist = list()

    bc = billow.billowCloud(regions=config.config['regions'])
    for r in bc.regions:
        rawstatus = r.asg.get_instance_status(
                list(),
                filters = { 'event.code': '*' }
                )
        statuslist.extend(rawstatus)

    output += render_template('eventlist.html', status=statuslist)
    output += footer()
    return output
Ejemplo n.º 22
0
def events(service, environ):
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service("%s-%s" % (service, environ))
    instances = list()
    urls = dict()
    for s in services:
        output += servicenav(s, 'events')
        for g in s.groups:
            output += render_template('event.html',
                                      group=g.group,
                                      events=g.events)

    output += footer()
    return output
Ejemplo n.º 23
0
def endpoint(service, environ):
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service("%s-%s" % (service, environ))

    for s in services:
        sinfo = s.info()
        endpoints = get_all_endpoints(s)

        output += servicenav(s, 'endpoint')
        output += render_template('endpoint.html', service=sinfo,
                endpoints=endpoints)

    output += footer()
    return output
Ejemplo n.º 24
0
def api_v1_service_environ(service, environ):
    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service("%s-%s" % (service, environ))
    output = list()
    for s in services:
        for g in s.groups:
            for i in g.instances:
                insts = g.asg.get_instance(i['id'])
                for inst in insts:
                    if len(str(inst.public_dns_name)) > 0:
                        output.append(str(inst.public_dns_name))
                    else:
                        output.append(str(inst.private_dns_name))
    resp = app.make_response('\n'.join(output))
    resp.mimetype = "text/plain"
    return resp
Ejemplo n.º 25
0
def api_v1_service_environ(service, environ):
    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service("%s-%s" % (service, environ))
    output = list()
    for s in services:
        for g in s.groups:
            for i in g.instances:
                insts = g.asg.get_instance(i['id'])
                for inst in insts:
                    if len(str(inst.public_dns_name)) > 0:
                        output.append(str(inst.public_dns_name))
                    else:
                        output.append(str(inst.private_dns_name))
    resp = app.make_response('\n'.join(output))
    resp.mimetype = "text/plain"
    return resp
Ejemplo n.º 26
0
def endpoint(service, environ):
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service("%s-%s" % (service, environ))

    for s in services:
        sinfo = s.info()
        endpoints = get_all_endpoints(s)

        output += servicenav(s, 'endpoint')
        output += render_template('endpoint.html',
                                  service=sinfo,
                                  endpoints=endpoints)

    output += footer()
    return output
Ejemplo n.º 27
0
def service_config(service, environ):
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service("%s-%s" % (service, environ))
    for s in services:
        output += servicenav(s, 'config')
        sconfig = s.config()
        output += render_template('config.html',
                                  service=service,
                                  environ=environ,
                                  raw=yaml.safe_dump(sconfig,
                                                     encoding='utf-8',
                                                     allow_unicode=True))

    output += footer()
    return output
Ejemplo n.º 28
0
def instance_service_info(service, environ, instance):
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service("%s-%s" % (service, environ))

    inst = None
    for s in services:
        output += servicenav(s, 'instance')
        inst = s.get_instance(instance)
        if inst:
            output += render_template('instance.html', instance=inst,
                    service=service, environ=environ)
            break

    output += footer()
    return output
Ejemplo n.º 29
0
def services():
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.list_services()
    svcs = list()
    for s in services:
        svc = {
                'service': s.service,
                'environ': s.environ,
                'region': s.region
                }
        svcs.append(svc)
    svcs.sort(key=lambda x: x['service'])
    output += render_template('servicelist.html', services=svcs)

    output += footer()
    return output
Ejemplo n.º 30
0
def instance_service_info(service, environ, instance):
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service("%s-%s" % (service, environ))

    inst = None
    for s in services:
        output += servicenav(s, 'instance')
        inst = s.get_instance(instance)
        if inst:
            output += render_template('instance.html',
                                      instance=inst,
                                      service=service,
                                      environ=environ)
            break

    output += footer()
    return output
Ejemplo n.º 31
0
def instances(service, environ):
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service("%s-%s" % (service, environ))
    instances = list()
    info = dict()
    for s in services:
        for g in s.groups:
            for i in g.instances:
                info[i.id] = {}
                if i['public_ip_address']:
                    info[i.id]['ip_address'] = i['public_ip_address']
                else:
                    info[i.id]['ip_address'] = i['private_ip_address']
                info[i.id]['public_ip_address'] = i['public_ip_address']
                info[i.id]['private_ip_address'] = i['private_ip_address']
                if i['public_dns_name']:
                    info[i.id]['dns_name'] = i['public_dns_name']
                else:
                    info[i.id]['dns_name'] = i['private_dns_name']
                launch = datetime.datetime.strptime(i['launch_time'],
                                                    "%Y-%m-%dT%H:%M:%S.%fZ")
                uptime = datetime.datetime.utcnow() - launch
                info[i.id]['uptime'] = str(uptime - datetime.timedelta(
                    microseconds=uptime.microseconds))
                info[i.id]['url'] = {
                    'instance':
                    '/instance/%s/%s/%s' % (service, environ, i['id']),
                    'stats': '/stats/%s' % i.id
                }
                instances.append(i)

    output += servicenav(s, 'instances')
    output += render_template('instancelist.html',
                              service=service,
                              environ=environ,
                              instances=instances,
                              info=info)

    output += footer()
    return output
Ejemplo n.º 32
0
def instances(service, environ):
    output = header()

    bc = billow.billowCloud(regions=config.config['regions'])
    services = bc.get_service("%s-%s" % (service, environ))
    instances = list()
    info = dict()
    for s in services:
        for g in s.groups:
            for i in g.instances:
                info[i.id] = {}
                if i['public_ip_address']:
                    info[i.id]['ip_address'] = i['public_ip_address']
                else:
                    info[i.id]['ip_address'] = i['private_ip_address']
                info[i.id]['public_ip_address'] = i['public_ip_address']
                info[i.id]['private_ip_address'] = i['private_ip_address']
                if i['public_dns_name']:
                    info[i.id]['dns_name'] = i['public_dns_name']
                else:
                    info[i.id]['dns_name'] = i['private_dns_name']
                launch = datetime.datetime.strptime(i['launch_time'],
                        "%Y-%m-%dT%H:%M:%S.%fZ")
                uptime = datetime.datetime.utcnow() - launch
                info[i.id]['uptime'] = str(uptime - datetime.timedelta(
                    microseconds=uptime.microseconds))
                info[i.id]['url'] = {
                        'instance': '/instance/%s/%s/%s' % (service, environ,
                            i['id']),
                        'stats': '/stats/%s' % i.id
                        }
                instances.append(i)

    output += servicenav(s, 'instances')
    output += render_template('instancelist.html', service=service,
            environ=environ, instances=instances, info=info)

    output += footer()
    return output