Пример #1
0
def servers(req):
    """ A view for server management.
    """
    items = req.zato.odb.query(Server).order_by(Server.name).all()

    for item in items:
        if item.up_mod_date:
            item.up_mod_date_user = from_utc_to_user(
                item.up_mod_date.replace(tzinfo=UTC).isoformat(),
                req.zato.user_profile)

    try:
        client = get_lb_client(req.zato.get('cluster'))
        server_data_dict = client.get_server_data_dict()
        bck_http_plain = client.get_config()['backend']['bck_http_plain']
        lb_client_invoked = True
    except Exception:
        logger.error(format_exc())
        lb_client_invoked = False

    if lb_client_invoked:

        def _update_item(server_name, lb_address, lb_state):
            for item in items:
                if item.name == server_name:
                    item.in_lb = True
                    item.lb_address = lb_address
                    item.lb_state = lb_state

                    if item.up_status == SERVER_UP_STATUS.RUNNING:
                        item.may_be_deleted = False
                    else:
                        item.may_be_deleted = True

        for server_name in bck_http_plain:
            lb_address = '{}:{}'.format(bck_http_plain[server_name]['address'],
                                        bck_http_plain[server_name]['port'])
            _update_item(server_name, lb_address,
                         server_data_dict[server_name]['state'])

    return_data = {
        'items': items,
        'search_form': req.zato.search_form,
        'zato_clusters': req.zato.clusters,
        'cluster': req.zato.get('cluster'),
        'edit_form': EditServerForm(prefix='edit')
    }

    return TemplateResponse(req, 'zato/cluster/servers.html', return_data)
Пример #2
0
                        item.may_be_deleted = False
                    else:
                        item.may_be_deleted = True

        for server_name in bck_http_plain:
            lb_address = '{}:{}'.format(bck_http_plain[server_name]['address'],
                                        bck_http_plain[server_name]['port'])
            _update_item(server_name, lb_address,
                         server_data_dict[server_name]['state'])

    return_data = {
        'items': items,
        'choose_cluster_form': req.zato.choose_cluster_form,
        'zato_clusters': req.zato.clusters,
        'cluster': req.zato.get('cluster'),
        'edit_form': EditServerForm(prefix='edit')
    }

    return TemplateResponse(req, 'zato/cluster/servers.html', return_data)


@method_allowed('POST')
def servers_edit(req):
    """ Updates a server in both ODB and the load balancer.
    """
    try:
        client = get_lb_client(req.zato.cluster)

        server_id = req.POST['id']
        server = req.zato.odb.query(Server).filter_by(id=server_id).one()