Example #1
0
def get_sql_list(request, servers, db_type):
    if servers:
        if db_type == 'Oracle':
            filters = construct_filters(servers, "oracledb")
            if filters:
                return HttpResponse(oracle_sql_list(request.user, filters))
            else:
                return HttpResponse(json.dumps({"errors":"Server(s) selected does not have Oracledb agent installed"}))
        elif db_type == 'PostgreSQL':
            filters = construct_filters(servers, "postgresql")
            if filters:
                return HttpResponse(postgresql_sql_list(request.user, filters))
            else:
                return HttpResponse(json.dumps({"errors":"Server(s) selected does not have Oracledb agent installed"}))
    else:
        return HttpResponse('')
Example #2
0
def get_sql_list(request, servers, db_type):
    if servers:
        if db_type == 'Oracle':
            filters = construct_filters(servers, "oracledb")
            if filters:
                return HttpResponse(oracle_sql_list(request.user, filters))
            else:
                return HttpResponse(json.dumps({"errors":"Server(s) selected does not have Oracledb agent installed"}))
        elif db_type == 'PostgreSQL':
            filters = construct_filters(servers, "postgresql")
            if filters:
                return HttpResponse(postgresql_sql_list(request.user, filters))
            else:
                return HttpResponse(json.dumps({"errors":"Server(s) selected does not have Oracledb agent installed"}))
    else:
        return HttpResponse('')
Example #3
0
def get_bar_list(request, servers):
    if servers:
        filters = construct_filters(servers, "a7xbar")
        if filters:
            return HttpResponse(get_available_bars(request.user, filters))
        else:
            return HttpResponse(json.dumps({"errors":"Server(s) selected does not have BAR agent installed"}))
    else:
        return HttpResponse('')
Example #4
0
def get_app_list(request, servers, server_type):
    if servers:
        filters = construct_filters(servers)
        if server_type == 'OC4J':
            return HttpResponse(oc4j_app_list(request.user, filters, 'ear'))
        elif server_type == 'WebLogic':
            return HttpResponse(weblo_app_list(request.user, filters, 'ear'))
    else:
        return HttpResponse('')
Example #5
0
def get_bar_list(request, servers):
    if servers:
        filters = construct_filters(servers, "a7xbar")
        if filters:
            return HttpResponse(get_available_bars(request.user, filters))
        else:
            return HttpResponse(json.dumps({"errors":"Server(s) selected does not have BAR agent installed"}))
    else:
        return HttpResponse('')
Example #6
0
def get_app_list(request, servers, server_type):
    if servers:
        filters = construct_filters(servers)
        if server_type == 'OC4J':
            return HttpResponse(oc4j_app_list(request.user, filters, 'ear'))
        elif server_type == 'WebLogic':
            return HttpResponse(weblo_app_list(request.user, filters, 'ear'))
    else:
        return HttpResponse('')
Example #7
0
def get_app_list(request, servers, server_type):
    if servers:
        if server_type == 'OC4J':
            filters = construct_filters(servers, "a7xoas")
            if filters:
                return HttpResponse(oc4j_app_list(request.user, filters, 'ear'))
            else:
                return HttpResponse(json.dumps({"errors":"Server(s) selected does not have OC4J agent installed"}))
        elif server_type == 'WebLogic':
            filters = construct_filters(servers, "a7xows")
            if filters:
                return HttpResponse(weblo_app_list(request.user, filters, 'ear'))
            else:
                return HttpResponse(json.dumps({"errors":"Server(s) selected does not have WebLogic agent installed"}))
        elif server_type == 'JBoss':
            filters = construct_filters(servers, "jboss")
            if filters:
                return HttpResponse(jboss_app_list(request.user, filters, 'ear'))
            else:
                return HttpResponse(json.dumps({"errors":"Server(s) selected does not have WebLogic agent installed"}))
    else:
        return HttpResponse('')
Example #8
0
def get_app_list(request, servers, server_type):
    if servers:
        if server_type == 'OC4J':
            filters = construct_filters(servers, "a7xoas")
            if filters:
                return HttpResponse(oc4j_app_list(request.user, filters, 'ear'))
            else:
                return HttpResponse(json.dumps({"errors":"Server(s) selected does not have OC4J agent installed"}))
        elif server_type == 'WebLogic':
            filters = construct_filters(servers, "a7xows")
            if filters:
                return HttpResponse(weblo_app_list(request.user, filters, 'ear'))
            else:
                return HttpResponse(json.dumps({"errors":"Server(s) selected does not have WebLogic agent installed"}))
        elif server_type == 'JBoss':
            filters = construct_filters(servers, "jboss")
            if filters:
                return HttpResponse(jboss_app_list(request.user, filters, 'ear'))
            else:
                return HttpResponse(json.dumps({"errors":"Server(s) selected does not have WebLogic agent installed"}))
    else:
        return HttpResponse('')
