Example #1
0
def get_log(request, filters, dialog_name, xhr=None):
    if request.method == "POST":
        logger.debug("Recreating form")
        form = LogForm(request.POST)

        #Check if the <xhr> var had something passed to it.
        if xhr == "xhr":
            #TODO: Try to use dynamic form validation
            clean = form.is_valid()
            rdict = {'bad':'false', 'filters':filters }
            try:
                instancename = request.POST['instancename']
                appname = request.POST['appname']
            except:
                instancename=None
                appname=None
            if instancename and appname:
                logger.debug("Parameters check: OK.")
                logger.debug("Calling MCollective to get log on %s filtered server" % (filters))
                response, content = callRestServer(request.user, filters, 'a7xoas', 'get_log', 'instancename=%s;appname=%s' % (instancename,appname), True)
                if response.status == 200:
                    json_content = json.loads(content)
                    s_resps = []
                    for server_response in json_content:
                        if server_response['statuscode']==0:
                            s_resps.append({"server": server_response["sender"], "logfile":server_response["data"]["logfile"]})
                        else:
                            s_resps.append({"server": server_response["sender"], "message":server_response["statusmsg"]})
                    rdict.update({"result":s_resps})
                else:
                    rdict.update({"result": "KO", "message": "Error communicating with server"})
                
                rdict.update({'dialog_name':dialog_name})
                # And send it off.
            else:
                rdict.update({'bad':'true'})
                d = {}
                # This was painful, but I can't find a better way to extract the error messages:
                for e in form.errors.iteritems():
                    d.update({e[0]:unicode(e[1])}) # e[0] is the id, unicode(e[1]) is the error HTML.
                # Bung all that into the dict
                rdict.update({'errs': d })
                # Make a json whatsit to send back.
                
            return HttpResponse(json.dumps(rdict, ensure_ascii=False), mimetype='application/javascript')
        # It's a normal submit - non ajax.
        else:
            if form.is_valid():
                # We don't accept non-ajax requests for the moment
                return HttpResponseRedirect("/")
    else:
        # It's not post so make a new form
        logger.warn("Cannot access this page using GET")
        raise Http404
Example #2
0
def get_log_form(request, dialog_name, action, filters):
    logger.debug('Rendering form')
    return render_to_response('platforms/oc4j/logform.html', {
        'action': action,
        'filters': filters,
        'form': LogForm([]),
        'dialog_name': dialog_name,
        'base_url': settings.BASE_URL
    },
                              context_instance=RequestContext(request))
Example #3
0
def get_log(request, filters, dialog_name, xhr=None):
    if request.method == "POST":
        logger.debug("Recreating form")
        form = LogForm(request.POST)

        #Check if the <xhr> var had something passed to it.
        if xhr == "xhr":
            #TODO: Try to use dynamic form validation
            clean = form.is_valid()
            rdict = {'bad': 'false', 'filters': filters}
            try:
                instancename = request.POST['instancename']
                appname = request.POST['appname']
            except:
                instancename = None
                appname = None
            if instancename and appname:
                logger.debug("Parameters check: OK.")
                logger.debug(
                    "Calling MCollective to get log on %s filtered server" %
                    (filters))
                response, content = callRestServer(
                    request.user,
                    filters,
                    'a7xoas',
                    'get_log',
                    'instancename=%s;appname=%s' % (instancename, appname),
                    wait_response=True,
                    use_task=True,
                    use_backend_scheduler=True)
                if response.getStatus() == 200:
                    s_resps = []
                    for server_response in content:
                        if server_response and server_response.getStatusCode(
                        ) == 0 and "data" in server_response:
                            log_file = None
                            if server_response.getData(
                            ) and "logfile" in server_response["data"]:
                                log_file = server_response.getData()["logfile"]
                            elif server_response.getData(
                            ) and "data" in server_response.getData(
                            ) and "logfile" in server_response.getData(
                            )["data"]:
                                log_file = server_response.getData(
                                )["data"]["logfile"]

                            if log_file:
                                logger.debug(
                                    "Discovered log for server %s: %s" %
                                    (server_response.getSender(), log_file))
                                s_resps.append({
                                    "server":
                                    server_response.getSender(),
                                    "logfile":
                                    log_file
                                })
                            else:
                                if server_response.getData(
                                ) and "statusmsg" in server_response.getData():
                                    s_resps.append({
                                        "server":
                                        server_response.getSender(),
                                        "message":
                                        server_response.getData()["statusmsg"]
                                    })
                                else:
                                    s_resps.append({
                                        "server":
                                        server_response.getSender(),
                                        "message":
                                        server_response.getStatusMessage()
                                    })
                    rdict.update({"result": s_resps})
                else:
                    rdict.update({
                        "result": "KO",
                        "message": "Error communicating with server"
                    })

                rdict.update({'dialog_name': dialog_name})
                # And send it off.
            else:
                rdict.update({'bad': 'true'})
                d = {}
                # This was painful, but I can't find a better way to extract the error messages:
                for e in form.errors.iteritems():
                    d.update({
                        e[0]: unicode(e[1])
                    })  # e[0] is the id, unicode(e[1]) is the error HTML.
                # Bung all that into the dict
                rdict.update({'errs': d})
                # Make a json whatsit to send back.

            return HttpResponse(json.dumps(rdict, ensure_ascii=False),
                                mimetype='application/javascript')
        # It's a normal submit - non ajax.
        else:
            if form.is_valid():
                # We don't accept non-ajax requests for the moment
                return HttpResponseRedirect("/")
    else:
        # It's not post so make a new form
        logger.warn("Cannot access this page using GET")
        raise Http404