Tuesday, 5 February 2019

Get Result from Jenkins Job via API



                output = 'curl http://<jenkinsUserName>:<jenkinsPassword>@<jenkinsIP>:<jenkinsPort>/job/<JobName>/<BuildNumber>/consoleText'

                jobout = subprocess.check_output(output, shell=True)

                print (jobout)

Trigger a ansible playbook via jenkins using jenkins API




 'curl -d ' + finalString + ' -i -X POST http://admin:<adminpassword>@<JenkinsIP>:<PortNumber>/job/<JobName>/buildWithParameters -H "Jenkins-Crumb:<crumbID>"'



finalString =   inputs for the ansible script in this format example - "ticketnumber=d" -d "deviceType=yj" -d "createnewpool=kug" -d "server=k" -d "node=y" -d "poolname=y" -d "port=y" -d "modificationtype=yy" -d "partition=yy" -d "lb_method=yy" -d "slowramptime=yy"

Django to trigger ansible playbook via (python paramiko.SSHClient()) SSH (take input from template and display result in other template )

def backupPage(request):
        my_form3 = Backup()
        if request.method == 'POST' and 'NetworkBackup' in request.POST:

            my_form3 = Backup(request.POST)
            if my_form3.is_valid():
                ticketnumber = my_form3.cleaned_data['ticketNumber']
                ip = my_form3.cleaned_data['ansibleServerIP']
                port = my_form3.cleaned_data['ansibleServerPort']
                username = my_form3.cleaned_data['ansibleServerUsername']
                password = my_form3.cleaned_data['ansibleServerPassword']
                cmd = my_form3.cleaned_data['playbookFullPath']
                minutes = my_form3.cleaned_data['TimerInMinutes']
                #occurence = my_form3.cleaned_data['TimerInMinutes']
                f = open("/home/raghu/Desktop/Backup/" + ticketnumber + ".txt","a+")
                f.write(ticketnumber + " " + ip + " " + port + " " + " " + username + " " + password + " " + cmd)
                f.close()
                time.sleep(5)
                latestFiles = glob.glob('/home/raghu/Desktop/Backup/*')
                latestFile = max(latestFiles, key=os.path.getctime)
                print (latestFile)

                a = schedule1()
                return render(request, "mail.html" , { 'form1': a })

                #schedule.every(minutes).minutes.do(schedule1)
                #while True:
                #    schedule.run_pending()
                #    time.sleep(1)

        return render(request, "backupPage.html" , { 'form3': my_form3 })

def schedule1():
       latestFiles = glob.glob('/home/raghu/Desktop/Backup/*')
       latestFile = max(latestFiles, key=os.path.getctime)
       #print latestFile
       #f.close()
       filename = latestFile;
       f = open(filename,"r")
       temp = f.read()
       words = temp.split()
       ip = words[1]
       port = words[2]
       username = words[3]
       password = words[4]
       cmd1 = words[5]
       cmd = "ansible-playbook " + cmd1 + " -vvvv"
       print (cmd)
       ssh=paramiko.SSHClient()
       ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
       ssh.connect(ip,port,username,password)
       stdin,stdout,stderr=ssh.exec_command(cmd)
       time.sleep(50)
       outlines=stdout.readlines()
       resp =''.join(outlines)
       print(resp)
       return resp

Django Get request from template and pass value to views function and display result in template

def get(request):

        my_form1 = PoolModification()
        my_form2 = OnboardingDevice()

        if request.method == 'POST' and 'PoolModification' in request.POST:
        #Post request to handle form upload
            my_form1 = PoolModification(request.POST) #Bind data from request.POST to poolModification form
            if my_form1.is_valid():

                finalString1 = '" -d "'.join("{!s}={!s}".format(key,val) for (key,val) in my_form1.cleaned_data.items())
                finalString = '"{}"'.format(finalString1)
                print (finalString)
                response = 'curl -d ' + finalString + ' -i -X POST http://admin:02bab31633994212cd@192.168.10.12:8080/job/pool-modification/buildWithParameters -H "Jenkins-Crumb:90eed10ddeafaf555"'

                os.system(response)

                time.sleep(60)
                output = 'curl http://admin:02bab3161694212cd@192.168.10.12:8080/job/pool-modification/lastBuild/consoleText'

                jobout = subprocess.check_output(output, shell=True)

                print (jobout)


                return render(request, "mail.html" , { 'form1' :jobout })
                #time.sleep(50)
                #def mails(jobout):
                #    return render(request, "mails.html" , {'form3' : jobout})
                #return HttpResponseRedirect(request, "createpost.html" , {'form1' : my_form1})

        elif request.method == 'POST' and 'OnboardingDevice' in request.POST:
        #Post request to handle form upload
            my_form2 = OnboardingDevice(request.POST) #Bind data from request.POST to poolModification form
            if my_form2.is_valid():

                finalString1 = '" -d "'.join("{!s}={!s}".format(key,val) for (key,val) in my_form2.cleaned_data.items())
                finalString = '"{}"'.format(finalString1)
                print (finalString)
                response = 'curl -d ' + finalString + ' -i -X POST http://admin:02bab3163391694212cd@192.168.10.12:8080/job/OnboardingDevice/buildWithParameters -H "Jenkins-Crumb:90eed1049263ddeafaf555"'

                os.system(response)
                time.sleep(50)
                output = 'curl http://admin:02bab3161694212cd@192.168.10.12:8080/job/OnboardingDevice/lastBuild/consoleText'
                jobout = os.system(output)
                print (jobout)
                return render(request, "mail.html" , {'form2' : my_form2})

            else:
                print(my_form.errors)

        return render(request, "ChangeAutomation.html" , { 'form1' :my_form1, 'form2' :my_form2 })

Django setting.py celery beat configuration to trigger a function at every time interval



CELERY_BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Asia/Kolkata'
CELERY_BEAT_SCHEDULE = {
    'createFolder': {
      'task': 'catalog.views.createFolder',
      'schedule': timedelta(seconds=30),

    }
}

Friday, 4 January 2019

Command to Delete Default gateway in ubuntu



Command to ADD or Delete Default gateway in Ubuntu  :



Sudo ip route del default via 0.0.0.0

Thursday, 3 January 2019

Python Celery Run Commands







celery flower -A mytestsite --address=127.0.0.1 --port=5555

celery -A mytestsite worker -l info

celery -A mytestsite beat -l info

python3 manage.py runserver

Git

1 git add ↳ It lets you add changes from the working directory into the staging area 2 git commit ↳ It lets you save a snapshot of currently...