Example #9
0
def execute_chain(request, xhr=None):
    if request.method == "POST":
        #Check if the <xhr> var had something passed to it.
        if xhr == "xhr":
            operations =[]
            i = 1
            errors = False
            errs = {}
            while i<=5:
                if "operation%s" % i in request.POST:
                    rdict = {'bad':'false'}
                    try:
                        servers = request.POST["listServerHidden%s"%i]
                        filters = construct_filters(servers)
                        rdict.update({'filters':filters})
                    except:
                        errors = True
                        errs.update({"listServer%s"%i:'<ul class="errorlist"><li>You must select at least one server</li></ul>'})
                        
                    
                    if request.POST["operation%s"%i] == 'script_ex':
                        try:
                            sqlScript = request.POST["sqlScript%s"%i]
                            instancename = request.POST["dbinstancename%s"%i]
                            dbType = request.POST["dbType%s"%i]
                        except:
                            sqlScript=None
                            instancename=None
                            dbType=None
                        if sqlScript and instancename and dbType and not errors:
                            agent_name = None
                            if dbType == 'Oracle':
                                agent_name = 'oracledb'
                            elif dbType == 'PostgreSQL':
                                agent_name = 'postgresql'
                                
                            error_server = check_servers(servers, agent_name)
                            if error_server:
                                logger.info("Servers selected does not contains desired agent")
                                errors = True
                                errs.update({"listServer%s"%i: '<ul class="errorlist"><li>Server %s does not contain %s agent</li></ul>' % (error_server, agent_name)})
                            else:
                                current_op = {"user": request.user,
                                              "filters": filters,
                                              "agent": agent_name,
                                              "action": "execute_sql",
                                              "args": "instancename=%s;sqlfile=%s" % (instancename, sqlScript),
                                              "name": "Execute SQL Script"}
                                operations.append(current_op)
                        else:
                            errors = True
                            if sqlScript==None:
                                errs.update({"sqlScript%s"%i: '<ul class="errorlist"><li>Select a valid SqlScript to execute</li></ul>'})
                            if instancename==None:
                                errs.update({"dbinstancename%s"%i:'<ul class="errorlist"><li>Database Name is required</li></ul>'})
                    elif request.POST["operation%s"%i] == 'deploy_ear':
                        try:
                            appfile = request.POST['earApp%s'%i]
                            instancename = request.POST['instancename%s'%i]
                            appname = request.POST['appname%s'%i]
                            serverType = request.POST['serverType%s'%i]
                        except:
                            appname=None
                        if appfile and instancename and appname and serverType:
                            logger.debug("Parameters check: OK.")
                            logger.debug("Calling MCollective to deploy %s application on %s filtered server" % (appfile, filters))
                            agent_name = None
                            if serverType == 'OC4J':
                                agent_name = 'a7xoas'
                            elif serverType == 'WebLogic':
                                agent_name = 'a7xows'
                            elif serverType == 'JBoss':
                                agent_name = 'jboss'
                                
                            error_server = check_servers(servers, agent_name)
                            if error_server:
                                logger.info("Servers selected does not contains desired agent")
                                errors = True
                                errs.update({"listServer%s"%i: '<ul class="errorlist"><li>Server %s does not contain %s agent</li></ul>' % (error_server, agent_name)})
                            else:
                                current_op = {"user": request.user,
                                          "filters": filters,
                                          "agent": agent_name,
                                          "action": "deploy",
                                          "args": "appname=%s;instancename=%s;appfile=%s" %(appname, instancename, appfile),
                                            "name": "Deploy Application"}
                                operations.append(current_op)
                        else:
                            errors = True 
                            if appfile==None:
                                errs.update({"earApp%s"%i: '<ul class="errorlist"><li>Application to deploy is required</li></ul>'})
                            if instancename==None:
                                errs.update({"instancename%s"%i:'<ul class="errorlist"><li>Instance Name is required</li></ul>'})
                            if appname==None:
                                errs.update({"appname%s"%i:'<ul class="errorlist"><li>Application Name is required</li></ul>'})
                            if serverType==None:
                                errs.update({"serverType%s"%i:'<ul class="errorlist"><li>Server Type is required</li></ul>'})
                    elif request.POST["operation%s"%i] == 'deploy_bar':
                        error_server = check_servers(servers, agent_name)
                        if error_server:
                            logger.info("Servers selected does not contains desired agent")
                            errors = True
                            errs.update({"listServer%s"%i: '<ul class="errorlist"><li>Server %s does not contain a7xbar agent</li></ul>' % error_server})
                        try:
                            barapp = request.POST['barApp%s'%i]
                            consolename = request.POST['consoleName%s'%i]
                        except:
                            barapp=None
                            consolename = None
                        if barapp and consolename and not errors:
                            logger.debug("Parameters check: OK.")
                            logger.debug("Calling MCollective to deploy %s bar on %s filtered server" % (barapp, filters))
                            current_op = {"user": request.user,
                                      "filters": filters,
                                      "agent": "a7xbar",
                                      "action": "deploy",
                                      "args": 'filename=%s;bcname=%s' %(barapp, consolename),
                                      "name": "Deploy Bar"}
                            operations.append(current_op)
                        else:
                            errors = True
                            if barapp==None:
                                errs.update({"barApp%s"%i: '<ul class="errorlist"><li>BAR to deploy is required</li></ul>'})
                            if consolename==None:
                                errs.update({"consoleName%s"%i:'<ul class="errorlist"><li>Console Name is required</li></ul>'})
                    elif request.POST["operation%s"%i] == 'restart_instance':
                        try:
                            instancename = request.POST['instancename%s'%i]
                            serverType = request.POST['serverType%s'%i]
                        except:
                            instancename=None
                            serverType=None
                        if instancename and serverType:
                            logger.debug("Parameters check: OK.")
                            logger.debug("Calling MCollective to restart instance %s" % (instancename))
                            if serverType == 'OC4J':
                                agent_name = 'a7xoas'
                            elif serverType == 'WebLogic':
                                agent_name = 'a7xows'
                                
                            if error_server:
                                logger.info("Servers selected does not contains desired agent")
                                errors = True
                                errs.update({"listServer%s"%i: '<ul class="errorlist"><li>Server %s does not contain %s agent</li></ul>' % (error_server, agent_name)})
                            else:
                                stop_op = {"user": request.user,
                                          "filters": filters,
                                          "agent": agent_name,
                                          "action": "stopinstance",
                                          "args": 'instancename=%s' %(instancename),
                                          "name": "Stop Instance"}
                                operations.append(stop_op)
                                start_op = {"user": request.user,
                                          "filters": filters,
                                          "agent": agent_name,
                                          "action": "startinstance",
                                          "args": 'instancename=%s' %(instancename),
                                          "name": "Start Instance"}
                                operations.append(start_op)
                        else:
                            errors = True
                            if instancename==None:
                                errs.update({"instancename%s"%i:'<ul class="errorlist"><li>Instance Name is required</li></ul>'})
                            if serverType==None:
                                errs.update({"serverType%s"%i:'<ul class="errorlist"><li>Server Type is required</li></ul>'})
                            
                i = i + 1
            if errors:
                rdict.update({'bad':'true'})
                rdict.update({'errs': errs })
            else:
                logger.debug("No errors detected. Executing %s operations." % (len(operations)))
                task_name = "webui.chain.tasks.execute_chain_ops"
                logger.debug("Store scheduler information on database")
                try:
                    sched = Scheduler.objects.create(name="%s-%s"%(request.user, datetime.now()), user=request.user, status="WAITING")
                    count = 0
                    for op in operations:
                        SchedulerTask.objects.create(order=count, scheduler=sched, name=op["name"], agent=op["agent"], action=op["action"], parameters=op["args"], filters=op["filters"], status="WAITING")
                        count = count + 1
                
                    result = send_task(task_name, [sched])
                    update_url = reverse('get_progress', kwargs={'taskname':task_name, 'taskid':result.task_id})
                    rdict.update({'UUID': result.task_id, 'taskname':task_name, 'update_url': update_url})
                except:
                    print sys.exc_info()
                    rdict.update({'bad':'true'})
        return HttpResponse(json.dumps(rdict, ensure_ascii=False), mimetype='application/javascript')
    else:
        # It's not post so make a new form
        logger.warn("Cannot access this page using GET")
        raise Http404
