#!/usr/bin/env python
#coding=utf8
import os
import sys
import getpass
from subprocess import Popen, PIPE
import requests
import re
import xml.etree.ElementTree as ET
def convert_xml_file_to_str(path_to_config_file):
tree = ET.parse(path_to_config_file)
root = tree.getroot()
return ET.tostring(root, encoding='utf8', method='xml').decode()
dest_env="dev"
if dest_env=='test':
password=" "
remote_ip=" "
elif dest_env=='dev':
password = " "
remote_ip = " "
file_name='product_list.txt'
with open(file_name, 'r') as f:
out = f.readlines()
product_names = []
for i in out:
if not i.startswith('='):
product_names.append(i.strip())
def run_cmd(cmd, run_as=None):
if run_as and os.name != 'nt' and run_as != getpass.getuser():
cmd = '''su - {} -c '{}' '''.format(run_as, cmd)
print cmd
close_fds = os.name != 'nt'
p = Popen(
cmd,
stdout=PIPE,
stdin=PIPE,
stderr=PIPE,
shell=True,
close_fds=close_fds)
stdout, stderr = p.communicate()
if p.returncode and stderr:
print 'Run cmd: {}
Code: {}, Stderr: {}'.format(cmd, p.returncode, stderr)
return p.returncode, stdout.strip()
def move_jobs(job_name):
global password,remote_ip
name=job_name.strip()
cmd="cd /home/jenkins/jobs;sshpass -p {} rsync -av {} root@{}:/home/jenkins/jobs/".format(password,name,remote_ip)
print(cmd)
code,res=run_cmd(cmd)
if code!=0:
print(res)
sys.exit(1)
else:
print('{}迁移成功'.format(name))
def change_env(job_name):
global remote_ip
username = ' '
password = ' '
server_ip='{}:8080'.format(remote_ip)
headers={'Content-Type':'application/json;UTF-8'}
url = 'http://{}/job/{}/config.xml'.format(server_ip, job_name)
print url
req = requests.get(url, headers=headers, auth=(username, password))
res=req.content
print res
# res = res.replace('if (setEnv =="test"){','if (setEnv == "test"){
test_url=" "
host_ips=" "')
if remote_ip==' ':
res=res.replace('setEnv="dev"','setEnv="test"')
elif remote_ip==' ':
res=res.replace('setEnv="test"','setEnv="dev"')
with open('/tmp/config.xml','w') as f:
f.writelines(res)
res=requests.post('http://{}/job/{}/config.xml'.format(server_ip, job_name),
data=file('/tmp/config.xml','rb').read(),
auth=(username, password),headers=headers)
if res.status_code==200:
print('{}修改成功'.format(job_name))
else:
print('{}修改失败'.format(job_name))
print(res.content)
sys.exit(1)
for job_name in product_names:
# move_jobs(job_name)
change_env(job_name)