Example #10
0
def get_bar_list(request, servers):
    if servers:
        filters = construct_filters(servers)
        return HttpResponse(get_available_bars(request.user, filters))
    else:
        return HttpResponse('')
Example #11
0
def get_sql_list(request, servers):
    if servers:
        filters = construct_filters(servers)
        return HttpResponse(sql_list(request.user, filters))
    else:
        return HttpResponse('')
Example #12
0
def execute_chain(request, xhr=None):
    if request.method == "POST":
        #Check if the <xhr> var had something passed to it.
        if xhr == "xhr":
            operations =[]
            i = 1
            errors = False
            errs = {}
            while i<=5:
                if "operation%s" % i in request.POST:
                    rdict = {'bad':'false'}
                    try:
                        servers = request.POST["listServerHidden%s"%i]
                        filters = construct_filters(servers)
                        rdict.update({'filters':filters})
                    except:
                        errors = True
                        errs.update({"listServer%s"%i:'<ul class="errorlist"><li>You must select at least one server</li></ul>'})
                        
                    
                    if request.POST["operation%s"%i] == 'script_ex':
                        try:
                            sqlScript = request.POST["sqlScript%s"%i]
                            instancename = request.POST["dbinstancename%s"%i]
                            dbType = request.POST["dbType%s"%i]
                        except:
                            sqlScript=None
                            instancename=None
                            dbType=None
                        if sqlScript and instancename and dbType and not errors:
                            agent_name = None
                            if dbType == 'Oracle':
                                agent_name = 'oracledb'
                            elif dbType == 'PostgreSQL':
                                agent_name = 'postgresql'
                                
                            error_server = check_servers(servers, agent_name)
                            if error_server:
                                logger.info("Servers selected does not contains desired agent")
                                errors = True
                                errs.update({"listServer%s"%i: '<ul class="errorlist"><li>Server %s does not contain %s agent</li></ul>' % (error_server, agent_name)})
                            else:
                                current_op = {"user": request.user,
                                              "filters": filters,
                                              "agent": agent_name,
                                              "action": "execute_sql",
                                              "args": "instancename=%s;sqlfile=%s" % (instancename, sqlScript),
                                              "name": "Execute SQL Script"}
                                operations.append(current_op)
                        else:
                            errors = True
                            if sqlScript==None:
                                errs.update({"sqlScript%s"%i: '<ul class="errorlist"><li>Select a valid SqlScript to execute</li></ul>'})
                            if instancename==None:
                                errs.update({"dbinstancename%s"%i:'<ul class="errorlist"><li>Database Name is required</li></ul>'})
                    elif request.POST["operation%s"%i] == 'deploy_ear':
                        try:
                            appfile = request.POST['earApp%s'%i]
                            instancename = request.POST['instancename%s'%i]
                            appname = request.POST['appname%s'%i]
                            serverType = request.POST['serverType%s'%i]
                        except:
                            appname=None
                        if appfile and instancename and appname and serverType:
                            logger.debug("Parameters check: OK.")
                            logger.debug("Calling MCollective to deploy %s application on %s filtered server" % (appfile, filters))
                            agent_name = None
                            if serverType == 'OC4J':
                                agent_name = 'a7xoas'
                            elif serverType == 'WebLogic':
                                agent_name = 'a7xows'
                            elif serverType == 'JBoss':
                                agent_name = 'jboss'
                                
                            error_server = check_servers(servers, agent_name)
                            if error_server:
                                logger.info("Servers selected does not contains desired agent")
                                errors = True
                                errs.update({"listServer%s"%i: '<ul class="errorlist"><li>Server %s does not contain %s agent</li></ul>' % (error_server, agent_name)})
                            else:
                                current_op = {"user": request.user,
                                          "filters": filters,
                                          "agent": agent_name,
                                          "action": "deploy",
                                          "args": "appname=%s;instancename=%s;appfile=%s" %(appname, instancename, appfile),
                                            "name": "Deploy Application"}
                                operations.append(current_op)
                        else:
                            errors = True 
                            if appfile==None:
                                errs.update({"earApp%s"%i: '<ul class="errorlist"><li>Application to deploy is required</li></ul>'})
                            if instancename==None:
                                errs.update({"instancename%s"%i:'<ul class="errorlist"><li>Instance Name is required</li></ul>'})
                            if appname==None:
                                errs.update({"appname%s"%i:'<ul class="errorlist"><li>Application Name is required</li></ul>'})
                            if serverType==None:
                                errs.update({"serverType%s"%i:'<ul class="errorlist"><li>Server Type is required</li></ul>'})
                    elif request.POST["operation%s"%i] == 'deploy_bar':
                        error_server = check_servers(servers, agent_name)
                        if error_server:
                            logger.info("Servers selected does not contains desired agent")
                            errors = True
                            errs.update({"listServer%s"%i: '<ul class="errorlist"><li>Server %s does not contain a7xbar agent</li></ul>' % error_server})
                        try:
                            barapp = request.POST['barApp%s'%i]
                            consolename = request.POST['consoleName%s'%i]
                        except:
                            barapp=None
                            consolename = None
                        if barapp and consolename and not errors:
                            logger.debug("Parameters check: OK.")
                            logger.debug("Calling MCollective to deploy %s bar on %s filtered server" % (barapp, filters))
                            current_op = {"user": request.user,
                                      "filters": filters,
                                      "agent": "a7xbar",
                                      "action": "deploy",
                                      "args": 'filename=%s;bcname=%s' %(barapp, consolename),
                                      "name": "Deploy Bar"}
                            operations.append(current_op)
                        else:
                            errors = True
                            if barapp==None:
                                errs.update({"barApp%s"%i: '<ul class="errorlist"><li>BAR to deploy is required</li></ul>'})
                            if consolename==None:
                                errs.update({"consoleName%s"%i:'<ul class="errorlist"><li>Console Name is required</li></ul>'})
                    elif request.POST["operation%s"%i] == 'restart_instance':
                        try:
                            instancename = request.POST['instancename%s'%i]
                            serverType = request.POST['serverType%s'%i]
                        except:
                            instancename=None
                            serverType=None
                        if instancename and serverType:
                            logger.debug("Parameters check: OK.")
                            logger.debug("Calling MCollective to restart instance %s" % (instancename))
                            if serverType == 'OC4J':
                                agent_name = 'a7xoas'
                            elif serverType == 'WebLogic':
                                agent_name = 'a7xows'
                                
                            if error_server:
                                logger.info("Servers selected does not contains desired agent")
                                errors = True
                                errs.update({"listServer%s"%i: '<ul class="errorlist"><li>Server %s does not contain %s agent</li></ul>' % (error_server, agent_name)})
                            else:
                                stop_op = {"user": request.user,
                                          "filters": filters,
                                          "agent": agent_name,
                                          "action": "stopinstance",
                                          "args": 'instancename=%s' %(instancename),
                                          "name": "Stop Instance"}
                                operations.append(stop_op)
                                start_op = {"user": request.user,
                                          "filters": filters,
                                          "agent": agent_name,
                                          "action": "startinstance",
                                          "args": 'instancename=%s' %(instancename),
                                          "name": "Start Instance"}
                                operations.append(start_op)
                        else:
                            errors = True
                            if instancename==None:
                                errs.update({"instancename%s"%i:'<ul class="errorlist"><li>Instance Name is required</li></ul>'})
                            if serverType==None:
                                errs.update({"serverType%s"%i:'<ul class="errorlist"><li>Server Type is required</li></ul>'})
                            
                i = i + 1
            if errors:
                rdict.update({'bad':'true'})
                rdict.update({'errs': errs })
            else:
                logger.debug("No errors detected. Executing %s operations." % (len(operations)))
                task_name = "webui.chain.tasks.execute_chain_ops"
                logger.debug("Store scheduler information on database")
                try:
                    sched = Scheduler.objects.create(name="%s-%s"%(request.user, datetime.now()), user=request.user, status="WAITING")
                    count = 0
                    for op in operations:
                        SchedulerTask.objects.create(order=count, scheduler=sched, name=op["name"], agent=op["agent"], action=op["action"], parameters=op["args"], filters=op["filters"], status="WAITING")
                        count = count + 1
                
                    result = send_task(task_name, [sched])
                    update_url = reverse('get_progress', kwargs={'taskname':task_name, 'taskid':result.task_id})
                    rdict.update({'UUID': result.task_id, 'taskname':task_name, 'update_url': update_url})
                except:
                    print sys.exc_info()
                    rdict.update({'bad':'true'})
        return HttpResponse(json.dumps(rdict, ensure_ascii=False), mimetype='application/javascript')
    else:
        # It's not post so make a new form
        logger.warn("Cannot access this page using GET")
        raise Http404
Example #13
0
def get_bar_list(request, servers):
    if servers:
        filters = construct_filters(servers)
        return HttpResponse(get_available_bars(request.user, filters))
    else:
        return HttpResponse('')
Example #14
0
def get_sql_list(request, servers):
    if servers:
        filters = construct_filters(servers)
        return HttpResponse(sql_list(request.user, filters))
    else:
        return HttpResponse('')